1 ////////////////////////////////////////////////////////////////////////////////
3 // This class provides storage for event and track information which
4 // are used for same-event as well as mixed-event analyses in AliChaoticity
6 // authors: Dhevan Gangadharan (dhevan.raja.gangadharan@cern.ch)
8 ////////////////////////////////////////////////////////////////////////////////
10 #include "AliChaoticityEventCollection.h"
12 AliChaoticityTrackStruct::AliChaoticityTrackStruct():
41 AliChaoticityTrackStruct::AliChaoticityTrackStruct(const AliChaoticityTrackStruct &obj)
42 : fStatus(obj.fStatus),
43 fFiltermap(obj.fFiltermap),
55 fEaccepted(obj.fEaccepted),
57 fClusterMap(obj.fClusterMap),
58 fSharedMap(obj.fSharedMap),
61 fElectron(obj.fElectron),
66 fLabel(obj.fLabel)// MC
70 AliChaoticityTrackStruct &AliChaoticityTrackStruct::operator=(const AliChaoticityTrackStruct &obj)
72 // Assignment operator
76 fStatus = obj.fStatus;
77 fFiltermap = obj.fFiltermap;
85 fCharge = obj.fCharge;
91 fEaccepted = obj.fEaccepted;
93 fClusterMap = obj.fClusterMap;
94 fSharedMap = obj.fSharedMap;
98 fTOFhit = obj.fTOFhit;
99 fElectron = obj.fElectron;
103 fProton = obj.fProton;
104 fLabel = obj.fLabel;// MC
108 AliChaoticityTrackStruct::~AliChaoticityTrackStruct()
113 //_____________________________________________________________________________
114 AliChaoticityPairStruct::AliChaoticityPairStruct():
131 //Default constructor
133 AliChaoticityPairStruct::AliChaoticityPairStruct(const AliChaoticityPairStruct &obj)
138 fCharge1(obj.fCharge1),
139 fCharge2(obj.fCharge2),
140 fIndex1(obj.fIndex1),
141 fIndex2(obj.fIndex2),
145 fLabel1(obj.fLabel1),
146 fLabel2(obj.fLabel2),
152 AliChaoticityPairStruct &AliChaoticityPairStruct::operator=(const AliChaoticityPairStruct &obj)
154 // Assignment operator
166 fCharge1 = obj.fCharge1;
167 fCharge2 = obj.fCharge2;
168 fIndex1 = obj.fIndex1;
169 fIndex2 = obj.fIndex2;
173 fLabel1 = obj.fLabel1;
174 fLabel2 = obj.fLabel2;
175 fP1MC[0] = obj.fP1MC[0];
176 fP1MC[1] = obj.fP1MC[1];
177 fP1MC[2] = obj.fP1MC[2];
178 fP2MC[0] = obj.fP2MC[0];
179 fP2MC[1] = obj.fP2MC[1];
180 fP2MC[2] = obj.fP2MC[2];
184 AliChaoticityPairStruct::~AliChaoticityPairStruct()
189 //_____________________________________________________________________________
190 AliChaoticityNormPairStruct::AliChaoticityNormPairStruct():
198 //Default constructor
200 AliChaoticityNormPairStruct::AliChaoticityNormPairStruct(const AliChaoticityNormPairStruct &obj)
201 : fCharge1(obj.fCharge1),
202 fCharge2(obj.fCharge2),
203 fIndex1(obj.fIndex1),
204 fIndex2(obj.fIndex2),
210 AliChaoticityNormPairStruct &AliChaoticityNormPairStruct::operator=(const AliChaoticityNormPairStruct &obj)
212 // Assignment operator
216 fCharge1 = obj.fCharge1;
217 fCharge2 = obj.fCharge2;
218 fIndex1 = obj.fIndex1;
219 fIndex2 = obj.fIndex2;
225 AliChaoticityNormPairStruct::~AliChaoticityNormPairStruct()
230 //_____________________________________________________________________________
231 AliChaoticityMCStruct::AliChaoticityMCStruct():
237 // Default constructor
239 AliChaoticityMCStruct::AliChaoticityMCStruct(const AliChaoticityMCStruct &obj)
247 AliChaoticityMCStruct &AliChaoticityMCStruct::operator=(const AliChaoticityMCStruct &obj)
249 // Assignment operator
260 AliChaoticityMCStruct::~AliChaoticityMCStruct()
265 //_____________________________________________________________________________
266 AliChaoticityEventStruct::AliChaoticityEventStruct():
277 // Default constructor
279 AliChaoticityEventStruct::AliChaoticityEventStruct(const AliChaoticityEventStruct &obj)
280 : fFillStatus(obj.fFillStatus),
281 fNtracks(obj.fNtracks),
282 fNpairsSE(obj.fNpairsSE),
283 fNpairsME(obj.fNpairsME),
284 fMCarraySize(obj.fMCarraySize),
285 fTracks(obj.fTracks),
286 fPairsSE(obj.fPairsSE),
287 fPairsME(obj.fPairsME),
288 fMCtracks(obj.fMCtracks)
292 AliChaoticityEventStruct &AliChaoticityEventStruct::operator=(const AliChaoticityEventStruct &obj)
294 // Assignment operator
298 fFillStatus = obj.fFillStatus;
299 fNtracks = obj.fNtracks;
300 fNpairsSE = obj.fNpairsSE;
301 fNpairsME = obj.fNpairsME;
302 fMCarraySize = obj.fMCarraySize;
303 fTracks = obj.fTracks;
304 fPairsSE = obj.fPairsSE;
305 fPairsME = obj.fPairsME;
306 fMCtracks = obj.fMCtracks;
310 AliChaoticityEventStruct::~AliChaoticityEventStruct()
313 if(fTracks) delete fTracks;
314 if(fPairsSE) delete fPairsSE;
315 if(fPairsME) delete fPairsME;
316 if(fMCtracks) delete fMCtracks;
319 //_____________________________________________________________________________
320 AliChaoticityEventCollection::AliChaoticityEventCollection():
327 // Default constructor
329 AliChaoticityEventCollection::AliChaoticityEventCollection(Short_t a, Int_t lim, Int_t plimit, Int_t mcarraylimit, Bool_t MCcase):
340 fEvtStr = new AliChaoticityEventStruct[fFIFO]; //allocate pointer array of type particle_event
343 fMCLimit = mcarraylimit;
345 for(Int_t ii = 0; ii < fFIFO; ii++){ //Initialize particle table pointers to NULL
346 (fEvtStr + ii)->fNtracks = 0;
347 (fEvtStr + ii)->fNpairsSE = 0;
348 (fEvtStr + ii)->fNpairsME = 0;
349 (fEvtStr + ii)->fFillStatus = 0;
350 (fEvtStr + ii)->fMCarraySize = 0;
352 (fEvtStr + ii)->fTracks = NULL;
353 (fEvtStr + ii)->fTracks = new AliChaoticityTrackStruct[fLimit];
354 (fEvtStr + ii)->fPairsSE = NULL;
355 (fEvtStr + ii)->fPairsSE = new AliChaoticityPairStruct[fPairLimit];
356 (fEvtStr + ii)->fPairsME = NULL;
357 (fEvtStr + ii)->fPairsME = new AliChaoticityPairStruct[Int_t(2*fPairLimit)];
358 if(MCcase) (fEvtStr + ii)->fMCtracks = new AliChaoticityMCStruct[fMCLimit];
362 AliChaoticityEventCollection::AliChaoticityEventCollection(const AliChaoticityEventCollection &obj)
365 fPairLimit(obj.fPairLimit),
366 fMCLimit(obj.fMCLimit),
371 AliChaoticityEventCollection &AliChaoticityEventCollection::operator=(const AliChaoticityEventCollection &obj)
373 // Assignment operator
379 fPairLimit = obj.fPairLimit;
380 fMCLimit = obj.fMCLimit;
381 fEvtStr = obj.fEvtStr;
385 AliChaoticityEventCollection::~AliChaoticityEventCollection(){
387 for(Int_t i = 0; i < fFIFO; i++){
389 if((fEvtStr + i)->fTracks != NULL){
390 delete [] (fEvtStr + i)->fTracks;
391 delete [] (fEvtStr + i)->fPairsSE;
392 delete [] (fEvtStr + i)->fPairsME;
393 delete [] (fEvtStr + i)->fMCtracks;
399 //remove histos from heap
404 //_____________________________________________________________________________
405 void AliChaoticityEventCollection::FIFOShift(){ //Shift elements in FIFO by one and clear last element in FIFO
408 for(UShort_t i=fFIFO-1 ; i > 0; i--){
409 for(Int_t j=0; j<(fEvtStr + i-1)->fNtracks; j++) (fEvtStr + i)->fTracks[j] = (fEvtStr + i-1)->fTracks[j];
410 for(Int_t j=0; j<(fEvtStr + i-1)->fNpairsSE; j++) (fEvtStr + i)->fPairsSE[j] = (fEvtStr + i-1)->fPairsSE[j];
411 for(Int_t j=0; j<(fEvtStr + i-1)->fMCarraySize; j++) (fEvtStr + i)->fMCtracks[j] = (fEvtStr + i-1)->fMCtracks[j];
413 (fEvtStr + i)->fFillStatus = (fEvtStr + i-1)->fFillStatus;
414 (fEvtStr + i)->fNtracks = (fEvtStr + i-1)->fNtracks;
415 (fEvtStr + i)->fNpairsSE = (fEvtStr + i-1)->fNpairsSE;
416 (fEvtStr + i)->fNpairsME = 0;
417 (fEvtStr + i)->fMCarraySize = (fEvtStr + i-1)->fMCarraySize;
422 (fEvtStr)->fNtracks=0;
423 (fEvtStr)->fNpairsSE=0;
424 (fEvtStr)->fNpairsME=0;
425 (fEvtStr)->fFillStatus=0;
426 (fEvtStr)->fMCarraySize=0;