ROOT logo
////////////////////////////////////////////////////////////////////////////////
//
//  This class provides storage for event and track information which 
//  are used for same-event as well as mixed-event analyses in AliFourPion 
//
//  authors: Dhevan Gangadharan (dhevan.raja.gangadharan@cern.ch)
//
////////////////////////////////////////////////////////////////////////////////

#include "AliFourPionEventCollection.h"

AliFourPionTrackStruct::AliFourPionTrackStruct():
  fStatus(0),
  fFiltermap(0),
  fId(0),
  fPhi(0),
  fPt(0),
  fMom(0),
  fP(),
  fCharge(0),
  fEta(0),
  fMass(0),
  fDCAXY(0),
  fDCAZ(0),
  fDCA(0),
  fEaccepted(0),
  fKey(0),
  fClusterMap(0),
  fSharedMap(0),
  fX(),
  fTOFhit(0),
  fElectron(0),
  fMuon(0),
  fPion(0),
  fKaon(0),
  fProton(0),
  fLabel(0)// MC
{
  //Default constructor
}
AliFourPionTrackStruct::AliFourPionTrackStruct(const AliFourPionTrackStruct &obj)
  : fStatus(obj.fStatus),
    fFiltermap(obj.fFiltermap),
    fId(obj.fId),
    fPhi(obj.fPhi),
    fPt(obj.fPt),
    fMom(obj.fMom),
    fP(),
    fCharge(obj.fCharge),
    fEta(obj.fEta),
    fMass(obj.fMass),
    fDCAXY(obj.fDCAXY),
    fDCAZ(obj.fDCAZ),
    fDCA(obj.fDCA),
    fEaccepted(obj.fEaccepted),
    fKey(obj.fKey),
    fClusterMap(obj.fClusterMap),
    fSharedMap(obj.fSharedMap),
    fX(),
    fTOFhit(obj.fTOFhit),
    fElectron(obj.fElectron),
    fMuon(obj.fMuon),
    fPion(obj.fPion),
    fKaon(obj.fKaon),
    fProton(obj.fProton),
    fLabel(obj.fLabel)// MC
{
  // copy constructor
}
AliFourPionTrackStruct &AliFourPionTrackStruct::operator=(const AliFourPionTrackStruct &obj) 
{
  // Assignment operator  
  if (this == &obj)
    return *this;

  fStatus = obj.fStatus;
  fFiltermap = obj.fFiltermap;
  fId = obj.fId;
  fPhi = obj.fPhi;
  fPt = obj.fPt;
  fMom = obj.fMom;
  fP[0] = obj.fP[0];
  fP[1] = obj.fP[1];
  fP[2] = obj.fP[2];
  fCharge = obj.fCharge;
  fEta = obj.fEta;
  fMass = obj.fMass;
  fDCAXY = obj.fDCAXY;
  fDCAZ = obj.fDCAZ;
  fDCA = obj.fDCA;
  fEaccepted = obj.fEaccepted;
  fKey = obj.fKey;
  fClusterMap = obj.fClusterMap;
  fSharedMap = obj.fSharedMap;
  fX[0] = obj.fX[0];
  fX[1] = obj.fX[1];
  fX[2] = obj.fX[2];
  fTOFhit = obj.fTOFhit;
  fElectron = obj.fElectron;
  fMuon = obj.fMuon;
  fPion = obj.fPion;
  fKaon = obj.fKaon;
  fProton = obj.fProton;
  fLabel = obj.fLabel;// MC

  return (*this);
}
AliFourPionTrackStruct::~AliFourPionTrackStruct()
{
  // Destructor
}

//_____________________________________________________________________________
AliFourPionMCStruct::AliFourPionMCStruct():
  fPx(0),
  fPy(0),
  fPz(0),
  fPtot(0),
  fPdgCode(0),
  fMotherLabel(0)
{
  // Default constructor
}
AliFourPionMCStruct::AliFourPionMCStruct(const AliFourPionMCStruct &obj)
  : fPx(obj.fPx),
    fPy(obj.fPy),
    fPz(obj.fPz),
    fPtot(obj.fPtot),
    fPdgCode(obj.fPdgCode),
    fMotherLabel(obj.fMotherLabel)
{
  // copy constructor
}
AliFourPionMCStruct &AliFourPionMCStruct::operator=(const AliFourPionMCStruct &obj) 
{
  // Assignment operator  
  if (this == &obj)
    return *this;

  fPx = obj.fPx;
  fPy = obj.fPy;
  fPz = obj.fPz;
  fPtot = obj.fPtot;
  fPdgCode = obj.fPdgCode;
  fMotherLabel = obj.fMotherLabel;

  return (*this);
}
AliFourPionMCStruct::~AliFourPionMCStruct()
{
  // Destructor
}

