"phosTrigger",
"fmdClusters",
"pmdClusters",
+ "hmpidRings",
"dimuons",
"AliAODTZERO",
"AliAODVZERO",
fPHOSTrigger(0),
fFmdClusters(0),
fPmdClusters(0),
+ fHMPIDrings(0),
fDimuons(0),
fAODTZERO(0),
fAODVZERO(0),
fPHOSTrigger(new AliAODCaloTrigger(*aod.fPHOSTrigger)),
fFmdClusters(new TClonesArray(*aod.fFmdClusters)),
fPmdClusters(new TClonesArray(*aod.fPmdClusters)),
+ fHMPIDrings(new TClonesArray(*aod.fHMPIDrings)),
fDimuons(new TClonesArray(*aod.fDimuons)),
fAODTZERO(new AliAODTZERO(*aod.fAODTZERO)),
fAODVZERO(new AliAODVZERO(*aod.fAODVZERO)),
AddObject(fPHOSTrigger);
AddObject(fFmdClusters);
AddObject(fPmdClusters);
+ AddObject(fHMPIDrings);
AddObject(fDimuons);
AddObject(fAODTZERO);
AddObject(fAODVZERO);
AddObject(new AliAODCaloTrigger()); // PHOS
AddObject(new TClonesArray("AliAODFmdCluster", 0));
AddObject(new TClonesArray("AliAODPmdCluster", 0));
+ AddObject(new TClonesArray("AliAODHMPIDrings", 0));
AddObject(new TClonesArray("AliAODDimuon", 0));
AddObject(new AliAODTZERO());
AddObject(new AliAODVZERO());
fEmcalCells = (AliAODCaloCells*)fAODObjects->FindObject("emcalCells");
fPhosCells = (AliAODCaloCells*)fAODObjects->FindObject("phosCells");
fCaloClusters = (TClonesArray*)fAODObjects->FindObject("caloClusters");
- fEMCALTrigger = (AliAODCaloTrigger*)fAODObjects->FindObject("emcalTrigger");
- fPHOSTrigger = (AliAODCaloTrigger*)fAODObjects->FindObject("phosTrigger");
+ fEMCALTrigger = (AliAODCaloTrigger*)fAODObjects->FindObject("emcalTrigger");
+ fPHOSTrigger = (AliAODCaloTrigger*)fAODObjects->FindObject("phosTrigger");
fFmdClusters = (TClonesArray*)fAODObjects->FindObject("fmdClusters");
fPmdClusters = (TClonesArray*)fAODObjects->FindObject("pmdClusters");
+ fHMPIDrings = (TClonesArray*)fAODObjects->FindObject("hmpidRings");
fDimuons = (TClonesArray*)fAODObjects->FindObject("dimuons");
fAODTZERO = (AliAODTZERO*)fAODObjects->FindObject("AliAODTZERO");
fAODVZERO = (AliAODVZERO*)fAODObjects->FindObject("AliAODVZERO");
Int_t caloClusSize,
Int_t fmdClusSize,
Int_t pmdClusSize,
+ Int_t hmpidRingsSize,
Int_t dimuonArrSize
)
{
// deletes content of standard arrays and resets size
- // The line below added to avoid very costly and un-needed TROOT::RecursiveRemove (A.G.)
- gROOT->SetMustClean(kFALSE);
if (fTracks) {
fTracks->Delete();
if (trkArrSize > fTracks->GetSize())
if (pmdClusSize > fPmdClusters->GetSize())
fPmdClusters->Expand(pmdClusSize);
}
+ if (fHMPIDrings) {
+ fHMPIDrings->Delete();
+ if (hmpidRingsSize > fHMPIDrings->GetSize())
+ fHMPIDrings->Expand(hmpidRingsSize);
+ }
if (fDimuons) {
fDimuons->Delete();
if (dimuonArrSize > fDimuons->GetSize())
fEMCALTrigger->DeAllocate();
if (fPHOSTrigger)
fPHOSTrigger->DeAllocate();
+
}
void AliAODEvent::ClearStd()
if (fFmdClusters)
fFmdClusters ->Clear();
if (fPmdClusters)
- fPmdClusters ->Clear();
+ fPmdClusters ->Clear();
+ if (fHMPIDrings)
+ fHMPIDrings ->Clear();
if (fDimuons)
fDimuons ->Clear();
else return IsPileupFromSPD(5,0.8);
}
+void AliAODEvent::Reset()
+{
+ // Handle the cases
+ // Std content + Non std content
+
+ ClearStd();
+
+ if(fAODObjects->GetSize()>kAODListN){
+ // we have non std content
+ // this also covers aodfriends
+ for(int i = kAODListN;i < fAODObjects->GetSize();++i){
+ TObject *pObject = fAODObjects->At(i);
+ // TClonesArrays
+ if(pObject->InheritsFrom(TClonesArray::Class())){
+ ((TClonesArray*)pObject)->Delete();
+ }
+ else if(!pObject->InheritsFrom(TCollection::Class())){
+ TClass *pClass = TClass::GetClass(pObject->ClassName());
+ if (pClass && pClass->GetListOfMethods()->FindObject("Clear")) {
+ AliDebug(1, Form("Clear for object %s class %s", pObject->GetName(), pObject->ClassName()));
+ pObject->Clear();
+ }
+ else {
+ AliDebug(1, Form("ResetWithPlacementNew for object %s class %s", pObject->GetName(), pObject->ClassName()));
+ Long_t dtoronly = TObject::GetDtorOnly();
+ TObject::SetDtorOnly(pObject);
+ delete pObject;
+ pClass->New(pObject);
+ TObject::SetDtorOnly((void*)dtoronly);
+ }
+ }
+ else{
+ AliWarning(Form("No reset for %s \n",
+ pObject->ClassName()));
+ }
+ }
+ }
+}
+
Float_t AliAODEvent::GetVZEROEqMultiplicity(Int_t i) const
{
// Get VZERO Multiplicity for channel i
}
}
+//------------------------------------------------------------
+AliAODHMPIDrings *AliAODEvent::GetHMPIDringForTrackID(Int_t trackID) const
+{
+ //
+ // Returns the HMPID object if any for a given track ID
+ //
+ if(GetHMPIDrings())
+ {
+ for(Int_t ien = 0 ; ien < GetNHMPIDrings(); ien++)
+ {
+ if( ien == trackID ) return GetHMPIDring(ien);
+ }//rings loop
+ }
+ return 0;
+}
+//------------------------------------------------------------
+Int_t AliAODEvent::GetNHMPIDrings() const
+{
+ //
+ // If there is a list of HMPID rings in the given AOD event, return their number
+ //
+ if ( fHMPIDrings) return fHMPIDrings->GetEntriesFast();
+ else return -1;
+}
+//------------------------------------------------------------
+AliAODHMPIDrings *AliAODEvent::GetHMPIDring(Int_t nRings) const
+{
+ //
+ // If there is a list of HMPID rings in the given AOD event, return corresponding ring
+ //
+ if(fHMPIDrings) {
+ if( (AliAODHMPIDrings*)fHMPIDrings->UncheckedAt(nRings) ) {
+ return (AliAODHMPIDrings*)fHMPIDrings->UncheckedAt(nRings);
+ }
+ else return 0x0;
+ }
+ else return 0x0;
+}
+//------------------------------------------------------------