From 0c01ae65039528adcfced9985dec30e5eb1c4d1c Mon Sep 17 00:00:00 2001 From: rvernet Date: Wed, 4 Nov 2009 18:06:05 +0000 Subject: [PATCH] changed way of setting event info in AliCFManager and cuts in order to reduce log messages --- CORRFW/AliCFAcceptanceCuts.cxx | 2 +- CORRFW/AliCFAcceptanceCuts.h | 2 +- CORRFW/AliCFCutBase.h | 3 +- CORRFW/AliCFFrame.h | 3 ++ CORRFW/AliCFManager.cxx | 41 ++++++++++++++++++++++++++-- CORRFW/AliCFManager.h | 4 ++- CORRFW/AliCFPairAcceptanceCuts.cxx | 6 ++-- CORRFW/AliCFPairAcceptanceCuts.h | 2 +- CORRFW/AliCFParticleGenCuts.cxx | 7 ++--- CORRFW/AliCFParticleGenCuts.h | 2 +- CORRFW/AliCFTrackIsPrimaryCuts.cxx | 2 +- CORRFW/AliCFTrackIsPrimaryCuts.h | 2 +- CORRFW/AliCFV0TopoCuts.h | 2 +- CORRFW/test/AliCFSingleTrackTask.cxx | 14 ++++++---- CORRFW/test/AliCFV0Task.cxx | 22 +++++++-------- 15 files changed, 78 insertions(+), 36 deletions(-) diff --git a/CORRFW/AliCFAcceptanceCuts.cxx b/CORRFW/AliCFAcceptanceCuts.cxx index c23e4470354..c9723667659 100644 --- a/CORRFW/AliCFAcceptanceCuts.cxx +++ b/CORRFW/AliCFAcceptanceCuts.cxx @@ -178,7 +178,7 @@ void AliCFAcceptanceCuts::SelectionBitMap(TObject* obj) { } -void AliCFAcceptanceCuts::SetEvtInfo(TObject* mcInfo) { +void AliCFAcceptanceCuts::SetMCEventInfo(const TObject* mcInfo) { // // Sets pointer to MC event information (AliMCEvent) // diff --git a/CORRFW/AliCFAcceptanceCuts.h b/CORRFW/AliCFAcceptanceCuts.h index 1b7ed6249b0..238d5a25f7e 100644 --- a/CORRFW/AliCFAcceptanceCuts.h +++ b/CORRFW/AliCFAcceptanceCuts.h @@ -44,7 +44,7 @@ class AliCFAcceptanceCuts : public AliCFCutBase virtual ~AliCFAcceptanceCuts() { }; virtual Bool_t IsSelected(TObject* obj) ; virtual Bool_t IsSelected(TList* /*list*/) {return kTRUE;} - virtual void SetEvtInfo(TObject* mcInfo) ; + virtual void SetMCEventInfo(const TObject* mcInfo) ; void SetMinNHitITS (Int_t nhits) {fMinNHitITS=nhits;} void SetMinNHitTPC (Int_t nhits) {fMinNHitTPC=nhits;} void SetMinNHitTRD (Int_t nhits) {fMinNHitTRD=nhits;} diff --git a/CORRFW/AliCFCutBase.h b/CORRFW/AliCFCutBase.h index 47339636a7d..9789741a4d8 100644 --- a/CORRFW/AliCFCutBase.h +++ b/CORRFW/AliCFCutBase.h @@ -33,7 +33,8 @@ class AliCFCutBase : public AliAnalysisCuts virtual ~AliCFCutBase() {;} //dtor virtual Bool_t IsQAOn() const {return fIsQAOn;}; //QA flag getter virtual void SetQAOn(TList* list) {fIsQAOn=kTRUE; AddQAHistograms(list);} //QA flag setter - virtual void SetEvtInfo(TObject *) {;}; //Pass pointer to event-level info + virtual void SetMCEventInfo(const TObject *) {} //Pass pointer to MC event + virtual void SetRecEventInfo(const TObject *) {} //Pass pointer to reconstructed event protected: Bool_t fIsQAOn;//qa checking on/off diff --git a/CORRFW/AliCFFrame.h b/CORRFW/AliCFFrame.h index 5ce2f6eae5c..cacfe87a4d8 100644 --- a/CORRFW/AliCFFrame.h +++ b/CORRFW/AliCFFrame.h @@ -31,6 +31,9 @@ class AliCFFrame : public TNamed virtual Int_t * GetNBins() const = 0 ; // returns an array containing the bins for each variable virtual Float_t GetBinCenter(Int_t ivar,Int_t ibin) const = 0 ; // the center of bin number ibin for variable ivar virtual Float_t GetBinSize (Int_t ivar,Int_t ibin) const = 0 ; // the size of bin number ibin for variable ivar + + // virtual void Clear() = 0 ; // clear all the cells + //virtual void GetBinCenters(const Int_t *ibin, Float_t *binCenter) const = 0 ; // //virtual void GetBinSizes (const Int_t *ibin, Float_t *binSizes) const = 0 ; // diff --git a/CORRFW/AliCFManager.cxx b/CORRFW/AliCFManager.cxx index af9b7504b3f..045c57317b9 100644 --- a/CORRFW/AliCFManager.cxx +++ b/CORRFW/AliCFManager.cxx @@ -137,7 +137,7 @@ Bool_t AliCFManager::CheckEventCuts(Int_t isel, TObject *obj, const TString &se } //_____________________________________________________________________________ -void AliCFManager::SetEventInfo(TObject *obj) const { +void AliCFManager::SetMCEventInfo(const TObject *obj) const { //Particle level cuts @@ -150,7 +150,7 @@ void AliCFManager::SetEventInfo(TObject *obj) const { TObjArrayIter iter(fPartCutList[isel]); AliCFCutBase *cut = 0; while ( (cut = (AliCFCutBase*)iter.Next()) ) { - cut->SetEvtInfo(obj); + cut->SetMCEventInfo(obj); } } } @@ -166,7 +166,42 @@ void AliCFManager::SetEventInfo(TObject *obj) const { TObjArrayIter iter(fEvtCutList[isel]); AliCFCutBase *cut = 0; while ( (cut = (AliCFCutBase*)iter.Next()) ) { - cut->SetEvtInfo(obj); + cut->SetMCEventInfo(obj); + } + } + } +} +//_____________________________________________________________________________ +void AliCFManager::SetRecEventInfo(const TObject *obj) const { + + //Particle level cuts + + if (!fPartCutList) { + AliWarning("No particle cut list found"); + } + else { + for(Int_t isel=0;iselSetRecEventInfo(obj); + } + } + } + + //Event level cuts + + if (!fEvtCutList) { + AliWarning("No event cut list found"); + } + else { + for(Int_t isel=0;iselSetRecEventInfo(obj); } } } diff --git a/CORRFW/AliCFManager.h b/CORRFW/AliCFManager.h index 7e5a8411adf..0527fc11235 100644 --- a/CORRFW/AliCFManager.h +++ b/CORRFW/AliCFManager.h @@ -105,7 +105,9 @@ class AliCFManager : public TNamed //Pass the pointer to obj to the selections (used to access MC/rec global //event info when requested - virtual void SetEventInfo(TObject *obj) const; + virtual void SetMCEventInfo(const TObject *obj) const; + virtual void SetRecEventInfo(const TObject *obj) const; + virtual void SetEventInfo(TObject*) const {AliError("DEPRECATED !! -> use SetMCEventInfo of SetRecEventInfo instead");} //Cut Checkers: by default *all* the cuts of a given input list is checked //(.and. of all cuts), but the user can select a subsample of cuts in the diff --git a/CORRFW/AliCFPairAcceptanceCuts.cxx b/CORRFW/AliCFPairAcceptanceCuts.cxx index 58bf433600a..cc6cc8c85e0 100755 --- a/CORRFW/AliCFPairAcceptanceCuts.cxx +++ b/CORRFW/AliCFPairAcceptanceCuts.cxx @@ -146,19 +146,19 @@ void AliCFPairAcceptanceCuts::SelectionBitMap(TObject* obj) } //______________________________ -void AliCFPairAcceptanceCuts::SetEvtInfo(TObject* mcInfo) { +void AliCFPairAcceptanceCuts::SetMCEventInfo(TObject* mcInfo) { // // Sets pointer to MC event information (AliMCEvent) // if (!mcInfo) { - Error("SetEvtInfo","Pointer to MC Event is null !"); + Error("SetMCEventInfo","Pointer to MC Event is null !"); return; } TString className(mcInfo->ClassName()); if (className.CompareTo("AliMCEvent") != 0) { - Error("SetEvtInfo","argument must point to an AliMCEvent !"); + Error("SetMCEventInfo","argument must point to an AliMCEvent !"); return ; } diff --git a/CORRFW/AliCFPairAcceptanceCuts.h b/CORRFW/AliCFPairAcceptanceCuts.h index eb30ca11cb2..0a32fc53d88 100755 --- a/CORRFW/AliCFPairAcceptanceCuts.h +++ b/CORRFW/AliCFPairAcceptanceCuts.h @@ -42,7 +42,7 @@ class AliCFPairAcceptanceCuts : public AliCFCutBase virtual ~AliCFPairAcceptanceCuts() {delete fCutNeg; delete fCutPos; } Bool_t IsSelected(TObject* obj) ; Bool_t IsSelected(TList* /*list*/) {return kTRUE;} - virtual void SetEvtInfo(TObject *mcInfo) ; + virtual void SetMCEventInfo(TObject *mcInfo) ; virtual AliCFAcceptanceCuts* GetNegCut() const {return fCutNeg;} virtual AliCFAcceptanceCuts* GetPosCut() const {return fCutPos;} diff --git a/CORRFW/AliCFParticleGenCuts.cxx b/CORRFW/AliCFParticleGenCuts.cxx index 73bd9c16e30..8b6336bc212 100644 --- a/CORRFW/AliCFParticleGenCuts.cxx +++ b/CORRFW/AliCFParticleGenCuts.cxx @@ -760,7 +760,7 @@ Bool_t AliCFParticleGenCuts::IsA(AliAODMCParticle *mcPart, Int_t pdg, Bool_t abs return kTRUE; } //______________________________ -void AliCFParticleGenCuts::SetEvtInfo(TObject* mcEvent) { +void AliCFParticleGenCuts::SetMCEventInfo(const TObject* mcEvent) { // // Sets pointer to MC event information (AliMCEvent) // @@ -775,7 +775,6 @@ void AliCFParticleGenCuts::SetEvtInfo(TObject* mcEvent) { AliError("argument must point to an AliMCEvent or an AliAODEvent !"); return ; } - - if (fIsAODMC) fMCInfo = dynamic_cast(mcEvent) ; - else fMCInfo = dynamic_cast (mcEvent) ; + + fMCInfo = (AliVEvent*)mcEvent ; } diff --git a/CORRFW/AliCFParticleGenCuts.h b/CORRFW/AliCFParticleGenCuts.h index 7b728aaf899..d19148f1e88 100644 --- a/CORRFW/AliCFParticleGenCuts.h +++ b/CORRFW/AliCFParticleGenCuts.h @@ -55,7 +55,7 @@ class AliCFParticleGenCuts : public AliCFCutBase virtual ~AliCFParticleGenCuts() { }; virtual Bool_t IsSelected(TObject* obj) ; Bool_t IsSelected(TList* /*list*/) {return kTRUE;} - virtual void SetEvtInfo(TObject* mcEvent) ; + virtual void SetMCEventInfo(const TObject* mcEvent) ; void SetAODMC(Bool_t flag) {fIsAODMC=flag;} Bool_t IsPrimaryCharged(AliVParticle *mcPart); diff --git a/CORRFW/AliCFTrackIsPrimaryCuts.cxx b/CORRFW/AliCFTrackIsPrimaryCuts.cxx index 784229ddd33..841a98dde4c 100644 --- a/CORRFW/AliCFTrackIsPrimaryCuts.cxx +++ b/CORRFW/AliCFTrackIsPrimaryCuts.cxx @@ -360,7 +360,7 @@ void AliCFTrackIsPrimaryCuts::Copy(TObject &c) const TNamed::Copy(c); } //__________________________________________________________________________________ -void AliCFTrackIsPrimaryCuts::SetEvtInfo(TObject* esd) { +void AliCFTrackIsPrimaryCuts::SetRecEventInfo(const TObject* esd) { // // Sets pointer to esd event information (AliESDEvent) // diff --git a/CORRFW/AliCFTrackIsPrimaryCuts.h b/CORRFW/AliCFTrackIsPrimaryCuts.h index ac4b8952c6d..0255843ca30 100644 --- a/CORRFW/AliCFTrackIsPrimaryCuts.h +++ b/CORRFW/AliCFTrackIsPrimaryCuts.h @@ -97,7 +97,7 @@ class AliCFTrackIsPrimaryCuts : public AliCFCutBase // please use indices from the enumeration below void SetHistogramBins(Int_t index, Int_t nbins, Double_t *bins); void SetHistogramBins(Int_t index, Int_t nbins, Double_t xmin, Double_t xmax); - virtual void SetEvtInfo(TObject* esd) ; + virtual void SetRecEventInfo(const TObject* esd) ; // indeces/counters for single selections enum { diff --git a/CORRFW/AliCFV0TopoCuts.h b/CORRFW/AliCFV0TopoCuts.h index b189039c54b..72b944a2269 100755 --- a/CORRFW/AliCFV0TopoCuts.h +++ b/CORRFW/AliCFV0TopoCuts.h @@ -44,7 +44,7 @@ class AliCFV0TopoCuts : public AliCFCutBase virtual ~AliCFV0TopoCuts() { } ; Bool_t IsSelected(TObject* v0) ; Bool_t IsSelected(TList* /*list*/) {return kTRUE;} - void SetEvtInfo(TObject* evt) {fEvent = (AliVEvent*)evt;} + void SetRecEventInfo(const TObject* evt) {fEvent = (AliVEvent*)evt;} void SetMaxDcaDaughters (Double32_t dca) {fMaxDcaDaughters = dca;} void SetMinDcaNeg (Double32_t dca) {fMinDcaNeg = dca;} void SetMinDcaPos (Double32_t dca) {fMinDcaPos = dca;} diff --git a/CORRFW/test/AliCFSingleTrackTask.cxx b/CORRFW/test/AliCFSingleTrackTask.cxx index 5bcff8c25a9..7d1f289fd1f 100644 --- a/CORRFW/test/AliCFSingleTrackTask.cxx +++ b/CORRFW/test/AliCFSingleTrackTask.cxx @@ -138,17 +138,21 @@ void AliCFSingleTrackTask::UserExec(Option_t *) return; } - if (!fMCEvent) Error("UserExec","NO MC INFO FOUND"); + if (!fMCEvent) { + Error("UserExec","NO MC INFO FOUND"); + return ; + } - //pass the MC evt handler to the cuts that need it - fCFManager->SetEventInfo(fMCEvent); + //pass the evt info to the cuts that need it + fCFManager->SetMCEventInfo (fMCEvent); + fCFManager->SetRecEventInfo(fEvent); // MC-event selection Double_t containerInput[2] ; //loop on the MC event for (Int_t ipart=0; ipartGetNumberOfTracks(); ipart++) { - AliMCParticle *mcPart = fMCEvent->GetTrack(ipart); + AliMCParticle *mcPart = (AliMCParticle*)fMCEvent->GetTrack(ipart); //check the MC-level cuts if (!fCFManager->CheckParticleCuts(AliCFManager::kPartGenCuts,mcPart)) continue; @@ -190,7 +194,7 @@ void AliCFSingleTrackTask::UserExec(Option_t *) Int_t label = track->GetLabel(); if (label<0) continue; - AliMCParticle *mcPart = fMCEvent->GetTrack(label); + AliMCParticle *mcPart = (AliMCParticle*)fMCEvent->GetTrack(label); // check if this track was part of the signal if (!fCFManager->CheckParticleCuts(AliCFManager::kPartGenCuts,mcPart)) continue; diff --git a/CORRFW/test/AliCFV0Task.cxx b/CORRFW/test/AliCFV0Task.cxx index 8653fd2342c..d1137fed752 100644 --- a/CORRFW/test/AliCFV0Task.cxx +++ b/CORRFW/test/AliCFV0Task.cxx @@ -45,6 +45,7 @@ #include "TChain.h" #include "AliCFParticleGenCuts.h" #include "AliAODv0.h" +#include "TDatabasePDG.h" //__________________________________________________________________________ AliCFV0Task::AliCFV0Task() : @@ -131,8 +132,13 @@ void AliCFV0Task::UserExec(Option_t *) return; } - if (!fMCEvent) Error("UserExec","NO MC INFO FOUND!"); - fCFManager->SetEventInfo(fMCEvent); + if (!fMCEvent) { + Error("UserExec","NO MC INFO FOUND!"); + return; + } + + fCFManager->SetMCEventInfo (fMCEvent); + fCFManager->SetRecEventInfo(fInputEvent); Bool_t isESDEvent = strcmp(fInputEvent->ClassName(),"AliESDEvent") == 0 ? kTRUE : kFALSE ; Bool_t isAODEvent = strcmp(fInputEvent->ClassName(),"AliAODEvent") == 0 ? kTRUE : kFALSE ; @@ -147,7 +153,7 @@ void AliCFV0Task::UserExec(Option_t *) //loop on the MC event Info("UserExec","Looping on MC event"); for (Int_t ipart=0; ipartGetNumberOfTracks(); ipart++) { - AliMCParticle *mcPart = fMCEvent->GetTrack(ipart); + AliMCParticle *mcPart = (AliMCParticle*)fMCEvent->GetTrack(ipart); //check the MC-level cuts if (!fCFManager->CheckParticleCuts(AliCFManager::kPartGenCuts,mcPart)) continue; @@ -166,14 +172,6 @@ void AliCFV0Task::UserExec(Option_t *) //Now go to rec level Info("UserExec","Looping on %s",fInputEvent->ClassName()); - //SET THE ESD AS EVENT INFO IN RECONSTRUCTION CUTS - TObjArray* fCutsReco = fCFManager->GetParticleCutsList(AliCFManager::kPartRecCuts); - TObjArrayIter iter1(fCutsReco); - AliCFCutBase *cut = 0; - while ( (cut = (AliCFCutBase*)iter1.Next()) ) { - cut->SetEvtInfo(fInputEvent); - } - if (isESDEvent && fRebuildV0s) RebuildV0s(fESD) ; Info("UserExec","There are %d V0s in event",fInputEvent->GetNumberOfV0s()); @@ -208,7 +206,7 @@ void AliCFV0Task::UserExec(Option_t *) if (!fCFManager->CheckParticleCuts(AliCFManager::kPartRecCuts,pair)) continue; //check if associated MC v0 passes the cuts - AliMCParticle* mcV0 = fMCEvent->GetTrack(labMCV0); + AliMCParticle* mcV0 = (AliMCParticle*)fMCEvent->GetTrack(labMCV0); if (!mcV0) continue; if (!fCFManager->CheckParticleCuts(AliCFManager::kPartGenCuts,mcV0)) continue; -- 2.43.0