1 ///////////////////////////////////////////////////////////////////////////
3 // AliFemtoEvent: hold the information specific to the event and a //
5 // AliFemtoEvent is the "transient microDST" Objects of this class are //
6 // generated from the input data by a Reader, and then presented to //
7 // the Cuts of the various active Analyses. //
9 ///////////////////////////////////////////////////////////////////////////
10 #include "AliFemtoEvent.h"
11 #include "AliFemtoTrack.h"
12 #include "AliFemtoV0.h"
13 #include "AliFemtoXi.h"
14 #include "AliFemtoKink.h"
15 #include "AliFemtoTrackCut.h"
16 #include "AliFemtoV0Cut.h"
17 #include "AliFemtoXiCut.h"
18 #include "AliFemtoKinkCut.h"
19 #include "PhysicalConstants.h"
20 #include "SystemOfUnits.h"
22 // Mike removed all of the AliFemtoTTree stuff here 21apr2006 - it was not used for a long time.
27 AliFemtoEvent::AliFemtoEvent():
46 // Default constructor
47 fPrimVertPos[0]=-999.0;
48 fPrimVertPos[1]=-999.0;
49 fPrimVertPos[2]=-999.0;
50 fTrackCollection = new AliFemtoTrackCollection;
51 fV0Collection = new AliFemtoV0Collection;
52 fXiCollection = new AliFemtoXiCollection;
53 fKinkCollection = new AliFemtoKinkCollection;
57 AliFemtoEvent::AliFemtoEvent(const AliFemtoEvent& ev, AliFemtoTrackCut* tCut, AliFemtoV0Cut* vCut, AliFemtoXiCut* xCut, AliFemtoKinkCut* kCut):
75 { // copy constructor with track and v0 cuts
76 //cout << "AliFemtoEvent::AliFemtoEvent(const AliFemtoEvent& ev, AliFemtoTrackCut* tCut, AliFemtoV0Cut* vCut, AliFemtoV0Cut* kCut)" << endl;
77 fEventNumber = ev.fEventNumber;
78 fRunNumber = ev.fRunNumber;
80 fZDCN1Energy=ev.fZDCN1Energy;
81 fZDCP1Energy=ev.fZDCP1Energy;
82 fZDCN2Energy=ev.fZDCN2Energy;
83 fZDCP2Energy=ev.fZDCP2Energy;
84 fZDCEMEnergy=ev.fZDCEMEnergy;
85 fZDCParticipants=ev.fZDCParticipants;
86 fNumberOfTracks = ev.fNumberOfTracks;
87 fMagneticField= ev.fMagneticField;
89 fTriggerMask=ev.fTriggerMask; // Trigger Type (mask)
90 fTriggerCluster=ev.fTriggerCluster;
92 fTrackCollection = new AliFemtoTrackCollection;
93 fV0Collection = new AliFemtoV0Collection;
94 fXiCollection = new AliFemtoXiCollection;
95 fKinkCollection = new AliFemtoKinkCollection;
96 // copy track collection
97 for ( AliFemtoTrackIterator tIter=ev.fTrackCollection->begin(); tIter!=ev.fTrackCollection->end(); tIter++) {
98 if ( !tCut || tCut->Pass(*tIter) ) {
99 AliFemtoTrack* trackCopy = new AliFemtoTrack(**tIter);
100 fTrackCollection->push_back(trackCopy);
103 // copy v0 collection
104 for ( AliFemtoV0Iterator vIter=ev.fV0Collection->begin(); vIter!=ev.fV0Collection->end(); vIter++) {
105 if ( !vCut || vCut->Pass(*vIter) ) {
106 AliFemtoV0* v0Copy = new AliFemtoV0(**vIter);
107 fV0Collection->push_back(v0Copy);
110 // copy xi collection
111 for ( AliFemtoXiIterator xIter=ev.fXiCollection->begin(); xIter!=ev.fXiCollection->end(); xIter++) {
112 if ( !xCut || xCut->Pass(*xIter) ) {
113 AliFemtoXi* xiCopy = new AliFemtoXi(**xIter);
114 fXiCollection->push_back(xiCopy);
117 // copy kink collection
118 for ( AliFemtoKinkIterator kIter=ev.fKinkCollection->begin(); kIter!=ev.fKinkCollection->end(); kIter++) {
119 if ( !kCut || kCut->Pass(*kIter) ) {
120 //cout << " kinkCut passed " << endl;
121 AliFemtoKink* kinkCopy = new AliFemtoKink(**kIter);
122 fKinkCollection->push_back(kinkCopy);
126 //___________________
127 AliFemtoEvent::AliFemtoEvent(const AliFemtoEvent& ev):
147 fEventNumber = ev.fEventNumber;
148 fRunNumber = ev.fRunNumber;
150 fZDCN1Energy=ev.fZDCN1Energy;
151 fZDCP1Energy=ev.fZDCP1Energy;
152 fZDCN2Energy=ev.fZDCN2Energy;
153 fZDCP2Energy=ev.fZDCP2Energy;
154 fZDCEMEnergy=ev.fZDCEMEnergy;
155 fZDCParticipants=ev.fZDCParticipants;
156 fNumberOfTracks = ev.fNumberOfTracks;
157 fMagneticField= ev.fMagneticField;
159 fTriggerMask=ev.fTriggerMask; // Trigger Type (mask)
160 fTriggerCluster=ev.fTriggerCluster;
161 // create collections
162 fTrackCollection = new AliFemtoTrackCollection;
163 fV0Collection = new AliFemtoV0Collection;
164 fXiCollection = new AliFemtoXiCollection;
165 fKinkCollection = new AliFemtoKinkCollection;
166 // copy track collection
167 for ( AliFemtoTrackIterator tIter=ev.fTrackCollection->begin(); tIter!=ev.fTrackCollection->end(); tIter++) {
168 AliFemtoTrack* trackCopy = new AliFemtoTrack(**tIter);
169 fTrackCollection->push_back(trackCopy);
171 // copy v0 collection
172 for ( AliFemtoV0Iterator vIter=ev.fV0Collection->begin(); vIter!=ev.fV0Collection->end(); vIter++) {
173 AliFemtoV0* v0Copy = new AliFemtoV0(**vIter);
174 fV0Collection->push_back(v0Copy);
176 // copy xi collection
177 for ( AliFemtoXiIterator xIter=ev.fXiCollection->begin(); xIter!=ev.fXiCollection->end(); xIter++) {
178 AliFemtoXi* xiCopy = new AliFemtoXi(**xIter);
179 fXiCollection->push_back(xiCopy);
181 // copy kink collection
182 for ( AliFemtoKinkIterator kIter=ev.fKinkCollection->begin(); kIter!=ev.fKinkCollection->end(); kIter++) {
183 //cout << " kinkCut passed " << endl;
184 AliFemtoKink* kinkCopy = new AliFemtoKink(**kIter);
185 fKinkCollection->push_back(kinkCopy);
188 //______________________________
189 AliFemtoEvent& AliFemtoEvent::operator=(const AliFemtoEvent& aEvent)
191 // assignment operator
195 fEventNumber = aEvent.fEventNumber;
196 fRunNumber = aEvent.fRunNumber;
198 fZDCN1Energy=aEvent.fZDCN1Energy;
199 fZDCP1Energy=aEvent.fZDCP1Energy;
200 fZDCN2Energy=aEvent.fZDCN2Energy;
201 fZDCP2Energy=aEvent.fZDCP2Energy;
202 fZDCEMEnergy=aEvent.fZDCEMEnergy;
203 fZDCParticipants=aEvent.fZDCParticipants;
204 fNumberOfTracks = aEvent.fNumberOfTracks;
205 fMagneticField= aEvent.fMagneticField;
207 fTriggerMask=aEvent.fTriggerMask; // Trigger Type (mask)
208 fTriggerCluster=aEvent.fTriggerCluster;
209 // create collections
210 fTrackCollection = new AliFemtoTrackCollection;
211 fV0Collection = new AliFemtoV0Collection;
212 fXiCollection = new AliFemtoXiCollection;
213 fKinkCollection = new AliFemtoKinkCollection;
214 // copy track collection
215 for ( AliFemtoTrackIterator tIter=aEvent.fTrackCollection->begin(); tIter!=aEvent.fTrackCollection->end(); tIter++) {
216 AliFemtoTrack* trackCopy = new AliFemtoTrack(**tIter);
217 fTrackCollection->push_back(trackCopy);
219 // copy v0 collection
220 for ( AliFemtoV0Iterator vIter=aEvent.fV0Collection->begin(); vIter!=aEvent.fV0Collection->end(); vIter++) {
221 AliFemtoV0* v0Copy = new AliFemtoV0(**vIter);
222 fV0Collection->push_back(v0Copy);
224 // copy xi collection
225 for ( AliFemtoXiIterator xIter=aEvent.fXiCollection->begin(); xIter!=aEvent.fXiCollection->end(); xIter++) {
226 AliFemtoXi* xiCopy = new AliFemtoXi(**xIter);
227 fXiCollection->push_back(xiCopy);
229 // copy kink collection
230 for ( AliFemtoKinkIterator kIter=aEvent.fKinkCollection->begin(); kIter!=aEvent.fKinkCollection->end(); kIter++) {
231 AliFemtoKink* kinkCopy = new AliFemtoKink(**kIter);
232 fKinkCollection->push_back(kinkCopy);
238 //___________________
239 AliFemtoEvent::~AliFemtoEvent(){
242 cout << " AliFemtoEvent::~AliFemtoEvent() " << endl;
244 for (AliFemtoTrackIterator iter=fTrackCollection->begin();iter!=fTrackCollection->end();iter++){
247 fTrackCollection->clear();
248 delete fTrackCollection;
249 //must do the same for the V0 collection
250 for (AliFemtoV0Iterator tV0iter=fV0Collection->begin();tV0iter!=fV0Collection->end();tV0iter++){
252 }//added by M Chojnacki To avodid memory leak
253 fV0Collection->clear();
254 delete fV0Collection;
255 //must do the same for the Xi collection
256 for (AliFemtoXiIterator tXiIter=fXiCollection->begin();tXiIter!=fXiCollection->end();tXiIter++){
259 fXiCollection->clear();
260 delete fXiCollection;
261 //must do the same for the Kink collection
262 for (AliFemtoKinkIterator kinkIter=fKinkCollection->begin();kinkIter!=fKinkCollection->end();kinkIter++){
265 fKinkCollection->clear();
266 delete fKinkCollection;
268 //___________________
272 void AliFemtoEvent::SetEventNumber(const unsigned short& event){fEventNumber = event;}
273 void AliFemtoEvent::SetRunNumber(const int& runNum){fRunNumber = runNum;}
276 void AliFemtoEvent::SetZDCN1Energy(const float& ZDCN1Energy){fZDCN1Energy=ZDCN1Energy;}
277 void AliFemtoEvent::SetZDCP1Energy(const float& ZDCP1Energy){fZDCP1Energy=ZDCP1Energy;}
278 void AliFemtoEvent::SetZDCN2Energy(const float& ZDCN2Energy){fZDCN2Energy=ZDCN2Energy;}
279 void AliFemtoEvent::SetZDCP2Energy(const float& ZDCP2Energy){fZDCP2Energy=ZDCP2Energy;}
280 void AliFemtoEvent::SetZDCEMEnergy(const float& ZDCEMEnergy){fZDCEMEnergy=ZDCEMEnergy;}
281 void AliFemtoEvent::SetZDCParticipants(const unsigned int& ZDCParticipants){fZDCParticipants=ZDCParticipants;}
284 void AliFemtoEvent::SetNumberOfTracks(const unsigned short& tracks){fNumberOfTracks = tracks;}
288 void AliFemtoEvent::SetPrimVertPos(const AliFemtoThreeVector& vp){fPrimVertPos = vp;}
289 void AliFemtoEvent::SetMagneticField(const double& magF){fMagneticField = magF;}
291 void AliFemtoEvent::SetTriggerMask(const unsigned long int& TriggerMask) {fTriggerMask=TriggerMask;}
292 void AliFemtoEvent::SetTriggerCluster(const unsigned char& TriggerCluster) {fTriggerCluster=TriggerCluster;}
295 unsigned short AliFemtoEvent::EventNumber() const {return fEventNumber;}
296 int AliFemtoEvent::RunNumber() const {return fRunNumber;}
300 unsigned short AliFemtoEvent::NumberOfTracks() const {return fNumberOfTracks;}
302 AliFemtoV0Collection* AliFemtoEvent::V0Collection() const {return fV0Collection;}
303 AliFemtoXiCollection* AliFemtoEvent::XiCollection() const {return fXiCollection;}
304 AliFemtoKinkCollection* AliFemtoEvent::KinkCollection() const {return fKinkCollection;}
305 AliFemtoTrackCollection* AliFemtoEvent::TrackCollection() const {return fTrackCollection;}
306 AliFemtoThreeVector AliFemtoEvent::PrimVertPos() const {return fPrimVertPos;}
307 double AliFemtoEvent::MagneticField() const {return fMagneticField;}
308 unsigned long int AliFemtoEvent::TriggerMask() const {return fTriggerMask;}
309 unsigned char AliFemtoEvent::TriggerCluster() const {return fTriggerCluster;}
312 float AliFemtoEvent::ZDCN1Energy() const {return fZDCN1Energy;}
313 float AliFemtoEvent::ZDCP1Energy() const {return fZDCP1Energy;}
314 float AliFemtoEvent::ZDCN2Energy() const {return fZDCN2Energy;}
315 float AliFemtoEvent::ZDCP2Energy() const {return fZDCP2Energy;}
316 float AliFemtoEvent::ZDCEMEnergy() const {return fZDCEMEnergy;}
317 unsigned int AliFemtoEvent::ZDCParticipants() const {return fZDCParticipants;}
319 //----------------------------- below here is only for star
321 double AliFemtoEvent::UncorrectedNumberOfNegativePrimaries() const
323 return NumberOfTracks()/2;
326 double AliFemtoEvent::UncorrectedNumberOfPrimaries() const
328 return NumberOfTracks();