From fc05a533914b11abad0ca8b5b164169353131cc0 Mon Sep 17 00:00:00 2001 From: morsch Date: Mon, 27 Aug 2012 09:49:15 +0000 Subject: [PATCH] HMPID related updates Levente Molnar https://savannah.cern.ch/bugs/index.php?96201 --- ANALYSIS/AliAnalysisTaskSE.cxx | 19 ++++++++++++++++++- ANALYSIS/AliAnalysisTaskSE.h | 3 ++- STEER/AOD/AliAODEvent.cxx | 10 +++++----- STEER/AOD/AliAODEvent.h | 2 +- STEER/AOD/AliAODHandler.cxx | 4 +++- STEER/AOD/AliAODHandler.h | 3 +++ 6 files changed, 32 insertions(+), 9 deletions(-) diff --git a/ANALYSIS/AliAnalysisTaskSE.cxx b/ANALYSIS/AliAnalysisTaskSE.cxx index 95b1c57536b..cfd69a4c52d 100644 --- a/ANALYSIS/AliAnalysisTaskSE.cxx +++ b/ANALYSIS/AliAnalysisTaskSE.cxx @@ -68,6 +68,7 @@ AliAODCaloCells* AliAnalysisTaskSE::fgAODPhosCells = NULL; AliAODCaloTrigger* AliAnalysisTaskSE::fgAODEMCALTrigger = NULL; AliAODCaloTrigger* AliAnalysisTaskSE::fgAODPHOSTrigger = NULL; TClonesArray* AliAnalysisTaskSE::fgAODDimuons = NULL; +TClonesArray* AliAnalysisTaskSE::fgAODHmpidRings = NULL; AliAnalysisTaskSE::AliAnalysisTaskSE(): AliAnalysisTask(), @@ -294,13 +295,21 @@ void AliAnalysisTaskSE::CreateOutputObjects() fgAODMCParticles->SetName("mcparticles"); handler->AddBranch("TClonesArray", &fgAODMCParticles); } - if ((handler->NeedsDimuonsBranchReplication() || merging) && !(fgAODDimuons)) + if ((handler->NeedsDimuonsBranchReplication() || merging) && !(fgAODDimuons)) { if (fDebug > 1) AliInfo("Replicating dimuon branch\n"); fgAODDimuons = new TClonesArray("AliAODDimuon",0); fgAODDimuons->SetName("dimuons"); handler->AddBranch("TClonesArray", &fgAODDimuons); } + if ((handler->NeedsHMPIDBranchReplication() || merging) && !(fgAODHmpidRings)) + { + if (fDebug > 1) AliInfo("Replicating HMPID branch\n"); + fgAODHmpidRings = new TClonesArray("AliAODHMPIDrings",0); + fgAODHmpidRings->SetName("hmpidRings"); + handler->AddBranch("TClonesArray", &fgAODHmpidRings); + } + // cache the pointerd in the AODEvent fOutputAOD->GetStdContent(); @@ -469,6 +478,14 @@ void AliAnalysisTaskSE::Exec(Option_t* option) } } } + if ((handler->NeedsHMPIDBranchReplication()) && (fgAODHmpidRings)) + { + TClonesArray* hmpidRings = aod->GetHMPIDrings(); + new (fgAODHmpidRings) TClonesArray(*hmpidRings); + } + + + // Additional merging if needed if (merging) { Int_t nc; diff --git a/ANALYSIS/AliAnalysisTaskSE.h b/ANALYSIS/AliAnalysisTaskSE.h index 31d34c1d96b..7f2d2b50fd3 100644 --- a/ANALYSIS/AliAnalysisTaskSE.h +++ b/ANALYSIS/AliAnalysisTaskSE.h @@ -100,7 +100,8 @@ class AliAnalysisTaskSE : public AliAnalysisTask static AliAODTracklets* fgAODTracklets; //! Tracklets for replication static AliAODCaloCells* fgAODEmcalCells; //! Emcal Cell replication static AliAODCaloCells* fgAODPhosCells; //! Phos Cell replication - static TClonesArray* fgAODDimuons; //! Dimuons replication + static TClonesArray* fgAODDimuons; //! Dimuons replication + static TClonesArray* fgAODHmpidRings; //! HMPID replication // Event Selection UInt_t fOfflineTriggerMask; // Task processes collision candidates only // Event Mixing diff --git a/STEER/AOD/AliAODEvent.cxx b/STEER/AOD/AliAODEvent.cxx index ebc154d654e..df9ca0ed1dd 100644 --- a/STEER/AOD/AliAODEvent.cxx +++ b/STEER/AOD/AliAODEvent.cxx @@ -407,7 +407,7 @@ void AliAODEvent::GetStdContent() fPHOSTrigger = (AliAODCaloTrigger*)fAODObjects->FindObject("phosTrigger"); fFmdClusters = (TClonesArray*)fAODObjects->FindObject("fmdClusters"); fPmdClusters = (TClonesArray*)fAODObjects->FindObject("pmdClusters"); - fHMPIDrings = (TClonesArray*)fAODObjects->FindObject("hmpidRings"); + fHMPIDrings = (TClonesArray*)fAODObjects->FindObject("hmpidRings"); fDimuons = (TClonesArray*)fAODObjects->FindObject("dimuons"); fAODTZERO = (AliAODTZERO*)fAODObjects->FindObject("AliAODTZERO"); fAODVZERO = (AliAODVZERO*)fAODObjects->FindObject("AliAODVZERO"); @@ -473,7 +473,7 @@ void AliAODEvent::ResetStd(Int_t trkArrSize, fPmdClusters->Expand(pmdClusSize); } if (fHMPIDrings) { - fHMPIDrings->Delete(); + fHMPIDrings->Delete(); if (hmpidRingsSize > fHMPIDrings->GetSize()) fHMPIDrings->Expand(hmpidRingsSize); } @@ -522,9 +522,9 @@ void AliAODEvent::ClearStd() if (fFmdClusters) fFmdClusters ->Clear(); if (fPmdClusters) - fPmdClusters ->Clear(); - if (fHMPIDrings) - fHMPIDrings ->Delete(); + fPmdClusters ->Clear(); + if (fHMPIDrings) + fHMPIDrings ->Clear(); if (fDimuons) fDimuons ->Clear(); diff --git a/STEER/AOD/AliAODEvent.h b/STEER/AOD/AliAODEvent.h index 1ddc7a2262a..c1834af7cdf 100644 --- a/STEER/AOD/AliAODEvent.h +++ b/STEER/AOD/AliAODEvent.h @@ -213,7 +213,7 @@ class AliAODEvent : public AliVEvent { {new((*fPmdClusters)[fPmdClusters->GetEntriesFast()]) AliAODPmdCluster(*clus); return fPmdClusters->GetEntriesFast()-1;} // -- HMPID objects - TClonesArray *GetHMPIDrings() const { return fHMPIDrings; } + TClonesArray *GetHMPIDrings() const {return fHMPIDrings; } Int_t GetNHMPIDrings(); AliAODHMPIDrings *GetHMPIDring(Int_t nRings); Int_t AddHMPIDrings(const AliAODHMPIDrings* ring) diff --git a/STEER/AOD/AliAODHandler.cxx b/STEER/AOD/AliAODHandler.cxx index dbd0d2bc9e5..0434a82ec0b 100644 --- a/STEER/AOD/AliAODHandler.cxx +++ b/STEER/AOD/AliAODHandler.cxx @@ -71,6 +71,7 @@ AliAODHandler::AliAODHandler() : fNeedsCaloTriggerBranchReplication(kFALSE), fNeedsMCParticlesBranchReplication(kFALSE), fNeedsDimuonsBranchReplication(kFALSE), + fNeedsHMPIDBranchReplication(kFALSE), fAODIsReplicated(kFALSE), fAODEvent(NULL), fMCEventH(NULL), @@ -100,9 +101,10 @@ AliAODHandler::AliAODHandler(const char* name, const char* title): fNeedsJetsBranchReplication(kFALSE), fNeedsFMDClustersBranchReplication(kFALSE), fNeedsCaloClustersBranchReplication(kFALSE), - fNeedsCaloTriggerBranchReplication(kFALSE), + fNeedsCaloTriggerBranchReplication(kFALSE), fNeedsMCParticlesBranchReplication(kFALSE), fNeedsDimuonsBranchReplication(kFALSE), + fNeedsHMPIDBranchReplication(kFALSE), fAODIsReplicated(kFALSE), fAODEvent(NULL), fMCEventH(NULL), diff --git a/STEER/AOD/AliAODHandler.h b/STEER/AOD/AliAODHandler.h index 1a9224b1fb7..268f7243aaf 100644 --- a/STEER/AOD/AliAODHandler.h +++ b/STEER/AOD/AliAODHandler.h @@ -61,6 +61,7 @@ class AliAODHandler : public AliVEventHandler { virtual void SetNeedsCaloTriggerBranchReplication() {fNeedsCaloTriggerBranchReplication = kTRUE;} virtual void SetNeedsMCParticlesBranchReplication() {fNeedsMCParticlesBranchReplication = kTRUE;} virtual void SetNeedsDimuonsBranchReplication() {fNeedsDimuonsBranchReplication = kTRUE;} + virtual void SetNeedsHMPIDBranchReplication() {fNeedsHMPIDBranchReplication = kTRUE;} virtual void SetAODIsReplicated() {Changed(); fAODIsReplicated = kTRUE;} virtual void SetAODExtensionMode() {Changed(); fIsStandard=kFALSE; fFillAOD=kFALSE; fFillAODRun=kFALSE; fFillExtension=kTRUE;} // @@ -93,6 +94,7 @@ class AliAODHandler : public AliVEventHandler { Bool_t NeedsCaloTriggerBranchReplication() const {return fNeedsCaloTriggerBranchReplication;} Bool_t NeedsMCParticlesBranchReplication() const {return fNeedsMCParticlesBranchReplication;} Bool_t NeedsDimuonsBranchReplication() const {return fNeedsDimuonsBranchReplication;} + Bool_t NeedsHMPIDBranchReplication() const {return fNeedsHMPIDBranchReplication;} Bool_t AODIsReplicated() const {return fAODIsReplicated;} // void SetInputTree(TTree* /*tree*/) {;} @@ -127,6 +129,7 @@ class AliAODHandler : public AliVEventHandler { Bool_t fNeedsCaloTriggerBranchReplication; // Flag for Calo Trigger replication Bool_t fNeedsMCParticlesBranchReplication; // Flag for MCParticles replication Bool_t fNeedsDimuonsBranchReplication; // Flag for Dimuons replication + Bool_t fNeedsHMPIDBranchReplication; // Flag for HMPID replication Bool_t fAODIsReplicated; // Flag true if replication as been executed AliAODEvent *fAODEvent; //! Pointer to the AOD event AliMCEventHandler *fMCEventH; //! Pointer to mc event handler needed not to depend on the manager -- 2.39.3