}
-void AliCFAcceptanceCuts::SetEvtInfo(TObject* mcInfo) {
+void AliCFAcceptanceCuts::SetMCEventInfo(const TObject* mcInfo) {
//
// Sets pointer to MC event information (AliMCEvent)
//
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;}
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
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 ; //
}
//_____________________________________________________________________________
-void AliCFManager::SetEventInfo(TObject *obj) const {
+void AliCFManager::SetMCEventInfo(const TObject *obj) const {
//Particle level cuts
TObjArrayIter iter(fPartCutList[isel]);
AliCFCutBase *cut = 0;
while ( (cut = (AliCFCutBase*)iter.Next()) ) {
- cut->SetEvtInfo(obj);
+ cut->SetMCEventInfo(obj);
}
}
}
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;isel<fNStepPart; isel++){
+ if(!fPartCutList[isel])continue;
+ TObjArrayIter iter(fPartCutList[isel]);
+ AliCFCutBase *cut = 0;
+ while ( (cut = (AliCFCutBase*)iter.Next()) ) {
+ cut->SetRecEventInfo(obj);
+ }
+ }
+ }
+
+ //Event level cuts
+
+ if (!fEvtCutList) {
+ AliWarning("No event cut list found");
+ }
+ else {
+ for(Int_t isel=0;isel<fNStepEvt; isel++){
+ if(!fEvtCutList[isel])continue;
+ TObjArrayIter iter(fEvtCutList[isel]);
+ AliCFCutBase *cut = 0;
+ while ( (cut = (AliCFCutBase*)iter.Next()) ) {
+ cut->SetRecEventInfo(obj);
}
}
}
//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
}
//______________________________
-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 ;
}
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;}
return kTRUE;
}
//______________________________
-void AliCFParticleGenCuts::SetEvtInfo(TObject* mcEvent) {
+void AliCFParticleGenCuts::SetMCEventInfo(const TObject* mcEvent) {
//
// Sets pointer to MC event information (AliMCEvent)
//
AliError("argument must point to an AliMCEvent or an AliAODEvent !");
return ;
}
-
- if (fIsAODMC) fMCInfo = dynamic_cast<AliAODEvent*>(mcEvent) ;
- else fMCInfo = dynamic_cast<AliMCEvent*> (mcEvent) ;
+
+ fMCInfo = (AliVEvent*)mcEvent ;
}
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);
TNamed::Copy(c);
}
//__________________________________________________________________________________
-void AliCFTrackIsPrimaryCuts::SetEvtInfo(TObject* esd) {
+void AliCFTrackIsPrimaryCuts::SetRecEventInfo(const TObject* esd) {
//
// Sets pointer to esd event information (AliESDEvent)
//
// 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 {
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;}
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; ipart<fMCEvent->GetNumberOfTracks(); ipart++) {
- AliMCParticle *mcPart = fMCEvent->GetTrack(ipart);
+ AliMCParticle *mcPart = (AliMCParticle*)fMCEvent->GetTrack(ipart);
//check the MC-level cuts
if (!fCFManager->CheckParticleCuts(AliCFManager::kPartGenCuts,mcPart)) continue;
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;
#include "TChain.h"
#include "AliCFParticleGenCuts.h"
#include "AliAODv0.h"
+#include "TDatabasePDG.h"
//__________________________________________________________________________
AliCFV0Task::AliCFV0Task() :
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 ;
//loop on the MC event
Info("UserExec","Looping on MC event");
for (Int_t ipart=0; ipart<fMCEvent->GetNumberOfTracks(); ipart++) {
- AliMCParticle *mcPart = fMCEvent->GetTrack(ipart);
+ AliMCParticle *mcPart = (AliMCParticle*)fMCEvent->GetTrack(ipart);
//check the MC-level cuts
if (!fCFManager->CheckParticleCuts(AliCFManager::kPartGenCuts,mcPart)) continue;
//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());
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;