From e123f993e27b17bbfc771bb81073e64e65ddb45b Mon Sep 17 00:00:00 2001 From: andronic Date: Wed, 3 Mar 2010 18:06:26 +0000 Subject: [PATCH] Further bugfixes, coding violations and warning removal. --- .../AliAnalysisTaskDielectronEfficiency.cxx | 2 +- .../AliAnalysisTaskDielectronEfficiency.h | 2 +- PWG3/dielectron/AliDielectronCF.cxx | 95 +++++++++++-------- PWG3/dielectron/AliDielectronCF.h | 20 ++-- PWG3/dielectron/AliDielectronVarCuts.cxx | 72 +++++++------- PWG3/dielectron/AliDielectronVarCuts.h | 29 ++++-- 6 files changed, 130 insertions(+), 90 deletions(-) diff --git a/PWG3/dielectron/AliAnalysisTaskDielectronEfficiency.cxx b/PWG3/dielectron/AliAnalysisTaskDielectronEfficiency.cxx index 97ed8d01679..1cc09e55a6d 100644 --- a/PWG3/dielectron/AliAnalysisTaskDielectronEfficiency.cxx +++ b/PWG3/dielectron/AliAnalysisTaskDielectronEfficiency.cxx @@ -403,7 +403,7 @@ void AliAnalysisTaskDielectronEfficiency::FillPlots(AliVEvent *event) // } -void AliAnalysisTaskDielectronEfficiency::FillMCInfo(AliStack *pStack) +void AliAnalysisTaskDielectronEfficiency::FillMCInfo(AliStack * const pStack) { // // fill pure MC histograms diff --git a/PWG3/dielectron/AliAnalysisTaskDielectronEfficiency.h b/PWG3/dielectron/AliAnalysisTaskDielectronEfficiency.h index 902104bd86e..0574d3b545e 100644 --- a/PWG3/dielectron/AliAnalysisTaskDielectronEfficiency.h +++ b/PWG3/dielectron/AliAnalysisTaskDielectronEfficiency.h @@ -60,7 +60,7 @@ private: TDatabasePDG *fPDG; //! PDG database void FillPlots(AliVEvent *event); - void FillMCInfo(AliStack *pStack); + void FillMCInfo(AliStack * const pStack); AliAnalysisTaskDielectronEfficiency(const AliAnalysisTaskDielectronEfficiency &c); AliAnalysisTaskDielectronEfficiency& operator= (const AliAnalysisTaskDielectronEfficiency &c); diff --git a/PWG3/dielectron/AliDielectronCF.cxx b/PWG3/dielectron/AliDielectronCF.cxx index 258739fd9c8..8c80541a2d0 100644 --- a/PWG3/dielectron/AliDielectronCF.cxx +++ b/PWG3/dielectron/AliDielectronCF.cxx @@ -47,7 +47,10 @@ AliDielectronCF::AliDielectronCF() : fNSteps(0), fNVars(0), fNCuts(0), - fStepsForEachCut(kTRUE), + fStepForMCtruth(kFALSE), + fStepForNoCutsMCmotherPid(kFALSE), + fStepForAfterAllCuts(kTRUE), + fStepsForEachCut(kFALSE), fStepsForCutsIncreasing(kFALSE), fNStepMasks(0), fPdgMother(-1), @@ -61,9 +64,10 @@ AliDielectronCF::AliDielectronCF() : } for (Int_t i=0; iGetEntries(); + + fNSteps=0; + if (fStepForMCtruth) ++fNSteps; + if (fStepForNoCutsMCmotherPid) ++fNSteps; + if (fStepForAfterAllCuts) fNSteps+=2; - fNSteps=4; //defaults: 0: MC truth - // 1: no Cuts + MC - // 2: after all cuts - // 3: after all cuts + MC truth - - if (fStepsForEachCut) fNSteps+=(2*fNCuts); //one step for each cut + MC truth + if (fStepsForEachCut&&fNCuts>1) fNSteps+=(2*fNCuts); //one step for each cut + MC truth if (fStepsForCutsIncreasing&&fNCuts>2) fNSteps+=(2*(fNCuts-2)); //one step for the increasing cuts + MC truth // e.g. cut2&cut3, cut2&cut3&cut4 fNSteps+=(2*fNStepMasks); // cuts for the additional cut masks @@ -158,24 +166,30 @@ void AliDielectronCF::InitialiseContainer(const AliAnalysisFilter& filter) Int_t step=0; //Pure MC truth - fCfContainer->SetStepTitle(step++,"MC truth"); + if (fStepForMCtruth){ + fCfContainer->SetStepTitle(step++,"MC truth"); + } //before cuts (MC truth) - fCfContainer->SetStepTitle(step++,"No cuts (MC truth)"); + if (fStepForNoCutsMCmotherPid){ + fCfContainer->SetStepTitle(step++,"No cuts (MC mother)"); + } //After All cuts - TString cutName="All Cuts"; //TODO: User GetTitle??? - fCfContainer->SetStepTitle(step++, cutName.Data()); //Step for the cut - cutName+=" (MC truth)"; - fCfContainer->SetStepTitle(step++, cutName.Data()); //Step for the cut with MC truth - + TString cutName; + if (fStepForAfterAllCuts){ + cutName="All Cuts"; //TODO: User GetTitle??? + fCfContainer->SetStepTitle(step++, cutName.Data()); //Step for the cut + cutName+=" (MC truth)"; + fCfContainer->SetStepTitle(step++, cutName.Data()); //Step for the cut with MC truth + } //Steps for each of the cuts - if (fStepsForEachCut){ + if (fStepsForEachCut&&fNCuts>1){ for (Int_t iCut=0; iCutAt(iCut)->GetName(); //TODO: User GetTitle??? fCfContainer->SetStepTitle(step++, cutName.Data()); //Step for the cut - cutName+=" (MC truth)"; + cutName+=" (MC mother)"; fCfContainer->SetStepTitle(step++, cutName.Data()); //Step for the cut with MC truth } } @@ -187,7 +201,7 @@ void AliDielectronCF::InitialiseContainer(const AliAnalysisFilter& filter) cutName+="&"; cutName+=filter.GetCuts()->At(iCut)->GetName(); fCfContainer->SetStepTitle(step++, cutName.Data()); //Step for the cut - cutName+=" (MC truth)"; + cutName+=" (MC mother)"; fCfContainer->SetStepTitle(step++, cutName.Data()); //Step for the cut with MC truth } } @@ -207,7 +221,7 @@ void AliDielectronCF::InitialiseContainer(const AliAnalysisFilter& filter) } } fCfContainer->SetStepTitle(step++, cutName.Data()); //Step for the cut - cutName+=" (MC truth)"; + cutName+=" (MC mother)"; fCfContainer->SetStepTitle(step++, cutName.Data()); //Step for the cut with MC truth } @@ -241,24 +255,29 @@ void AliDielectronCF::Fill(UInt_t mask, const TObject *particle) // Fill steps // //============// // step 0 would be full MC truth and is handled in FillMC - Int_t step=1; + Int_t step=0; + if (fStepForMCtruth) ++step; //No cuts (MC truth) - if (isMCTruth) fCfContainer->Fill(values,step); - ++step; - - //All cuts, - if (mask == selectedMask){ - fCfContainer->Fill(values,step); - ++step; + if (fStepForNoCutsMCmotherPid){ if (isMCTruth) fCfContainer->Fill(values,step); ++step; - } else { - step+=2; } - + + //All cuts + if (fStepForAfterAllCuts){ + if (mask == selectedMask){ + fCfContainer->Fill(values,step); + ++step; + if (isMCTruth) fCfContainer->Fill(values,step); + ++step; + } else { + step+=2; + } + } + //Steps for each of the cuts - if (fStepsForEachCut){ + if (fStepsForEachCut&&fNCuts>1){ for (Int_t iCut=0; iCutFill(values,step); @@ -306,6 +325,8 @@ void AliDielectronCF::FillMC(const TObject *particle) // // fill MC part of the Container // + if (!fStepForMCtruth) return; + Double_t valuesAll[AliDielectronVarManager::kNMaxValues]; AliDielectronVarManager::Fill(particle,valuesAll); diff --git a/PWG3/dielectron/AliDielectronCF.h b/PWG3/dielectron/AliDielectronCF.h index 0e252ad4971..272791c982b 100644 --- a/PWG3/dielectron/AliDielectronCF.h +++ b/PWG3/dielectron/AliDielectronCF.h @@ -36,8 +36,11 @@ public: AliDielectronCF(const char* name, const char* title); virtual ~AliDielectronCF(); - void SetStepsForEachCut(Bool_t steps=kTRUE) { fStepsForEachCut=steps; } - void SetStepsForCutsIncreasing(Bool_t steps=kTRUE) { fStepsForCutsIncreasing=steps; } + void SetStepForMCtruth(Bool_t steps=kTRUE) { fStepForMCtruth=steps; } + void SetStepForNoCutsMCmotherPid(Bool_t steps=kTRUE) { fStepForNoCutsMCmotherPid=steps; } + void SetStepForAfterAllCuts(Bool_t steps=kTRUE) { fStepForAfterAllCuts=steps; } + void SetStepsForEachCut(Bool_t steps=kTRUE) { fStepsForEachCut=steps; } + void SetStepsForCutsIncreasing(Bool_t steps=kTRUE) { fStepsForCutsIncreasing=steps; } void SetPdgMother(Int_t pdg) { fPdgMother=pdg; } @@ -52,7 +55,7 @@ public: AliCFContainer* GetContainer() const { return fCfContainer; } -private: +// private: UInt_t fVariables[AliDielectronVarManager::kNMaxValues]; //configured variables Int_t fNSteps; // number of selection steps @@ -63,9 +66,12 @@ private: Int_t fNCuts; // Number of cuts in the filter concerned - Bool_t fStepsForEachCut; //create steps for each cut? - Bool_t fStepsForCutsIncreasing; //create steps for increasing cut combinatons? - //e.g. cut1&cut2, cut1&cut2&cut3 ... + Bool_t fStepForMCtruth; //create a step for the MC truth + Bool_t fStepForNoCutsMCmotherPid; //create a step for before cuts, but with MC truth of the mother + Bool_t fStepForAfterAllCuts; //create a step for before cuts, but with MC truth of the mother + Bool_t fStepsForEachCut; //create steps for each cut? + Bool_t fStepsForCutsIncreasing; //create steps for increasing cut combinatons? + //e.g. cut1&cut2, cut1&cut2&cut3 ... UInt_t fStepMasks[kNmaxAddSteps]; //steps for additional cut combinatons UInt_t fNStepMasks; //number of configured step masks @@ -76,7 +82,7 @@ private: AliDielectronCF(const AliDielectronCF &c); AliDielectronCF &operator=(const AliDielectronCF &c); - ClassDef(AliDielectronCF,1) //Dielectron Correction Framework handler + ClassDef(AliDielectronCF,2) //Dielectron Correction Framework handler }; #endif diff --git a/PWG3/dielectron/AliDielectronVarCuts.cxx b/PWG3/dielectron/AliDielectronVarCuts.cxx index 68b6cff7c4f..43161841698 100644 --- a/PWG3/dielectron/AliDielectronVarCuts.cxx +++ b/PWG3/dielectron/AliDielectronVarCuts.cxx @@ -29,7 +29,7 @@ #include "AliDielectronVarCuts.h" - +#include "AliDielectronMC.h" ClassImp(AliDielectronVarCuts) @@ -38,7 +38,9 @@ AliDielectronVarCuts::AliDielectronVarCuts() : AliAnalysisCuts(), fNActiveCuts(0), fActiveCutsMask(0), - fSelectedCutsMask(0) + fSelectedCutsMask(0), + fCutOnMCtruth(kFALSE), + fCutType(kAll) { // // Default costructor @@ -55,7 +57,9 @@ AliDielectronVarCuts::AliDielectronVarCuts(const char* name, const char* title) AliAnalysisCuts(name,title), fNActiveCuts(0), fActiveCutsMask(0), - fSelectedCutsMask(0) + fSelectedCutsMask(0), + fCutOnMCtruth(kFALSE), + fCutType(kAll) { // // Named contructor @@ -82,23 +86,37 @@ Bool_t AliDielectronVarCuts::IsSelected(TObject* track) // Make cut decision // - Double_t values[AliDielectronVarManager::kNMaxValues]; - AliDielectronVarManager::Fill(track,values); + //reset fSelectedCutsMask=0; SetSelected(kFALSE); + + if (!track) return kFALSE; + + //If MC cut, get MC truth + if (fCutOnMCtruth){ + AliVParticle *part=static_cast(track); + track=AliDielectronMC::Instance()->GetMCTrackFromMCEvent(part->GetLabel()); + if (!track) return kFALSE; + } + + //Fill values + Double_t values[AliDielectronVarManager::kNMaxValues]; + AliDielectronVarManager::Fill(track,values); for (Int_t iCut=0; iCutfCutMax[cut]) ) CLRBIT(fSelectedCutsMask,iCut); + if ( (values[cut]fCutMax[iCut]) ) CLRBIT(fSelectedCutsMask,iCut); } + Bool_t isSelected=(fSelectedCutsMask==fActiveCutsMask); + if ( fCutType==kAny ) isSelected=(fSelectedCutsMask>0); SetSelected(isSelected); return isSelected; } //________________________________________________________________________ -void AliDielectronVarCuts::AddCut(Double_t min, Double_t max, AliDielectronVarManager::ValueTypes type) +void AliDielectronVarCuts::AddCut(AliDielectronVarManager::ValueTypes type, Double_t min, Double_t max) { // // Set cut range and activate it @@ -108,34 +126,11 @@ void AliDielectronVarCuts::AddCut(Double_t min, Double_t max, AliDielectronVarMa min=max; max=tmp; } - fCutMin[type]=min; - fCutMax[type]=max; - ActivateCut(type); -} - -//________________________________________________________________________ -void AliDielectronVarCuts::ActivateCut(AliDielectronVarManager::ValueTypes cutName) -{ - // - // Add the cut to the list of active cuts - // - - if (IsCutActive(cutName)) return; + fCutMin[fNActiveCuts]=min; + fCutMax[fNActiveCuts]=max; SETBIT(fActiveCutsMask,fNActiveCuts); - fActiveCuts[fNActiveCuts++]=(UChar_t)cutName; -} - -//________________________________________________________________________ -Bool_t AliDielectronVarCuts::IsCutActive(AliDielectronVarManager::ValueTypes cut) -{ - // - // Check if this cut is already activated - // - for (Int_t iCut=0; iCut