]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - STEER/AliAODEvent.cxx
fixes from Laurent for the MC branch in the AOD filters
[u/mrichter/AliRoot.git] / STEER / AliAODEvent.cxx
index b8816c687d0c1787b89701092ba3ac110446b0d6..e2d6fff301798ff9a52865e11957c0f69d5ca2a9 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");
 }
 
 //______________________________________________________________________________
@@ -412,7 +421,7 @@ void AliAODEvent::ResetStd(Int_t trkArrSize,
 void AliAODEvent::ClearStd()
 {
   // clears the standard arrays
-  fHeader        ->RemoveQTheta();
+  fHeader        ->Clear();
   fTracks        ->Delete();
   fVertices      ->Delete();
   fV0s           ->Delete();
@@ -484,7 +493,8 @@ Int_t AliAODEvent::GetMuonTracks(TRefArray *muonTracks) const
 
   AliAODTrack *track = 0;
   for (Int_t iTrack = 0; iTrack < GetNTracks(); iTrack++) {
-    if ((track = GetTrack(iTrack))->IsMuonTrack()) {
+    track = GetTrack(iTrack);
+    if (track->IsMuonTrack()) {
       muonTracks->Add(track);
     }
   }
@@ -498,9 +508,8 @@ Int_t AliAODEvent::GetNumberOfMuonTracks() const
 {
   // get number of muon tracks
   Int_t nMuonTracks=0;
-  AliAODTrack *track = 0;
   for (Int_t iTrack = 0; iTrack < GetNTracks(); iTrack++) {
-    if ((track = GetTrack(iTrack))->IsMuonTrack()) {
+    if ((GetTrack(iTrack))->IsMuonTrack()) {
        nMuonTracks++;
     }
   }
@@ -527,23 +536,24 @@ void AliAODEvent::ReadFromTree(TTree *tree, Option_t* opt /*= ""*/)
     TList* connectedList = (TList*) (tree->GetUserInfo()->FindObject("AODObjectsConnectedToTree"));
     if (connectedList && (strcmp(opt, "reconnect"))) {
         // If connected use the connected list of objects
-      fAODObjects->Delete();
-      fAODObjects = connectedList;
-      GetStdContent(); 
-      fConnected = kTRUE;
-      return;
+       fAODObjects->Delete();
+       fAODObjects = connectedList;
+       GetStdContent(); 
+       fConnected = kTRUE;
+       return;
     } 
       // Connect to tree
       // prevent a memory leak when reading back the TList
-      // if (!(strcmp(opt, "reconnect"))) fAODObjects->Delete();
+//      if (!(strcmp(opt, "reconnect"))) fAODObjects->Delete();
     
       // create a new TList from the UserInfo TList... 
       // 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
@@ -757,3 +767,11 @@ void AliAODEvent::AssignIDtoCollection(TCollection* col)
     while ((obj = next()))
        TProcessID::AssignID(obj);
 }
+
+Bool_t AliAODEvent::IsPileupFromSPDInMultBins() const {
+    Int_t nTracklets=GetTracklets()->GetNumberOfTracklets();
+    if(nTracklets<20) return IsPileupFromSPD(3,0.8);
+    else if(nTracklets<50) return IsPileupFromSPD(4,0.8);
+    else return IsPileupFromSPD(5,0.8);
+}
+