BmnRoot
Loading...
Searching...
No Matches
BmnMCTrackCreator.h
Go to the documentation of this file.
1
8#ifndef BMNMCTRACKCREATOR_H_
9#define BMNMCTRACKCREATOR_H_
10
11#include "BmnMCTrack.h"
12#include <map>
13#include <iostream>
14#include <assert.h>
17#include "BmnCSCStationSet.h"
19
20class TClonesArray;
21class FairMCPoint;
22class CbmStsPoint;
23class CbmGeoStsPar;
24class CbmStsDigiPar;
26
34private:
38 BmnMCTrackCreator(TString gem, TString sil, TString csc);
39
40public:
44 virtual ~BmnMCTrackCreator();
45
49 static BmnMCTrackCreator* Instance(TString gem, TString sil, TString csc);
50
55 void Create();
56
62 Bool_t TrackExists(Int_t mcId) const {
63 return (fBmnMCTracks.count(mcId) > 0) ? kTRUE : kFALSE;
64 // if (fBmnMCTracks.count(mcId) == 0) return kFALSE;
65 // Int_t NPointsSil = fBmnMCTracks.find(mcId)->second.GetNofPoints(kSILICON);
66 // Int_t NPointsGem = fBmnMCTracks.find(mcId)->second.GetNofPoints(kGEM);
67 // if (NPointsSil > fSilDetector->GetNStations()) return kFALSE;
68 // if (NPointsGem > fGemDetector->GetNStations()) return kFALSE;
69 // //if (NPointsSil + NPointsGem < 4) return kFALSE;
70 // return kTRUE;
73
74 }
75
81 const BmnMCTrack& GetTrack(int mcId) const {
82 assert(TrackExists(mcId));
83 return fBmnMCTracks.find(mcId)->second;
84 }
85
90 Int_t GetNofTracks() const {
91 return fBmnMCTracks.size();
92 }
93
94private:
95
99 void ReadDataBranches();
100
106 void AddPoints(DetectorId detId, const TClonesArray* array);
107
111 void AddRichHits();
112
116 void AddRingParameters();
117
124 void FairMCPointToBmnMCPoint(
125 const FairMCPoint* fairPoint,
126 BmnMCPoint* bmnPoint,
127 int refId,
128 int stationId);
129
130 void FairMCPointCoordinatesAndMomentumToBmnMCPoint(// for DCH1, DCH2, TOF1 points
131 const FairMCPoint* fairPoint,
132 BmnMCPoint* bmnPoint);
133
134 TClonesArray* fMCTracks;
135 TClonesArray* fSilPoints;
136 TClonesArray* fSsdPoints;
137 TClonesArray* fGemPoints;
138 TClonesArray* fTof400Points;
139 TClonesArray* fTof700Points;
140 TClonesArray* fCscPoints;
141 TClonesArray* fDchPoints;
142
143 Int_t fNSiliconStations;
144 Int_t fNGemStations;
145 Int_t fNCscStations;
146
147 // Stores created BmnMCTrack objects.
148 // std::map<MC track index, BmnMCTrack object>.
149 std::map<Int_t, BmnMCTrack> fBmnMCTracks;
150
151 BmnGemStripStationSet* fGemDetector;
152 BmnSiliconStationSet* fSilDetector;
153 BmnCSCStationSet* fCscDetector;
154};
155
156#endif /* BMNMCTRACKCREATOR_H_ */
Monte-Carlo track.
DetectorId
Monte-Carlo point.
Definition BmnMCPoint.h:21
Int_t GetNofTracks() const
Return number of tracks.
virtual ~BmnMCTrackCreator()
Destructor.
Bool_t TrackExists(Int_t mcId) const
Check whether a track exists in the array.
void Create()
Creates array of BmnMCTracks for current event. Has to be executed in Exec() function of the task.
static BmnMCTrackCreator * Instance(TString gem, TString sil, TString csc)
Singleton instance.
const BmnMCTrack & GetTrack(int mcId) const
Return BmnMCTrack by its index.
Monte-Carlo track.
Definition BmnMCTrack.h:27