1 #ifndef BSEMCMCDEPOSITPRODUCTIONPROCESS_HH 2 #define BSEMCMCDEPOSITPRODUCTIONPROCESS_HH 9 #include "RtypesCore.h" 10 #include "TClonesArray.h" 13 #include "FairMultiLinkedData.h" 30 class TMemberInspector;
32 struct BSEmcMCDepositProductionData;
39 virtual Bool_t
InsideVolume(
const TVector3 &t_point)
const = 0;
48 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){};
53 if (t_point.Z() > fMinZ && t_point.Z() < fMaxZ) {
54 if (t_point.Perp() > fMinR && t_point.Perp() < fMaxR) {
63 Double_t fMinX{-1}, fMaxX{-1};
64 Double_t fMinY{-1}, fMaxY{-1};
65 Double_t fMinZ{-1}, fMaxZ{-1};
67 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)
68 : fMinX(t_minX), fMaxX(t_maxX), fMinY(t_minY), fMaxY(t_maxY), fMinZ(t_minZ), fMaxZ(t_maxZ){};
73 if (t_point.Z() > fMinZ && t_point.Z() < fMaxZ) {
74 if (t_point.Y() > fMinY && t_point.Y() < fMaxY) {
75 if (t_point.X() > fMinX && t_point.X() < fMaxX) {
109 virtual void SetDetectorName(
const std::string &t_detectorname) ;
110 virtual void Process() ;
111 void SetMCParName(
const std::string &t_parName) { fMCParName = t_parName; }
120 virtual Double_t GetEnergy(
const BSEmcMCPoint *t_point)
const;
121 virtual Double_t GetTime(
const BSEmcMCPoint *t_point)
const;
122 virtual Bool_t GetEntering(
const BSEmcMCPoint *t_point)
const;
123 virtual Bool_t GetExiting(
const BSEmcMCPoint *t_point)
const;
124 virtual FairMultiLinkedData GetTracks(
const BSEmcMCPoint *t_point)
const;
125 virtual Int_t GetMCTrackID(
const BSEmcMCPoint *t_point)
const;
126 virtual Bool_t SkipPoint(
const BSEmcMCPoint *t_point)
const;
128 virtual void CreateDeposits(std::vector<BSEmcMCPoint *> t_points);
131 Int_t FindMCIndexIterative(
const BSEmcMCPoint *t_point, Int_t t_mcIndex);
134 void StoreDeposits();
135 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);
138 std::string fMCParName{
""};
139 std::string fPositionParName{
""};
141 TString fTrackBranchname{
""};
142 TString fMCPointBranchname{
""};
143 TString fMCDepositBranchname{
""};
147 Double_t fEnergyThreshold{-1};
148 Double_t fCutMotherParticle{-1};
149 Double_t fCutSameTrack{-1};
153 std::map<Int_t, Float_t> fTrackEnergy{};
154 std::map<Int_t, Float_t> fTrackTime{};
155 std::map<Int_t, std::vector<Int_t>> fTrackMcTruth{};
156 std::map<Int_t, std::vector<Int_t>> fPointMatch{};
157 std::map<Int_t, FairMultiLinkedData> fTrackEntering{};
158 std::map<Int_t, FairMultiLinkedData> fTrackExiting{};
159 std::map<Int_t, const BSEmcMCPoint *> fLastPointForTrack{};
160 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.