]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - STEER/AliESD.cxx
Bug corrected.
[u/mrichter/AliRoot.git] / STEER / AliESD.cxx
index 2d98ce5258c85333753e7f80ceda556a286e6173..a4a37f4de3fa1d444a96d8e0f4765ac931b39cfe 100644 (file)
@@ -50,7 +50,9 @@ AliESD::AliESD():
   fSPDVertex(),
   fPrimaryVertex(),
   fSPDMult(),
+  fT0clock(0),
   fT0timeStart(0),
+  fT0trig(0),
   fTracks("AliESDtrack",15000),
   fHLTConfMapTracks("AliESDHLTtrack",25000),
   fHLTHoughTracks("AliESDHLTtrack",15000),
@@ -71,13 +73,15 @@ AliESD::AliESD():
   fPHOSTriggerAmplitudes(0x0),
   fESDFMD(0x0),
   fESDVZERO(0x0),
+  fESDACORDE(0x0),
   fErrorLogs("AliRawDataErrorLog",5)
 {
   // 
   // Standar constructor
   //
 
-  for (Int_t i=0; i<24; i++) {
+   for (Int_t i=0; i<3; i++) fT0TOF[i] = 0;
+ for (Int_t i=0; i<24; i++) {
     fT0time[i] = 0;
     fT0amplitude[i] = 0;
   }
@@ -109,7 +113,9 @@ AliESD::AliESD(const AliESD& esd):
   fSPDVertex(esd.fSPDVertex),
   fPrimaryVertex(esd.fPrimaryVertex),
   fSPDMult(esd.fSPDMult),
+  fT0clock(esd.fT0clock),
   fT0timeStart(esd.fT0timeStart),
+  fT0trig(esd.fT0trig),
   fTracks(*((TClonesArray*)esd.fTracks.Clone())),
   fHLTConfMapTracks(*((TClonesArray*)esd.fHLTConfMapTracks.Clone())),
   fHLTHoughTracks(*((TClonesArray*)esd.fHLTHoughTracks.Clone())),
@@ -130,11 +136,13 @@ AliESD::AliESD(const AliESD& esd):
   fPHOSTriggerAmplitudes(esd.fPHOSTriggerAmplitudes),
   fESDFMD(esd.fESDFMD),
   fESDVZERO(esd.fESDVZERO),
+  fESDACORDE(esd.fESDACORDE),
   fErrorLogs(*((TClonesArray*)esd.fErrorLogs.Clone()))
 {
   // 
   // copy constructor
   //
+  for (Int_t i=0; i<3; i++)fT0TOF[i] = esd.fT0TOF[i];
   for (Int_t i=0; i<24; i++) {
     fT0time[i] = esd.fT0time[i];
     fT0amplitude[i] = esd.fT0amplitude[i];
@@ -165,6 +173,7 @@ AliESD::~AliESD()
   delete fEMCALTriggerAmplitudes;
   delete fPHOSTriggerPosition;
   delete fPHOSTriggerAmplitudes;
+  delete fESDACORDE;
 
   fErrorLogs.Delete();
 
@@ -204,6 +213,8 @@ void AliESD::Reset()
     fT0amplitude[i] = 0;
   }
   fT0timeStart = 0;
+  fT0clock = 0;
+  for (Int_t i=0; i<3; i++) fT0TOF[i] = 0;
 //
   fSPDMult.~AliMultiplicity();
   new (&fSPDMult) AliMultiplicity();
@@ -239,6 +250,11 @@ void AliESD::Reset()
       fESDVZERO->~AliESDVZERO();
       new (fESDVZERO) AliESDVZERO();
   } 
+//
+  if (fESDACORDE){
+      fESDACORDE->~AliESDACORDE();
+      new (fESDACORDE) AliESDACORDE(); 
+  }
 //
   fErrorLogs.Delete();
 }
@@ -330,6 +346,17 @@ Bool_t  AliESD::RemoveTrack(Int_t rm) {
 
   Int_t used=0;
 
+  // Check if this track comes from the reconstructed primary vertex
+  if (fPrimaryVertex.GetStatus()) {
+     UShort_t *primIdx=fPrimaryVertex.GetIndices();
+     Int_t n=fPrimaryVertex.GetNIndices();
+     while (n--) {
+       Int_t idx=Int_t(primIdx[n]);
+       if (rm==idx) return kFALSE;
+       if (idx==last) used++; 
+     }
+  }
+  
   // Check if this track comes from a reconstructed decay
   Int_t nv0=GetNumberOfV0s();
   for (Int_t n=0; n<nv0; n++) {
@@ -378,9 +405,24 @@ Bool_t  AliESD::RemoveTrack(Int_t rm) {
   new (a[rm]) AliESDtrack(*t);
   delete a.RemoveAt(last);
 
+
   if (!used) return kTRUE;
   
 
+  // Remap the indices of the tracks used for the primary vertex reconstruction
+  if (fPrimaryVertex.GetStatus()) {
+     UShort_t *primIdx=fPrimaryVertex.GetIndices();
+     Int_t n=fPrimaryVertex.GetNIndices();
+     while (n--) {
+       Int_t idx=Int_t(primIdx[n]);
+       if (idx==last) {
+          primIdx[n]=Short_t(rm); 
+          used--;
+          if (!used) return kTRUE;
+       }
+     }
+  }
+  
   // Remap the indices of the daughters of reconstructed decays
   for (Int_t n=0; n<nv0; n++) {
     AliESDv0 *v0=GetV0(n);