]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - STEER/AliAODEvent.cxx
OADB classes and root files for the physics selection
[u/mrichter/AliRoot.git] / STEER / AliAODEvent.cxx
index d52507de4b0f9d3d65b0a23719ae61e0e4ea9e54..b6dde64f2969640e083854ed7fb6ea6bbf0c0cec 100644 (file)
@@ -47,7 +47,8 @@ ClassImp(AliAODEvent)
                                                      "caloClusters",
                                                      "fmdClusters",
                                                      "pmdClusters",
-                                                     "dimuons"
+                                                     "dimuons",
+                                                     "AliAODVZERO"
                                                      
 };
 //______________________________________________________________________________
@@ -68,7 +69,8 @@ AliAODEvent::AliAODEvent() :
   fCaloClusters(0),
   fFmdClusters(0),
   fPmdClusters(0),
-  fDimuons(0)
+  fDimuons(0),
+  fAODVZERO(0)
 {
   // default constructor
 }
@@ -91,7 +93,8 @@ AliAODEvent::AliAODEvent(const AliAODEvent& aod):
   fCaloClusters(new TClonesArray(*aod.fCaloClusters)),
   fFmdClusters(new TClonesArray(*aod.fFmdClusters)),
   fPmdClusters(new TClonesArray(*aod.fPmdClusters)),
-  fDimuons(new TClonesArray(*aod.fDimuons))
+  fDimuons(new TClonesArray(*aod.fDimuons)),
+  fAODVZERO(new AliAODVZERO(*aod.fAODVZERO))
 {
   // Copy constructor
   AddObject(fHeader);
@@ -107,6 +110,7 @@ AliAODEvent::AliAODEvent(const AliAODEvent& aod):
   AddObject(fFmdClusters);
   AddObject(fPmdClusters);
   AddObject(fDimuons);
+  AddObject(fAODVZERO);
   fConnected = aod.fConnected;
   GetStdContent();
   CreateStdFolders();
@@ -229,7 +233,10 @@ void AliAODEvent::AddObject(TObject* obj)
   // Please be aware that in order to increase performance you should
   // refrain from using TObjArrays (if possible). Use TClonesArrays, instead.
   
-  fAODObjects->AddLast(obj);
+  if ( !fAODObjects->FindObject(obj) ) 
+  {
+    fAODObjects->AddLast(obj);
+  }
 }
 
 //______________________________________________________________________________
@@ -267,6 +274,7 @@ void AliAODEvent::CreateStdContent()
   AddObject(new TClonesArray("AliAODFmdCluster", 0));
   AddObject(new TClonesArray("AliAODPmdCluster", 0));
   AddObject(new TClonesArray("AliAODDimuon", 0));
+  AddObject(new AliAODVZERO());
   // set names
   SetStdNames();
 
@@ -350,6 +358,7 @@ void AliAODEvent::GetStdContent()
   fFmdClusters   = (TClonesArray*)fAODObjects->FindObject("fmdClusters");
   fPmdClusters   = (TClonesArray*)fAODObjects->FindObject("pmdClusters");
   fDimuons       = (TClonesArray*)fAODObjects->FindObject("dimuons");
+  fAODVZERO      = (AliAODVZERO*)fAODObjects->FindObject("AliAODVZERO");
 }
 
 //______________________________________________________________________________