//_____________________________________________________________________________
AliFourPionEventStruct::AliFourPionEventStruct():
  fFillStatus(0),
  fNtracks(0),
  fMCarraySize(0),
  fTracks(0),
  fMCtracks(0)
{
  // Default constructor
}
AliFourPionEventStruct::AliFourPionEventStruct(const AliFourPionEventStruct &obj)
  : fFillStatus(obj.fFillStatus),
    fNtracks(obj.fNtracks),
    fMCarraySize(obj.fMCarraySize),
    fTracks(obj.fTracks),
    fMCtracks(obj.fMCtracks)
{
  // copy constructor
}
AliFourPionEventStruct &AliFourPionEventStruct::operator=(const AliFourPionEventStruct &obj) 
{
  // Assignment operator  
  if (this == &obj)
    return *this;

  fFillStatus = obj.fFillStatus;
  fNtracks = obj.fNtracks;
  fMCarraySize = obj.fMCarraySize;
  fTracks = obj.fTracks;
  fMCtracks = obj.fMCtracks;
  
  return (*this);
}
AliFourPionEventStruct::~AliFourPionEventStruct()
{
  // Destructor
  if(fTracks) delete fTracks;
  if(fMCtracks) delete fMCtracks;
}

//_____________________________________________________________________________
AliFourPionEventCollection::AliFourPionEventCollection():
  fFIFO(0),
  fLimit(0),
  fMCLimit(0),
  fEvtStr(0)
{
  // Default constructor
}
AliFourPionEventCollection::AliFourPionEventCollection(Short_t a, Int_t lim, Int_t mcarraylimit, Bool_t MCcase):
  fFIFO(0),
  fLimit(0),
  fMCLimit(0),
  fEvtStr(0)
{
  
  // Main constructor
  SetBuffSize(a);
  
  fEvtStr = new AliFourPionEventStruct[fFIFO];  //allocate pointer array of type particle_event
  fLimit = lim;
  fMCLimit = mcarraylimit;

  for(Int_t ii = 0; ii < fFIFO; ii++){   //Initialize particle table pointers to NULL
    (fEvtStr + ii)->fNtracks = 0;
    (fEvtStr + ii)->fFillStatus = 0;
    (fEvtStr + ii)->fMCarraySize = 0;
    //
    (fEvtStr + ii)->fTracks = NULL;
    (fEvtStr + ii)->fTracks = new AliFourPionTrackStruct[fLimit];
    if(MCcase) (fEvtStr + ii)->fMCtracks = new AliFourPionMCStruct[fMCLimit];
    
  }
}
AliFourPionEventCollection::AliFourPionEventCollection(const AliFourPionEventCollection &obj)
  : fFIFO(obj.fFIFO),
    fLimit(obj.fLimit),
    fMCLimit(obj.fMCLimit),
    fEvtStr(obj.fEvtStr)
{
  // copy constructor
}
AliFourPionEventCollection &AliFourPionEventCollection::operator=(const AliFourPionEventCollection &obj) 
{
  // Assignment operator  
  if (this == &obj)
    return *this;

  fFIFO = obj.fFIFO;
  fLimit = obj.fLimit;
  fMCLimit = obj.fMCLimit;
  fEvtStr = obj.fEvtStr;
  
  return (*this);
}
AliFourPionEventCollection::~AliFourPionEventCollection(){

    for(Int_t i = 0; i < fFIFO; i++){

	if((fEvtStr + i)->fTracks != NULL){
	  delete [] (fEvtStr + i)->fTracks;
	  delete [] (fEvtStr + i)->fMCtracks;
        }	
	
    }
    
    delete [] fEvtStr;
    //remove histos from heap

}


