]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG2/FEMTOSCOPY/AliFemto/AliFemtoEvent.cxx
Removing not needed files
[u/mrichter/AliRoot.git] / PWG2 / FEMTOSCOPY / AliFemto / AliFemtoEvent.cxx
1 ///////////////////////////////////////////////////////////////////////////
2 //                                                                       //
3 //  AliFemtoEvent: hold the information specific to the event and a      //
4 //  track list                                                           //
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.                            //
8 //                                                                       //
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"
21
22 // Mike removed all of the AliFemtoTTree stuff here 21apr2006 - it was not used for a long time.
23
24
25
26 //___________________
27 AliFemtoEvent::AliFemtoEvent():
28   fEventNumber(0),
29   fRunNumber(0),
30   fNumberOfTracks(0),
31   fMagneticField(0),
32   fPrimVertPos(0,0,0),
33   fTrackCollection(0),
34   fV0Collection(0),
35   fXiCollection(0),
36   fKinkCollection(0),
37   fZDCN1Energy(0),   
38   fZDCP1Energy(0),   
39   fZDCN2Energy(0),   
40   fZDCP2Energy(0),   
41   fZDCEMEnergy(0),   
42   fZDCParticipants(0),
43   fTriggerMask(0),  
44   fTriggerCluster(0)
45 {
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;
54   fMagneticField=0.0;
55 }
56 //___________________
57 AliFemtoEvent::AliFemtoEvent(const AliFemtoEvent& ev, AliFemtoTrackCut* tCut, AliFemtoV0Cut* vCut, AliFemtoXiCut* xCut, AliFemtoKinkCut* kCut):
58   fEventNumber(0),
59   fRunNumber(0),
60   fNumberOfTracks(0),
61   fMagneticField(0),
62   fPrimVertPos(0,0,0),
63   fTrackCollection(0),
64   fV0Collection(0),
65   fXiCollection(0),
66   fKinkCollection(0),
67   fZDCN1Energy(0),   
68   fZDCP1Energy(0),   
69   fZDCN2Energy(0),   
70   fZDCP2Energy(0),   
71   fZDCEMEnergy(0),   
72   fZDCParticipants(0),
73   fTriggerMask(0),  
74   fTriggerCluster(0)
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;
79   
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;
88   
89   fTriggerMask=ev.fTriggerMask;     // Trigger Type (mask)
90   fTriggerCluster=ev.fTriggerCluster;
91   // create collections
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);
101     }
102   }
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);
108     }
109   }
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);
115     }
116   }
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);
123     }
124   }
125 }
126 //___________________
127 AliFemtoEvent::AliFemtoEvent(const AliFemtoEvent& ev):
128   fEventNumber(0),
129   fRunNumber(0),
130   fNumberOfTracks(0),
131   fMagneticField(0),
132   fPrimVertPos(0,0,0),
133   fTrackCollection(0),
134   fV0Collection(0),
135   fXiCollection(0),
136   fKinkCollection(0),
137   fZDCN1Energy(0),   
138   fZDCP1Energy(0),   
139   fZDCN2Energy(0),   
140   fZDCP2Energy(0),   
141   fZDCEMEnergy(0),   
142   fZDCParticipants(0),
143   fTriggerMask(0),  
144   fTriggerCluster(0)
145
146   // copy constructor 
147   fEventNumber = ev.fEventNumber;
148   fRunNumber = ev.fRunNumber;
149   
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;
158   
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);
170   }
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);
175   }
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);
180   }
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);
186   }
187 }
188 //______________________________
189 AliFemtoEvent& AliFemtoEvent::operator=(const AliFemtoEvent& aEvent)
190 {
191   // assignment operator
192   if (this == &aEvent)
193     return *this;
194
195   fEventNumber = aEvent.fEventNumber;
196   fRunNumber = aEvent.fRunNumber;
197   
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;
206   
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);
218   }
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);
223   }
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);
228   }
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);
233   }
234
235   return *this;
236 }
237
238 //___________________
239 AliFemtoEvent::~AliFemtoEvent(){
240   // destructor
241 #ifdef STHBTDEBUG
242   cout << " AliFemtoEvent::~AliFemtoEvent() " << endl;
243 #endif
244   for (AliFemtoTrackIterator iter=fTrackCollection->begin();iter!=fTrackCollection->end();iter++){
245     delete *iter;
246   }
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++){
251     delete *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++){
257     delete *tXiIter;
258   }
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++){
263     delete *kinkIter;
264   }
265   fKinkCollection->clear();
266   delete fKinkCollection;
267 }
268 //___________________
269
270
271
272 void AliFemtoEvent::SetEventNumber(const unsigned short& event){fEventNumber = event;}
273 void AliFemtoEvent::SetRunNumber(const int& runNum){fRunNumber = runNum;}
274
275
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;}
282     
283
284 void AliFemtoEvent::SetNumberOfTracks(const unsigned short& tracks){fNumberOfTracks = tracks;}
285
286
287
288 void AliFemtoEvent::SetPrimVertPos(const AliFemtoThreeVector& vp){fPrimVertPos = vp;}
289 void AliFemtoEvent::SetMagneticField(const double& magF){fMagneticField = magF;}
290
291 void AliFemtoEvent::SetTriggerMask(const unsigned long int& TriggerMask) {fTriggerMask=TriggerMask;}
292 void AliFemtoEvent::SetTriggerCluster(const unsigned char& TriggerCluster) {fTriggerCluster=TriggerCluster;}
293
294
295 unsigned short AliFemtoEvent::EventNumber() const {return fEventNumber;}
296 int            AliFemtoEvent::RunNumber() const {return fRunNumber;}
297
298
299
300 unsigned short AliFemtoEvent::NumberOfTracks() const {return fNumberOfTracks;}
301
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;}
310
311
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;}
318
319 //----------------------------- below here is only for star
320
321 double AliFemtoEvent::UncorrectedNumberOfNegativePrimaries() const
322 {
323   return NumberOfTracks()/2;
324 }
325
326 double AliFemtoEvent::UncorrectedNumberOfPrimaries() const
327 {
328   return NumberOfTracks();
329 }
330
331