]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - STEER/AliAODEvent.cxx
Make full use of newly introduced functionality:
[u/mrichter/AliRoot.git] / STEER / AliAODEvent.cxx
index 01d0f6ae7311f7d4074f25ccd6d1563787ea9fc3..cd03bf9fa472cc8fc3974a386250f994156a422a 100644 (file)
 
 ClassImp(AliAODEvent)
 
+// definition of std AOD member names
+  const char* AliAODEvent::fAODListName[kAODListN] = {"header",
+                                                     "tracks",
+                                                     "vertices",
+                                                     "v0s",
+                                                     "tracklets",
+                                                     "jets",
+                                                     "caloCells",
+                                                     "caloClusters",
+                                                     "fmdClusters",
+                                                     "pmdClusters"
+};
 //______________________________________________________________________________
 AliAODEvent::AliAODEvent() :
+  AliVEvent(),
   fAODObjects(new TList()),
   fHeader(0),
   fTracks(0),
   fVertices(0),
-  fClusters(0),
+  fV0s(0),
+  fTracklets(0),
   fJets(0),
-  fTracklets(0)
+  fCaloCells(0),
+  fCaloClusters(0),
+  fFmdClusters(0),
+  fPmdClusters(0)
 {
   // default constructor
 }
@@ -59,7 +76,7 @@ void AliAODEvent::AddObject(TObject* obj)
 }
 
 //______________________________________________________________________________
-TObject *AliAODEvent::GetObject(const char *objName) const 
+TObject *AliAODEvent::FindListObject(const char *objName)
 {
   // Return the pointer to the object with the given name.
 
@@ -75,38 +92,72 @@ void AliAODEvent::CreateStdContent()
   AddObject(new AliAODHeader());
   AddObject(new TClonesArray("AliAODTrack", 0));
   AddObject(new TClonesArray("AliAODVertex", 0));
-  AddObject(new TClonesArray("AliAODCluster", 0));
-  AddObject(new TClonesArray("AliAODJet", 0));
+  AddObject(new TClonesArray("AliAODv0", 0));
   AddObject(new AliAODTracklets());
+  AddObject(new TClonesArray("AliAODJet", 0));
+  AddObject(new AliAODCaloCells());
+  AddObject(new TClonesArray("AliAODCaloCluster", 0));
+  AddObject(new TClonesArray("AliAODFmdCluster", 0));
+  AddObject(new TClonesArray("AliAODPmdCluster", 0));
+  
+  // set names
+  SetStdNames();
 
   // read back pointers
   GetStdContent();
 
-  // set names
-  fTracks->SetName("tracks");
-  fVertices->SetName("vertices");
-  fClusters->SetName("clusters");
-  fJets->SetName("jets");
-  fTracklets->SetName("tracklets");    
+  return;
 }
 
+//______________________________________________________________________________
+void AliAODEvent::SetStdNames()
+{
+  // introduce the standard naming
+
+  if(fAODObjects->GetEntries()==kAODListN){
+    for(int i = 0;i < fAODObjects->GetEntries();i++){
+      TObject *fObj = fAODObjects->At(i);
+      if(fObj->InheritsFrom("TNamed")){
+       ((TNamed*)fObj)->SetName(fAODListName[i]);
+      }
+      else if(fObj->InheritsFrom("TClonesArray")){
+       ((TClonesArray*)fObj)->SetName(fAODListName[i]);
+      }
+    }
+  }
+  else{
+    printf("%s:%d SetStdNames() Wrong number of Std Entries \n",(char*)__FILE__,__LINE__);
+  }
+} 
+
 //______________________________________________________________________________
 void AliAODEvent::GetStdContent()
 {
   // set pointers for standard content
 
-  fHeader    = (AliAODHeader*)fAODObjects->At(0);
-  fTracks    = (TClonesArray*)fAODObjects->At(1);
-  fVertices  = (TClonesArray*)fAODObjects->At(2);
-  fClusters  = (TClonesArray*)fAODObjects->At(3);
-  fJets      = (TClonesArray*)fAODObjects->At(4);
-  fTracklets = (AliAODTracklets*)fAODObjects->At(5);
+  fHeader        = (AliAODHeader*)fAODObjects->FindObject("header");
+  fTracks        = (TClonesArray*)fAODObjects->FindObject("tracks");
+  fVertices      = (TClonesArray*)fAODObjects->FindObject("vertices");
+  fV0s           = (TClonesArray*)fAODObjects->FindObject("v0s");
+  fTracklets     = (AliAODTracklets*)fAODObjects->FindObject("tracklets");
+  fJets          = (TClonesArray*)fAODObjects->FindObject("jets");
+  fCaloCells     = (AliAODCaloCells*)fAODObjects->FindObject("caloCells");
+  fCaloClusters  = (TClonesArray*)fAODObjects->FindObject("caloClusters");
+  fFmdClusters   = (TClonesArray*)fAODObjects->FindObject("fmdClusters");
+  fPmdClusters   = (TClonesArray*)fAODObjects->FindObject("pmdClusters");
 }
 
 //______________________________________________________________________________