//_____________________________________________________________________________
void AliFourPionEventCollection::FIFOShift(){ //Shift elements in FIFO by one and clear last element in FIFO 
  
  
  for(UShort_t i=fFIFO-1 ; i > 0; i--){
    for(Int_t j=0; j<(fEvtStr + i-1)->fNtracks; j++) (fEvtStr + i)->fTracks[j] = (fEvtStr + i-1)->fTracks[j];
    for(Int_t j=0; j<(fEvtStr + i-1)->fMCarraySize; j++) (fEvtStr + i)->fMCtracks[j] = (fEvtStr + i-1)->fMCtracks[j];
    
    (fEvtStr + i)->fFillStatus = (fEvtStr + i-1)->fFillStatus;
    (fEvtStr + i)->fNtracks = (fEvtStr + i-1)->fNtracks;
    (fEvtStr + i)->fMCarraySize = (fEvtStr + i-1)->fMCarraySize;
    
  }// fifo loop


  (fEvtStr)->fNtracks=0;
  (fEvtStr)->fFillStatus=0;
  (fEvtStr)->fMCarraySize=0;
}
 AliFourPionEventCollection.cxx:1
 AliFourPionEventCollection.cxx:2
 AliFourPionEventCollection.cxx:3
 AliFourPionEventCollection.cxx:4
 AliFourPionEventCollection.cxx:5
 AliFourPionEventCollection.cxx:6
 AliFourPionEventCollection.cxx:7
 AliFourPionEventCollection.cxx:8
 AliFourPionEventCollection.cxx:9
 AliFourPionEventCollection.cxx:10
 AliFourPionEventCollection.cxx:11
 AliFourPionEventCollection.cxx:12
 AliFourPionEventCollection.cxx:13
 AliFourPionEventCollection.cxx:14
 AliFourPionEventCollection.cxx:15
 AliFourPionEventCollection.cxx:16
 AliFourPionEventCollection.cxx:17
 AliFourPionEventCollection.cxx:18
 AliFourPionEventCollection.cxx:19
 AliFourPionEventCollection.cxx:20
 AliFourPionEventCollection.cxx:21
 AliFourPionEventCollection.cxx:22
 AliFourPionEventCollection.cxx:23
 AliFourPionEventCollection.cxx:24
 AliFourPionEventCollection.cxx:25
 AliFourPionEventCollection.cxx:26
 AliFourPionEventCollection.cxx:27
 AliFourPionEventCollection.cxx:28
 AliFourPionEventCollection.cxx:29
 AliFourPionEventCollection.cxx:30
 AliFourPionEventCollection.cxx:31
 AliFourPionEventCollection.cxx:32
 AliFourPionEventCollection.cxx:33
 AliFourPionEventCollection.cxx:34
 AliFourPionEventCollection.cxx:35
 AliFourPionEventCollection.cxx:36
 AliFourPionEventCollection.cxx:37
 AliFourPionEventCollection.cxx:38
 AliFourPionEventCollection.cxx:39
 AliFourPionEventCollection.cxx:40
 AliFourPionEventCollection.cxx:41
 AliFourPionEventCollection.cxx:42
 AliFourPionEventCollection.cxx:43
 AliFourPionEventCollection.cxx:44
 AliFourPionEventCollection.cxx:45
 AliFourPionEventCollection.cxx:46
 AliFourPionEventCollection.cxx:47
 AliFourPionEventCollection.cxx:48
 AliFourPionEventCollection.cxx:49
 AliFourPionEventCollection.cxx:50
 AliFourPionEventCollection.cxx:51
 AliFourPionEventCollection.cxx:52
 AliFourPionEventCollection.cxx:53
 AliFourPionEventCollection.cxx:54
 AliFourPionEventCollection.cxx:55
 AliFourPionEventCollection.cxx:56
 AliFourPionEventCollection.cxx:57
 AliFourPionEventCollection.cxx:58
 AliFourPionEventCollection.cxx:59
 AliFourPionEventCollection.cxx:60
 AliFourPionEventCollection.cxx:61
 AliFourPionEventCollection.cxx:62
 AliFourPionEventCollection.cxx:63
 AliFourPionEventCollection.cxx:64
 AliFourPionEventCollection.cxx:65
 AliFourPionEventCollection.cxx:66
 AliFourPionEventCollection.cxx:67
 AliFourPionEventCollection.cxx:68
 AliFourPionEventCollection.cxx:69
 AliFourPionEventCollection.cxx:70
 AliFourPionEventCollection.cxx:71
 AliFourPionEventCollection.cxx:72
 AliFourPionEventCollection.cxx:73
 AliFourPionEventCollection.cxx:74
 AliFourPionEventCollection.cxx:75
 AliFourPionEventCollection.cxx:76
 AliFourPionEventCollection.cxx:77
 AliFourPionEventCollection.cxx:78
 AliFourPionEventCollection.cxx:79
 AliFourPionEventCollection.cxx:80
 AliFourPionEventCollection.cxx:81
 AliFourPionEventCollection.cxx:82
 AliFourPionEventCollection.cxx:83
 AliFourPionEventCollection.cxx:84
 AliFourPionEventCollection.cxx:85
 AliFourPionEventCollection.cxx:86
 AliFourPionEventCollection.cxx:87
 AliFourPionEventCollection.cxx:88
 AliFourPionEventCollection.cxx:89
 AliFourPionEventCollection.cxx:90
 AliFourPionEventCollection.cxx:91
 AliFourPionEventCollection.cxx:92
 AliFourPionEventCollection.cxx:93
 AliFourPionEventCollection.cxx:94
 AliFourPionEventCollection.cxx:95
 AliFourPionEventCollection.cxx:96
 AliFourPionEventCollection.cxx:97
 AliFourPionEventCollection.cxx:98
 AliFourPionEventCollection.cxx:99
 AliFourPionEventCollection.cxx:100
 AliFourPionEventCollection.cxx:101
 AliFourPionEventCollection.cxx:102
 AliFourPionEventCollection.cxx:103
 AliFourPionEventCollection.cxx:104
 AliFourPionEventCollection.cxx:105
 AliFourPionEventCollection.cxx:106
 AliFourPionEventCollection.cxx:107
 AliFourPionEventCollection.cxx:108
 AliFourPionEventCollection.cxx:109
 AliFourPionEventCollection.cxx:110
 AliFourPionEventCollection.cxx:111
 AliFourPionEventCollection.cxx:112
 AliFourPionEventCollection.cxx:113
 AliFourPionEventCollection.cxx:114
 AliFourPionEventCollection.cxx:115
 AliFourPionEventCollection.cxx:116
 AliFourPionEventCollection.cxx:117
 AliFourPionEventCollection.cxx:118
 AliFourPionEventCollection.cxx:119
 AliFourPionEventCollection.cxx:120
 AliFourPionEventCollection.cxx:121
 AliFourPionEventCollection.cxx:122
 AliFourPionEventCollection.cxx:123
 AliFourPionEventCollection.cxx:124
 AliFourPionEventCollection.cxx:125
 AliFourPionEventCollection.cxx:126
 AliFourPionEventCollection.cxx:127
 AliFourPionEventCollection.cxx:128
 AliFourPionEventCollection.cxx:129
 AliFourPionEventCollection.cxx:130
 AliFourPionEventCollection.cxx:131
 AliFourPionEventCollection.cxx:132
 AliFourPionEventCollection.cxx:133
 AliFourPionEventCollection.cxx:134
 AliFourPionEventCollection.cxx:135
 AliFourPionEventCollection.cxx:136
 AliFourPionEventCollection.cxx:137
 AliFourPionEventCollection.cxx:138
 AliFourPionEventCollection.cxx:139
 AliFourPionEventCollection.cxx:140
 AliFourPionEventCollection.cxx:141
 AliFourPionEventCollection.cxx:142
 AliFourPionEventCollection.cxx:143
 AliFourPionEventCollection.cxx:144
 AliFourPionEventCollection.cxx:145
 AliFourPionEventCollection.cxx:146
 AliFourPionEventCollection.cxx:147
 AliFourPionEventCollection.cxx:148
 AliFourPionEventCollection.cxx:149
 AliFourPionEventCollection.cxx:150
 AliFourPionEventCollection.cxx:151
 AliFourPionEventCollection.cxx:152
 AliFourPionEventCollection.cxx:153
 AliFourPionEventCollection.cxx:154
 AliFourPionEventCollection.cxx:155
 AliFourPionEventCollection.cxx:156
 AliFourPionEventCollection.cxx:157
 AliFourPionEventCollection.cxx:158
 AliFourPionEventCollection.cxx:159
 AliFourPionEventCollection.cxx:160
 AliFourPionEventCollection.cxx:161
 AliFourPionEventCollection.cxx:162
 AliFourPionEventCollection.cxx:163
 AliFourPionEventCollection.cxx:164
 AliFourPionEventCollection.cxx:165
 AliFourPionEventCollection.cxx:166
 AliFourPionEventCollection.cxx:167
 AliFourPionEventCollection.cxx:168
 AliFourPionEventCollection.cxx:169
 AliFourPionEventCollection.cxx:170
 AliFourPionEventCollection.cxx:171
 AliFourPionEventCollection.cxx:172
 AliFourPionEventCollection.cxx:173
 AliFourPionEventCollection.cxx:174
 AliFourPionEventCollection.cxx:175
 AliFourPionEventCollection.cxx:176
 AliFourPionEventCollection.cxx:177
 AliFourPionEventCollection.cxx:178
 AliFourPionEventCollection.cxx:179
 AliFourPionEventCollection.cxx:180
 AliFourPionEventCollection.cxx:181
 AliFourPionEventCollection.cxx:182
 AliFourPionEventCollection.cxx:183
 AliFourPionEventCollection.cxx:184
 AliFourPionEventCollection.cxx:185
 AliFourPionEventCollection.cxx:186
 AliFourPionEventCollection.cxx:187
 AliFourPionEventCollection.cxx:188
 AliFourPionEventCollection.cxx:189
 AliFourPionEventCollection.cxx:190
 AliFourPionEventCollection.cxx:191
 AliFourPionEventCollection.cxx:192
 AliFourPionEventCollection.cxx:193
 AliFourPionEventCollection.cxx:194
 AliFourPionEventCollection.cxx:195
 AliFourPionEventCollection.cxx:196
 AliFourPionEventCollection.cxx:197
 AliFourPionEventCollection.cxx:198
 AliFourPionEventCollection.cxx:199
 AliFourPionEventCollection.cxx:200
 AliFourPionEventCollection.cxx:201
 AliFourPionEventCollection.cxx:202
 AliFourPionEventCollection.cxx:203
 AliFourPionEventCollection.cxx:204
 AliFourPionEventCollection.cxx:205
 AliFourPionEventCollection.cxx:206
 AliFourPionEventCollection.cxx:207
 AliFourPionEventCollection.cxx:208
 AliFourPionEventCollection.cxx:209
 AliFourPionEventCollection.cxx:210
 AliFourPionEventCollection.cxx:211
 AliFourPionEventCollection.cxx:212
 AliFourPionEventCollection.cxx:213
 AliFourPionEventCollection.cxx:214
 AliFourPionEventCollection.cxx:215
 AliFourPionEventCollection.cxx:216
 AliFourPionEventCollection.cxx:217
 AliFourPionEventCollection.cxx:218
 AliFourPionEventCollection.cxx:219
 AliFourPionEventCollection.cxx:220
 AliFourPionEventCollection.cxx:221
 AliFourPionEventCollection.cxx:222
 AliFourPionEventCollection.cxx:223
 AliFourPionEventCollection.cxx:224
 AliFourPionEventCollection.cxx:225
 AliFourPionEventCollection.cxx:226
 AliFourPionEventCollection.cxx:227
 AliFourPionEventCollection.cxx:228
 AliFourPionEventCollection.cxx:229
 AliFourPionEventCollection.cxx:230
 AliFourPionEventCollection.cxx:231
 AliFourPionEventCollection.cxx:232
 AliFourPionEventCollection.cxx:233
 AliFourPionEventCollection.cxx:234
 AliFourPionEventCollection.cxx:235
 AliFourPionEventCollection.cxx:236
 AliFourPionEventCollection.cxx:237
 AliFourPionEventCollection.cxx:238
 AliFourPionEventCollection.cxx:239
 AliFourPionEventCollection.cxx:240
 AliFourPionEventCollection.cxx:241
 AliFourPionEventCollection.cxx:242
 AliFourPionEventCollection.cxx:243
 AliFourPionEventCollection.cxx:244
 AliFourPionEventCollection.cxx:245
 AliFourPionEventCollection.cxx:246
 AliFourPionEventCollection.cxx:247
 AliFourPionEventCollection.cxx:248
 AliFourPionEventCollection.cxx:249
 AliFourPionEventCollection.cxx:250
 AliFourPionEventCollection.cxx:251
 AliFourPionEventCollection.cxx:252
 AliFourPionEventCollection.cxx:253
 AliFourPionEventCollection.cxx:254
 AliFourPionEventCollection.cxx:255
 AliFourPionEventCollection.cxx:256
 AliFourPionEventCollection.cxx:257
 AliFourPionEventCollection.cxx:258
 AliFourPionEventCollection.cxx:259
 AliFourPionEventCollection.cxx:260
 AliFourPionEventCollection.cxx:261
 AliFourPionEventCollection.cxx:262
 AliFourPionEventCollection.cxx:263
 AliFourPionEventCollection.cxx:264
 AliFourPionEventCollection.cxx:265
 AliFourPionEventCollection.cxx:266
 AliFourPionEventCollection.cxx:267
 AliFourPionEventCollection.cxx:268
 AliFourPionEventCollection.cxx:269
 AliFourPionEventCollection.cxx:270
 AliFourPionEventCollection.cxx:271
 AliFourPionEventCollection.cxx:272
 AliFourPionEventCollection.cxx:273
 AliFourPionEventCollection.cxx:274
 AliFourPionEventCollection.cxx:275
 AliFourPionEventCollection.cxx:276
 AliFourPionEventCollection.cxx:277
 AliFourPionEventCollection.cxx:278
 AliFourPionEventCollection.cxx:279
 AliFourPionEventCollection.cxx:280
 AliFourPionEventCollection.cxx:281
 AliFourPionEventCollection.cxx:282
 AliFourPionEventCollection.cxx:283
 AliFourPionEventCollection.cxx:284