13 #ifndef BSEMCMCDEPOSITPRODUCTIONPROCESS_HH 14 #define BSEMCMCDEPOSITPRODUCTIONPROCESS_HH 21 #include "RtypesCore.h" 22 #include "TClonesArray.h" 25 #include "FairMultiLinkedData.h" 42 class TMemberInspector;
44 struct BSEmcMCDepositProductionData;
51 virtual Bool_t
InsideVolume(
const TVector3 &t_point)
const = 0;
60 BSEmcVolumeDisk(Double_t t_minR, Double_t t_maxR, Double_t t_minZ, Double_t t_maxZ) : fMinR(t_minR), fMaxR(t_maxR), fMinZ(t_minZ), fMaxZ(t_maxZ){};
65 if (t_point.Z() > fMinZ && t_point.Z() < fMaxZ) {
66 if (t_point.Perp() > fMinR && t_point.Perp() < fMaxR) {
75 Double_t fMinX{-1}, fMaxX{-1};
76 Double_t fMinY{-1}, fMaxY{-1};
77 Double_t fMinZ{-1}, fMaxZ{-1};
79 BSEmcVolumeBox(Double_t t_minX, Double_t t_maxX, Double_t t_minY, Double_t t_maxY, Double_t t_minZ, Double_t t_maxZ)
80 : fMinX(t_minX), fMaxX(t_maxX), fMinY(t_minY), fMaxY(t_maxY), fMinZ(t_minZ), fMaxZ(t_maxZ){};
85 if (t_point.Z() > fMinZ && t_point.Z() < fMaxZ) {
86 if (t_point.Y() > fMinY && t_point.Y() < fMaxY) {
87 if (t_point.X() > fMinX && t_point.X() < fMaxX) {
121 virtual void SetDetectorName(
const std::string &t_detectorname) ;
122 virtual void Process() ;
123 void SetMCParName(
const std::string &t_parName) { fMCParName = t_parName; }
132 virtual Double_t GetEnergy(
const BSEmcMCPoint *t_point)
const;
133 virtual Double_t GetTime(
const BSEmcMCPoint *t_point)
const;
134 virtual Bool_t GetEntering(
const BSEmcMCPoint *t_point)
const;
135 virtual Bool_t GetExiting(
const BSEmcMCPoint *t_point)
const;
136 virtual FairMultiLinkedData GetTracks(
const BSEmcMCPoint *t_point)
const;
137 virtual Int_t GetMCTrackID(
const BSEmcMCPoint *t_point)
const;
138 virtual Bool_t SkipPoint(
const BSEmcMCPoint *t_point)
const;
140 virtual void CreateDeposits(std::vector<BSEmcMCPoint *> t_points);
143 Int_t FindMCIndexIterative(
const BSEmcMCPoint *t_point, Int_t t_mcIndex);
146 void StoreDeposits();
147 virtual void StoreDeposit(Int_t t_detId, Double_t t_time, std::vector<Int_t> &t_mctrackIds,
const FairMultiLinkedData &t_entering,
const FairMultiLinkedData &t_exiting);
150 std::string fMCParName{
""};
151 std::string fPositionParName{
""};
153 TString fTrackBranchname{
""};
154 TString fMCPointBranchname{
""};
155 TString fMCDepositBranchname{
""};
159 Double_t fEnergyThreshold{-1};
160 Double_t fCutMotherParticle{-1};
161 Double_t fCutSameTrack{-1};
165 std::map<Int_t, Float_t> fTrackEnergy{};
166 std::map<Int_t, Float_t> fTrackTime{};
167 std::map<Int_t, std::vector<Int_t>> fTrackMcTruth{};
168 std::map<Int_t, std::vector<Int_t>> fPointMatch{};
169 std::map<Int_t, FairMultiLinkedData> fTrackEntering{};
170 std::map<Int_t, FairMultiLinkedData> fTrackExiting{};
171 std::map<Int_t, const BSEmcMCPoint *> fLastPointForTrack{};
172 std::map<Int_t, std::map<Int_t, Double_t>> fShower{};
Bool_t InsideVolume(const TVector3 &t_point) const
virtual ~BSEmcVolumeBox()
Bool_t InsideVolume(const TVector3 &t_point) const
represents the deposited energy of one emc crystal from simulation
BSEmcVolumeDisk(Double_t t_minR, Double_t t_maxR, Double_t t_minZ, Double_t t_maxZ)
void SetVolume(BSEmcVolume *t_volume)
void SetMCPointBranchName(const TString &t_branchname)
BSEmcVolumeBox(Double_t t_minX, Double_t t_maxX, Double_t t_minY, Double_t t_maxY, Double_t t_minZ, Double_t t_maxZ)
virtual ~BSEmcVolumeDisk()
void SetPositionParName(const std::string &t_parName)
virtual Bool_t InsideVolume(const TVector3 &t_point) const =0
void SetMCDepositBranchName(const TString &t_branchname)
Parameter for crystal positions.
Process to create BSEmcMCDeposits out of BSEmcMCPoints.
void SetTrackBranchName(const TString &t_branchname)
represents a mc hit in an emc crystal
void SetMCParName(const std::string &t_parName)
Interface to a datacontainer to be used in PandaROOT.
Base class for algo that require the cleansortmclist.
Helper class to indirect the Parameter fetching via the FairRuntimeDb.