-void AliAODEvent::ResetStd(Int_t trkArrSize, Int_t vtxArrSize)
+void AliAODEvent::ResetStd(Int_t trkArrSize, 
+                          Int_t vtxArrSize, 
+                          Int_t v0ArrSize, 
+                          Int_t jetSize, 
+                          Int_t caloClusSize, 
+                          Int_t fmdClusSize, 
+                          Int_t pmdClusSize)
 {
-  // deletes content of standard arrays and resets size
+  // deletes content of standard arrays and resets size 
+
   fTracks->Delete();
   if (trkArrSize > fTracks->GetSize()) 
     fTracks->Expand(trkArrSize);
@@ -114,16 +165,40 @@ void AliAODEvent::ResetStd(Int_t trkArrSize, Int_t vtxArrSize)
   fVertices->Delete();
   if (vtxArrSize > fVertices->GetSize()) 
     fVertices->Expand(vtxArrSize);
+  fV0s->Delete();
+  if (v0ArrSize > fV0s->GetSize()) 
+    fV0s->Expand(v0ArrSize);
+
+  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);
 }
 
 void AliAODEvent::ClearStd()
 {
   // clears the standard arrays
-    fTracks   ->Clear();
-    fVertices ->Clear();
-    fClusters ->Clear();
-    fJets     ->Clear();
-    fTracklets->DeleteContainer();
+  fTracks        ->Clear();
+  fVertices      ->Clear();
+  fV0s           ->Clear();
+  fTracklets     ->DeleteContainer();
+  fJets          ->Clear();
+  fCaloCells     ->DeleteContainer();
+  fCaloClusters ->Clear();
+  fFmdClusters  ->Clear();
+  fPmdClusters  ->Clear();
 }
 
 //______________________________________________________________________________
@@ -135,27 +210,36 @@ Int_t AliAODEvent::GetMuonTracks(TRefArray *muonTracks) const
 
   AliAODTrack *track = 0;
   for (Int_t iTrack = 0; iTrack < GetNTracks(); iTrack++) {
-    if ((track = GetTrack(iTrack))->GetMostProbablePID() == AliAODTrack::kMuon) {
+    if ((track = GetTrack(iTrack))->IsMuonTrack()) {
       muonTracks->Add(track);
     }
   }
   
-  return muonTracks->GetSize();
+  return muonTracks->GetEntriesFast();
 }
 
 
-
 void AliAODEvent::ReadFromTree(TTree *tree)
 {
-    // connects aod event to tree
-
-    fAODObjects = (TList*)((AliAODEvent*)tree->GetTree()->GetUserInfo()->FindObject("AliAODEvent"))->GetList(); 
-    TIter next(fAODObjects);
-    TNamed *el;
-    while((el=(TNamed*)next())){
-       TString bname(el->GetName());
-       tree->SetBranchAddress(bname.Data(),fAODObjects->GetObjectRef(el));
-    }
-    GetStdContent();
+  // connects aod event to tree
+  
+  // load the TTree
+  tree->LoadTree(0);
+
+  fAODObjects = (TList*)((AliAODEvent*)tree->GetTree()->GetUserInfo()->FindObject("AliAODEvent"))->GetList(); 
+  TIter next(fAODObjects);
+  TNamed *el;
+  while((el=(TNamed*)next())){
+    TString bname(el->GetName());
+    tree->SetBranchAddress(bname.Data(),fAODObjects->GetObjectRef(el));
+  }
+  GetStdContent();
 }
 
+//______________________________________________________________________________
+void AliAODEvent::Print(Option_t *) const
+{
+  // Something meaningful should be implemented here.
+  
+  return;
+}