@@ -366,65 +375,88 @@ void AliAODEvent::ResetStd(Int_t trkArrSize,
 {
   // deletes content of standard arrays and resets size 
   
-  fTracks->Delete();
-  if (trkArrSize > fTracks->GetSize()) 
-    fTracks->Expand(trkArrSize);
-
-  fVertices->Delete();
-  if (vtxArrSize > fVertices->GetSize()) 
-    fVertices->Expand(vtxArrSize);
-
-  fV0s->Delete();
-  if (v0ArrSize > fV0s->GetSize()) 
-    fV0s->Expand(v0ArrSize);
-  
-  fCascades->Delete();
-  if (cascadeArrSize > fCascades->GetSize()) 
-    fCascades->Expand(cascadeArrSize);
-  
-  fJets->Delete();
-  if (jetSize > fJets->GetSize())
-    fJets->Expand(jetSize);
-
-  fCaloClusters->Delete();
-  if (caloClusSize > fCaloClusters->GetSize()) 
-    fCaloClusters->Expand(caloClusSize);
-
-  fFmdClusters->Delete();
-  if (fmdClusSize > fFmdClusters->GetSize()) 
-    fFmdClusters->Expand(fmdClusSize);
-
-  fPmdClusters->Delete();
-  if (pmdClusSize > fPmdClusters->GetSize()) 
-    fPmdClusters->Expand(pmdClusSize);
-    
-  fDimuons->Delete();
-  if (dimuonArrSize > fDimuons->GetSize()) 
-    fDimuons->Expand(dimuonArrSize);
-
-  // Reset the tracklets
-  fTracklets->DeleteContainer();
-  fPhosCells->DeleteContainer();  
-  fEmcalCells->DeleteContainer();
-
+  if (fTracks) {
+    fTracks->Delete();
+    if (trkArrSize > fTracks->GetSize()) 
+      fTracks->Expand(trkArrSize);
+  }
+  if (fVertices) {
+    fVertices->Delete();
+    if (vtxArrSize > fVertices->GetSize()) 
+      fVertices->Expand(vtxArrSize);
+  }
+  if (fV0s) {
+    fV0s->Delete();
+    if (v0ArrSize > fV0s->GetSize()) 
+      fV0s->Expand(v0ArrSize);
+  }
+  if (fCascades) {
+    fCascades->Delete();
+    if (cascadeArrSize > fCascades->GetSize()) 
+      fCascades->Expand(cascadeArrSize);
+  }
+  if (fJets) {
+    fJets->Delete();
+    if (jetSize > fJets->GetSize())
+      fJets->Expand(jetSize);
+  }
+  if (fCaloClusters) {
+    fCaloClusters->Delete();
+    if (caloClusSize > fCaloClusters->GetSize()) 
+      fCaloClusters->Expand(caloClusSize);
+  }
+  if (fFmdClusters) {
+    fFmdClusters->Delete();
+    if (fmdClusSize > fFmdClusters->GetSize()) 
+      fFmdClusters->Expand(fmdClusSize);
+  }
+  if (fPmdClusters) {
+    fPmdClusters->Delete();
+    if (pmdClusSize > fPmdClusters->GetSize()) 
+      fPmdClusters->Expand(pmdClusSize);
+  }
+  if (fDimuons) {
+    fDimuons->Delete();
+    if (dimuonArrSize > fDimuons->GetSize()) 
+      fDimuons->Expand(dimuonArrSize);
+  }
+  if (fTracklets)
+    fTracklets->DeleteContainer();
+  if (fPhosCells)
+    fPhosCells->DeleteContainer();  
+  if (fEmcalCells)
+    fEmcalCells->DeleteContainer();
 }
 
 void AliAODEvent::ClearStd()
 {
   // clears the standard arrays
-  fHeader        ->RemoveQTheta();
-  fTracks        ->Delete();
-  fVertices      ->Delete();
-  fV0s           ->Delete();
-  fCascades      ->Delete();
-  fTracklets     ->DeleteContainer();
-  fJets          ->Delete();
-  fEmcalCells    ->DeleteContainer();
-  fPhosCells     ->DeleteContainer();
-  fCaloClusters  ->Delete();
-  fFmdClusters   ->Clear();
-  fPmdClusters   ->Clear();
-  fDimuons       ->Clear();
+  if (fHeader)
+    fHeader        ->Clear();
+  if (fTracks)
+    fTracks        ->Delete();
+  if (fVertices)
+    fVertices      ->Delete();
+  if (fV0s)
+    fV0s           ->Delete();
+  if (fCascades)
+    fCascades      ->Delete();
+  if (fTracklets)
+    fTracklets     ->DeleteContainer();
+  if (fJets)
+    fJets          ->Delete();
+  if (fEmcalCells)
+    fEmcalCells    ->DeleteContainer();
+  if (fPhosCells)
+    fPhosCells     ->DeleteContainer();
+  if (fCaloClusters)
+    fCaloClusters  ->Delete();
+  if (fFmdClusters)
+    fFmdClusters   ->Clear();
+  if (fPmdClusters)
+    fPmdClusters   ->Clear();
+  if (fDimuons)
+    fDimuons       ->Clear();
 }
 
 //_________________________________________________________________
@@ -541,9 +573,10 @@ void AliAODEvent::ReadFromTree(TTree *tree, Option_t* opt /*= ""*/)
       // copy constructor does not work...
     fAODObjects = (TList*)(aodEvent->GetList()->Clone());
     fAODObjects->SetOwner(kTRUE);
-    if(fAODObjects->GetEntries()<kAODListN){
-      printf("%s %d AliAODEvent::ReadFromTree() TList contains less than the standard contents %d < %d \n",
-             (char*)__FILE__,__LINE__,fAODObjects->GetEntries(),kAODListN);
+    if(fAODObjects->GetEntries()<kAODListN)
+    {
+      AliWarning(Form("AliAODEvent::ReadFromTree() TList contains less than the standard contents %d < %d"
+                      " That might be fine though (at least for filtered AODs)",fAODObjects->GetEntries(),kAODListN));
     }
       //
       // Let's find out whether we have friends
@@ -570,8 +603,6 @@ void AliAODEvent::ReadFromTree(TTree *tree, Option_t* opt /*= ""*/)
         } // has userinfo  
       } // friend loop
     } // has friends   
-    
-    
       // set the branch addresses
     TIter next(fAODObjects);
     TNamed *el;
@@ -642,7 +673,7 @@ Int_t  AliAODEvent::GetNumberOfPileupVerticesTracks() const{
 }
 //______________________________________________________________________________
 AliAODVertex* AliAODEvent::GetPrimaryVertexSPD() const{
-  //
+  // Get SPD primary vertex
   Int_t nVertices=GetNumberOfVertices();
   for(Int_t iVert=0; iVert<nVertices; iVert++){
     AliAODVertex *v=GetVertex(iVert);
@@ -652,7 +683,7 @@ AliAODVertex* AliAODEvent::GetPrimaryVertexSPD() const{
 }
 //______________________________________________________________________________
 AliAODVertex* AliAODEvent::GetPileupVertexSPD(Int_t iV) const{
-  //
+  // Get pile-up vertex iV
   Int_t nVertices=GetNumberOfVertices();
   Int_t counter=0;
   for(Int_t iVert=0; iVert<nVertices; iVert++){
@@ -666,7 +697,7 @@ AliAODVertex* AliAODEvent::GetPileupVertexSPD(Int_t iV) const{
 }
 //______________________________________________________________________________
 AliAODVertex* AliAODEvent::GetPileupVertexTracks(Int_t iV) const{
-  //
+  // Get pile-up vertex iV
   Int_t nVertices=GetNumberOfVertices();
   Int_t counter=0;
   for(Int_t iVert=0; iVert<nVertices; iVert++){
@@ -746,7 +777,7 @@ void AliAODEvent::Print(Option_t *) const
   return;
 }
 
-void AliAODEvent::AssignIDtoCollection(TCollection* col)
+void AliAODEvent::AssignIDtoCollection(const TCollection* col)
 {
     // Static method which assigns a ID to each object in a collection
     // In this way the objects are marked as referenced and written with