From 0c1383b531e11e5f7be9af71f6494c5046045c79 Mon Sep 17 00:00:00 2001 From: gconesab Date: Wed, 30 Jun 2010 23:00:28 +0000 Subject: [PATCH] Set the analysis parameters/cuts used in a folder in the output file, in TObjString format --- PWG4/PartCorrBase/AliAnaPartCorrBaseClass.h | 3 + PWG4/PartCorrBase/AliAnaPartCorrMaker.cxx | 52 +++++++--- PWG4/PartCorrBase/AliAnaPartCorrMaker.h | 9 +- .../AliAnalysisTaskParticleCorrelation.cxx | 22 ++++- .../AliAnalysisTaskParticleCorrelation.h | 5 +- PWG4/PartCorrDep/AliAnaCalorimeterQA.cxx | 24 +++++ PWG4/PartCorrDep/AliAnaCalorimeterQA.h | 2 + PWG4/PartCorrDep/AliAnaElectron.cxx | 98 ++++++++++--------- PWG4/PartCorrDep/AliAnaElectron.h | 6 +- PWG4/PartCorrDep/AliAnaParticleIsolation.cxx | 95 +++++++++--------- PWG4/PartCorrDep/AliAnaParticleIsolation.h | 4 +- PWG4/PartCorrDep/AliAnaPhoton.cxx | 65 ++++++------ PWG4/PartCorrDep/AliAnaPhoton.h | 6 +- PWG4/PartCorrDep/AliAnaPi0.cxx | 61 ++++++------ PWG4/PartCorrDep/AliAnaPi0.h | 4 +- PWG4/PartCorrDep/AliAnaPi0EbE.cxx | 63 ++++++------ PWG4/PartCorrDep/AliAnaPi0EbE.h | 6 +- PWG4/macros/AddTaskPartCorr.C | 15 ++- PWG4/macros/QA/AddTaskCalorimeterQA.C | 16 ++- 19 files changed, 335 insertions(+), 221 deletions(-) diff --git a/PWG4/PartCorrBase/AliAnaPartCorrBaseClass.h b/PWG4/PartCorrBase/AliAnaPartCorrBaseClass.h index 78ffec06eb0..7fde634a82f 100755 --- a/PWG4/PartCorrBase/AliAnaPartCorrBaseClass.h +++ b/PWG4/PartCorrBase/AliAnaPartCorrBaseClass.h @@ -15,6 +15,7 @@ class TClonesArray ; class TObjArray ; #include #include +class TObjString; //Analysis class AliESDCaloCluster; @@ -70,6 +71,8 @@ class AliAnaPartCorrBaseClass : public TObject { virtual void MakeMixingAnalysisFillHistograms() {;} + virtual TObjString * GetAnalysisCuts() {return 0x0;} + virtual Int_t GetDebug() const { return fDebug ; } virtual void SetDebug(Int_t d) { fDebug = d ; } diff --git a/PWG4/PartCorrBase/AliAnaPartCorrMaker.cxx b/PWG4/PartCorrBase/AliAnaPartCorrMaker.cxx index 1d20f5236b2..4e5987f4f64 100755 --- a/PWG4/PartCorrBase/AliAnaPartCorrMaker.cxx +++ b/PWG4/PartCorrBase/AliAnaPartCorrMaker.cxx @@ -47,7 +47,7 @@ TObject(), fOutputContainer(new TList ), fAnalysisContainer(new TList ), fMakeHisto(kFALSE), fMakeAOD(kFALSE), fMakeMixing(kFALSE), fAnaDebug(0), fReader(new AliCaloTrackReader()), fCaloUtils(new AliCalorimeterUtils()), -fAODBranchList(new TList ), fhNEvents(0x0) +fAODBranchList(new TList ),fCuts(new TList), fhNEvents(0x0) { //Default Ctor if(fAnaDebug > 1 ) printf("*** Analysis Maker Constructor *** \n"); @@ -64,7 +64,7 @@ fMakeHisto(maker.fMakeHisto), fMakeAOD(maker.fMakeAOD), fMakeMixing(maker.fMakeM fAnaDebug(maker.fAnaDebug), fReader(),//new AliCaloTrackReader(*maker.fReader)), fCaloUtils(),//(new AliCalorimeterUtils(*maker.fCaloUtils)), -fAODBranchList(new TList()), +fAODBranchList(new TList()), fCuts(new TList()), fhNEvents(maker.fhNEvents) { // cpy ctor @@ -121,27 +121,51 @@ AliAnaPartCorrMaker::~AliAnaPartCorrMaker() delete fAODBranchList ; } + if(fCuts){ + fCuts->Delete(); + delete fCuts; + } + // printf("====== Maker deleted \n"); } //________________________________________________________________________ -TList * AliAnaPartCorrMaker::GetAODBranchList() +TList * AliAnaPartCorrMaker::GetListOfAnalysisCuts() { -// Get any new output AOD branches from analysis and put them in a list -// The list is filled in the maker, and new branch passed to the analysis frame -// AliAnalysisTaskPartCorr - - for(Int_t iana = 0; iana < fAnalysisContainer->GetEntries(); iana++){ - - AliAnaPartCorrBaseClass * ana = ((AliAnaPartCorrBaseClass *) fAnalysisContainer->At(iana)) ; - if(ana->NewOutputAOD()) fAODBranchList->Add(ana->GetCreateOutputAODBranch()); - } - - return fAODBranchList ; + // Get the list of the cuts used for the analysis + // The list is filled in the maker, called by the task in LocalInit() and posted there + //printf("GetListOfAnalysis! \n"); + + for(Int_t iana = 0; iana < fAnalysisContainer->GetEntries(); iana++){ + AliAnaPartCorrBaseClass * ana = ((AliAnaPartCorrBaseClass *) fAnalysisContainer->At(iana)) ; + TObjString * objstring = ana->GetAnalysisCuts(); + //printf("analysis %d cuts %p\n",iana,objstring); + if(objstring)fCuts->Add(objstring); + } + //printf("Maker::GetEntries() %d\n",fCuts->GetEntries()); + return fCuts ; } +//________________________________________________________________________ +TList * AliAnaPartCorrMaker::GetAODBranchList() +{ + + // Get any new output AOD branches from analysis and put them in a list + // The list is filled in the maker, and new branch passed to the analysis frame + // AliAnalysisTaskPartCorr + + for(Int_t iana = 0; iana < fAnalysisContainer->GetEntries(); iana++){ + + AliAnaPartCorrBaseClass * ana = ((AliAnaPartCorrBaseClass *) fAnalysisContainer->At(iana)) ; + if(ana->NewOutputAOD()) fAODBranchList->Add(ana->GetCreateOutputAODBranch()); + } + + return fAODBranchList ; + +} + //________________________________________________________________________ TList *AliAnaPartCorrMaker::GetOutputContainer() { diff --git a/PWG4/PartCorrBase/AliAnaPartCorrMaker.h b/PWG4/PartCorrBase/AliAnaPartCorrMaker.h index f267899d91d..ab3dccb8049 100755 --- a/PWG4/PartCorrBase/AliAnaPartCorrMaker.h +++ b/PWG4/PartCorrBase/AliAnaPartCorrMaker.h @@ -38,6 +38,7 @@ class AliAnaPartCorrMaker : public TObject { //Setter and getters TList * GetAODBranchList() ; + TList * GetListOfAnalysisCuts(); TList * GetOutputContainer() ; Int_t GetAnaDebug() const { return fAnaDebug ; } @@ -89,10 +90,12 @@ class AliAnaPartCorrMaker : public TObject { AliCaloTrackReader * fReader ; // Pointer to reader AliCalorimeterUtils * fCaloUtils ; // Pointer to CalorimeterUtils - TList * fAODBranchList ; //! List with AOD branches created and needed in analysis - TH1I * fhNEvents; //! Number of events counter histogram + TList * fAODBranchList ; //! List with AOD branches created and needed in analysis + TList * fCuts ; //! List with analysis cuts + + TH1I * fhNEvents; //! Number of events counter histogram - ClassDef(AliAnaPartCorrMaker,4) + ClassDef(AliAnaPartCorrMaker,5) } ; diff --git a/PWG4/PartCorrBase/AliAnalysisTaskParticleCorrelation.cxx b/PWG4/PartCorrBase/AliAnalysisTaskParticleCorrelation.cxx index 3f37953b21d..4147e5714bf 100755 --- a/PWG4/PartCorrBase/AliAnalysisTaskParticleCorrelation.cxx +++ b/PWG4/PartCorrBase/AliAnalysisTaskParticleCorrelation.cxx @@ -45,7 +45,7 @@ AliAnalysisTaskParticleCorrelation::AliAnalysisTaskParticleCorrelation(): AliAnalysisTaskSE(), fAna(0x0), fOutputContainer(0x0), - fConfigName("") + fConfigName(""), fCuts(0x0) { // Default constructor } @@ -55,12 +55,12 @@ AliAnalysisTaskParticleCorrelation::AliAnalysisTaskParticleCorrelation(const cha AliAnalysisTaskSE(name), fAna(0x0), fOutputContainer(0x0), - fConfigName("") + fConfigName(""), fCuts(0x0) { // Default constructor DefineOutput(1, TList::Class()); - + DefineOutput(2, TList::Class()); // will contain cuts or local params } //_____________________________________________________ @@ -105,6 +105,22 @@ void AliAnalysisTaskParticleCorrelation::UserCreateOutputObjects() PostData(1,fOutputContainer); } +//_____________________________________________________ +void AliAnalysisTaskParticleCorrelation::LocalInit() +{ + // Local Initialization + + // Create cuts/param objects and publish to slot + //printf("LocalInit! \n"); + fCuts = fAna->GetListOfAnalysisCuts(); + //fCuts->SetOwner(kTRUE); + //printf("Cuts entries %d \n",fCuts->GetEntries()); + + // Post Data + for(Int_t i = 0; i < fCuts->GetEntries(); i++) PostData(2, fCuts->At(i)); + + Init(); +} //_____________________________________________________ void AliAnalysisTaskParticleCorrelation::Init() diff --git a/PWG4/PartCorrBase/AliAnalysisTaskParticleCorrelation.h b/PWG4/PartCorrBase/AliAnalysisTaskParticleCorrelation.h index d232d43b4c6..a6216c02652 100755 --- a/PWG4/PartCorrBase/AliAnalysisTaskParticleCorrelation.h +++ b/PWG4/PartCorrBase/AliAnalysisTaskParticleCorrelation.h @@ -31,7 +31,7 @@ class AliAnalysisTaskParticleCorrelation : public AliAnalysisTaskSE // Implementation of interface methods virtual void UserCreateOutputObjects(); virtual void Init(); - virtual void LocalInit() {Init();} + virtual void LocalInit() ; virtual void UserExec(Option_t *option); virtual void Terminate(Option_t *option); @@ -47,8 +47,9 @@ class AliAnalysisTaskParticleCorrelation : public AliAnalysisTaskSE AliAnaPartCorrMaker* fAna; // Pointer to the manager class TList * fOutputContainer ; //! Histogram container TString fConfigName ; // Configuration file name + TList * fCuts ; //! List with analysis cuts - ClassDef(AliAnalysisTaskParticleCorrelation, 2); // Analysis task for standard gamma correlation analysis + ClassDef(AliAnalysisTaskParticleCorrelation, 3); // Analysis task for standard gamma correlation analysis }; #endif //ALIANALYSISTASKPARTICLECORRELATION_H diff --git a/PWG4/PartCorrDep/AliAnaCalorimeterQA.cxx b/PWG4/PartCorrDep/AliAnaCalorimeterQA.cxx index 3601be9233b..1fd19981547 100755 --- a/PWG4/PartCorrDep/AliAnaCalorimeterQA.cxx +++ b/PWG4/PartCorrDep/AliAnaCalorimeterQA.cxx @@ -34,6 +34,7 @@ #include "TH2F.h" #include "TLegend.h" #include "TStyle.h" +#include //---- AliRoot system ---- #include "AliAnaCalorimeterQA.h" @@ -209,6 +210,29 @@ AliAnaCalorimeterQA::AliAnaCalorimeterQA(const AliAnaCalorimeterQA & qa) : //} +//________________________________________________________________________ +TObjString * AliAnaCalorimeterQA::GetAnalysisCuts() +{ + //Save parameters used for analysis + TString parList ; //this will be list of parameters used for this analysis. + char onePar[255] ; + + sprintf(onePar,"--- AliAnaCalorimeterQA ---\n") ; + parList+=onePar ; + sprintf(onePar,"Calorimeter: %s\n",fCalorimeter.Data()) ; + parList+=onePar ; + sprintf(onePar,"Time Cut : %2.2f < T < %2.2f ns \n",fTimeCutMin, fTimeCutMax) ; + parList+=onePar ; + + //Get parameters set in base class. + //parList += GetBaseParametersList() ; + + //Get parameters set in FiducialCut class (not available yet) + //parlist += GetFidCut()->GetFidCutParametersList() + + return new TObjString(parList) ; +} + //________________________________________________________________________ TList * AliAnaCalorimeterQA::GetCreateOutputObjects() diff --git a/PWG4/PartCorrDep/AliAnaCalorimeterQA.h b/PWG4/PartCorrDep/AliAnaCalorimeterQA.h index 769f4378962..4bb7814ec96 100755 --- a/PWG4/PartCorrDep/AliAnaCalorimeterQA.h +++ b/PWG4/PartCorrDep/AliAnaCalorimeterQA.h @@ -14,6 +14,7 @@ class TH3F; class TH2F; class TH1F; +class TObjString; // --- Analysis system --- class AliESDCaloCluster; @@ -37,6 +38,7 @@ public: const Int_t nTracksMatched, const TObject* track, const Int_t * labels, const Int_t nLabels); + TObjString * GetAnalysisCuts(); TList * GetCreateOutputObjects(); void Init(); diff --git a/PWG4/PartCorrDep/AliAnaElectron.cxx b/PWG4/PartCorrDep/AliAnaElectron.cxx index 6c198da6d68..496555969a7 100755 --- a/PWG4/PartCorrDep/AliAnaElectron.cxx +++ b/PWG4/PartCorrDep/AliAnaElectron.cxx @@ -29,7 +29,7 @@ #include #include #include -//#include +#include //#include // --- Analysis system --- @@ -304,6 +304,55 @@ AliAnaElectron::~AliAnaElectron() } +//________________________________________________________________________ +TObjString * AliAnaElectron::GetAnalysisCuts() +{ + //Save parameters used for analysis + TString parList ; //this will be list of parameters used for this analysis. + char onePar[500] ; + + sprintf(onePar,"--- AliAnaElectron ---\n") ; + parList+=onePar ; + sprintf(onePar,"fCalorimeter: %s\n",fCalorimeter.Data()) ; + parList+=onePar ; + sprintf(onePar,"fpOverEmin: %f\n",fpOverEmin) ; + parList+=onePar ; + sprintf(onePar,"fpOverEmax: %f\n",fpOverEmax) ; + parList+=onePar ; + sprintf(onePar,"fResidualCut: %f\n",fResidualCut) ; + parList+=onePar ; + sprintf(onePar,"fMinClusEne: %f\n",fMinClusEne) ; + parList+=onePar ; + sprintf(onePar,"---DVM Btagging\n"); + parList+=onePar ; + sprintf(onePar,"max IP-cut (e,h): %f\n",fImpactCut); + parList+=onePar ; + sprintf(onePar,"min ITS-hits: %d\n",fITSCut); + parList+=onePar ; + sprintf(onePar,"max dR (e,h): %f\n",fDrCut); + parList+=onePar ; + sprintf(onePar,"max pairDCA: %f\n",fPairDcaCut); + parList+=onePar ; + sprintf(onePar,"max decaylength: %f\n",fDecayLenCut); + parList+=onePar ; + sprintf(onePar,"min Associated Pt: %f\n",fAssocPtCut); + parList+=onePar ; + sprintf(onePar,"---IPSig Btagging\n"); + parList+=onePar ; + sprintf(onePar,"min tag track: %d\n",fNTagTrkCut); + parList+=onePar ; + sprintf(onePar,"min IP significance: %f\n",fIPSigCut); + parList+=onePar ; + // + //Get parameters set in base class. + parList += GetBaseParametersList() ; + + //Get parameters set in FiducialCut class (not available yet) + //parlist += GetFidCut()->GetFidCutParametersList() + + return new TObjString(parList) ; + +} //________________________________________________________________________ TList * AliAnaElectron::GetCreateOutputObjects() @@ -553,52 +602,7 @@ TList * AliAnaElectron::GetCreateOutputObjects() }//Histos with MC - //Save parameters used for analysis -// TString parList ; //this will be list of parameters used for this analysis. -// char onePar[500] ; -// -// sprintf(onePar,"--- AliAnaElectron ---\n") ; -// parList+=onePar ; -// sprintf(onePar,"fCalorimeter: %s\n",fCalorimeter.Data()) ; -// parList+=onePar ; -// sprintf(onePar,"fpOverEmin: %f\n",fpOverEmin) ; -// parList+=onePar ; -// sprintf(onePar,"fpOverEmax: %f\n",fpOverEmax) ; -// parList+=onePar ; -// sprintf(onePar,"fResidualCut: %f\n",fResidualCut) ; -// parList+=onePar ; -// sprintf(onePar,"fMinClusEne: %f\n",fMinClusEne) ; -// parList+=onePar ; -// sprintf(onePar,"---DVM Btagging\n"); -// parList+=onePar ; -// sprintf(onePar,"max IP-cut (e,h): %f\n",fImpactCut); -// parList+=onePar ; -// sprintf(onePar,"min ITS-hits: %d\n",fITSCut); -// parList+=onePar ; -// sprintf(onePar,"max dR (e,h): %f\n",fDrCut); -// parList+=onePar ; -// sprintf(onePar,"max pairDCA: %f\n",fPairDcaCut); -// parList+=onePar ; -// sprintf(onePar,"max decaylength: %f\n",fDecayLenCut); -// parList+=onePar ; -// sprintf(onePar,"min Associated Pt: %f\n",fAssocPtCut); -// parList+=onePar ; -// sprintf(onePar,"---IPSig Btagging\n"); -// parList+=onePar ; -// sprintf(onePar,"min tag track: %d\n",fNTagTrkCut); -// parList+=onePar ; -// sprintf(onePar,"min IP significance: %f\n",fIPSigCut); -// parList+=onePar ; -// -// //Get parameters set in base class. -// parList += GetBaseParametersList() ; -// -// //Get parameters set in FiducialCut class (not available yet) -// //parlist += GetFidCut()->GetFidCutParametersList() -// -// TObjString *oString= new TObjString(parList) ; -// outputContainer->Add(oString); - + return outputContainer ; } diff --git a/PWG4/PartCorrDep/AliAnaElectron.h b/PWG4/PartCorrDep/AliAnaElectron.h index 0cdebef9e89..f630556ecce 100755 --- a/PWG4/PartCorrDep/AliAnaElectron.h +++ b/PWG4/PartCorrDep/AliAnaElectron.h @@ -18,6 +18,7 @@ class TH2F ; class TString ; class TNtuple ; class TH3F; +class TObjString; // --- ANALYSIS system --- #include "AliAnaPartCorrBaseClass.h" @@ -37,8 +38,9 @@ class AliAnaElectron : public AliAnaPartCorrBaseClass { AliAnaElectron & operator = (const AliAnaElectron & g) ;//cpy assignment public: - - TList * GetCreateOutputObjects(); + + TObjString * GetAnalysisCuts(); + TList * GetCreateOutputObjects(); void Init(); diff --git a/PWG4/PartCorrDep/AliAnaParticleIsolation.cxx b/PWG4/PartCorrDep/AliAnaParticleIsolation.cxx index 810d910b554..85d5995f3a4 100755 --- a/PWG4/PartCorrDep/AliAnaParticleIsolation.cxx +++ b/PWG4/PartCorrDep/AliAnaParticleIsolation.cxx @@ -28,7 +28,7 @@ // --- ROOT system --- #include #include -//#include +#include #include //#include #include @@ -309,6 +309,54 @@ Bool_t AliAnaParticleIsolation::CheckInvMass(const Int_t iaod, const AliAODPWG4P return kFALSE; } +//________________________________________________________________________ +TObjString * AliAnaParticleIsolation::GetAnalysisCuts() +{ + //Save parameters used for analysis + TString parList ; //this will be list of parameters used for this analysis. + char onePar[255] ; + + sprintf(onePar,"--- AliAnaParticleIsolation ---\n") ; + parList+=onePar ; + sprintf(onePar,"Calorimeter: %s\n",fCalorimeter.Data()) ; + parList+=onePar ; + sprintf(onePar,"fReMakeIC =%d (Flag for reisolation during histogram filling) \n",fReMakeIC) ; + parList+=onePar ; + sprintf(onePar,"fMakeSeveralIC=%d (Flag for isolation with several cuts at the same time ) \n",fMakeSeveralIC) ; + parList+=onePar ; + sprintf(onePar,"fMakeInvMass=%d (Flag for rejection of candidates with a pi0 inv mass pair) \n",fMakeInvMass) ; + parList+=onePar ; + + if(fMakeSeveralIC){ + sprintf(onePar,"fNCones =%d (Number of cone sizes) \n",fNCones) ; + parList+=onePar ; + sprintf(onePar,"fNPtThresFrac=%d (Flag for isolation with several cuts at the same time ) \n",fNPtThresFrac) ; + parList+=onePar ; + + for(Int_t icone = 0; icone < fNCones ; icone++){ + sprintf(onePar,"fConeSizes[%d]=%1.2f (isolation cone size) \n",icone, fConeSizes[icone]) ; + parList+=onePar ; + } + for(Int_t ipt = 0; ipt < fNPtThresFrac ; ipt++){ + sprintf(onePar,"fPtThresholds[%d]=%1.2f (isolation pt threshold) \n",ipt, fPtThresholds[ipt]) ; + parList+=onePar ; + } + for(Int_t ipt = 0; ipt < fNPtThresFrac ; ipt++){ + sprintf(onePar,"fPtFractions[%d]=%1.2f (isolation pt fraction threshold) \n",ipt, fPtFractions[ipt]) ; + parList+=onePar ; + } + } + + //Get parameters set in base class. + parList += GetBaseParametersList() ; + + //Get parameters set in IC class. + if(!fMakeSeveralIC)parList += GetIsolationCut()->GetICParametersList() ; + + return new TObjString(parList) ; + +} + //________________________________________________________________________ TList * AliAnaParticleIsolation::GetCreateOutputObjects() { @@ -629,51 +677,6 @@ TList * AliAnaParticleIsolation::GetCreateOutputObjects() delete nmsHistos; } - //Save parameters used for analysis -// TString parList ; //this will be list of parameters used for this analysis. -// char onePar[255] ; -// -// sprintf(onePar,"--- AliAnaParticleIsolation ---\n") ; -// parList+=onePar ; -// sprintf(onePar,"Calorimeter: %s\n",fCalorimeter.Data()) ; -// parList+=onePar ; -// sprintf(onePar,"fReMakeIC =%d (Flag for reisolation during histogram filling) \n",fReMakeIC) ; -// parList+=onePar ; -// sprintf(onePar,"fMakeSeveralIC=%d (Flag for isolation with several cuts at the same time ) \n",fMakeSeveralIC) ; -// parList+=onePar ; -// sprintf(onePar,"fMakeInvMass=%d (Flag for rejection of candidates with a pi0 inv mass pair) \n",fMakeInvMass) ; -// parList+=onePar ; -// -// if(fMakeSeveralIC){ -// sprintf(onePar,"fNCones =%d (Number of cone sizes) \n",fNCones) ; -// parList+=onePar ; -// sprintf(onePar,"fNPtThresFrac=%d (Flag for isolation with several cuts at the same time ) \n",fNPtThresFrac) ; -// parList+=onePar ; -// -// for(Int_t icone = 0; icone < fNCones ; icone++){ -// sprintf(onePar,"fConeSizes[%d]=%1.2f (isolation cone size) \n",icone, fConeSizes[icone]) ; -// parList+=onePar ; -// } -// for(Int_t ipt = 0; ipt < fNPtThresFrac ; ipt++){ -// sprintf(onePar,"fPtThresholds[%d]=%1.2f (isolation pt threshold) \n",ipt, fPtThresholds[ipt]) ; -// parList+=onePar ; -// } -// for(Int_t ipt = 0; ipt < fNPtThresFrac ; ipt++){ -// sprintf(onePar,"fPtFractions[%d]=%1.2f (isolation pt fraction threshold) \n",ipt, fPtFractions[ipt]) ; -// parList+=onePar ; -// } -// } -// -// //Get parameters set in base class. -// parList += GetBaseParametersList() ; -// -// //Get parameters set in IC class. -// if(!fMakeSeveralIC)parList += GetIsolationCut()->GetICParametersList() ; -// -// TObjString *oString= new TObjString(parList) ; -// outputContainer->Add(oString); - - return outputContainer ; } diff --git a/PWG4/PartCorrDep/AliAnaParticleIsolation.h b/PWG4/PartCorrDep/AliAnaParticleIsolation.h index d481e22a683..1350f49a769 100755 --- a/PWG4/PartCorrDep/AliAnaParticleIsolation.h +++ b/PWG4/PartCorrDep/AliAnaParticleIsolation.h @@ -17,6 +17,7 @@ // --- ROOT system --- class TH2F; class TList ; +class TObjString; // --- ANALYSIS system --- #include "AliAnaPartCorrBaseClass.h" @@ -38,7 +39,8 @@ class AliAnaParticleIsolation : public AliAnaPartCorrBaseClass { Bool_t CheckInvMass(const Int_t icalo,const AliAODPWG4Particle * ph) const ; - TList * GetCreateOutputObjects(); + TObjString * GetAnalysisCuts(); + TList * GetCreateOutputObjects(); void MakeAnalysisFillAOD() ; diff --git a/PWG4/PartCorrDep/AliAnaPhoton.cxx b/PWG4/PartCorrDep/AliAnaPhoton.cxx index e172e959dc6..a14704adeba 100755 --- a/PWG4/PartCorrDep/AliAnaPhoton.cxx +++ b/PWG4/PartCorrDep/AliAnaPhoton.cxx @@ -27,7 +27,7 @@ // --- ROOT system --- #include #include -//#include +#include //#include #include "TParticle.h" @@ -162,6 +162,38 @@ AliAnaPhoton::~AliAnaPhoton() } +//________________________________________________________________________ +TObjString * AliAnaPhoton::GetAnalysisCuts() +{ + //Save parameters used for analysis + TString parList ; //this will be list of parameters used for this analysis. + char onePar[255] ; + + sprintf(onePar,"--- AliAnaPhoton ---\n") ; + parList+=onePar ; + sprintf(onePar,"Calorimeter: %s\n",fCalorimeter.Data()) ; + parList+=onePar ; + sprintf(onePar,"fMinDist =%2.2f (Minimal distance to bad channel to accept cluster) \n",fMinDist) ; + parList+=onePar ; + sprintf(onePar,"fMinDist2=%2.2f (Cuts on Minimal distance to study acceptance evaluation) \n",fMinDist2) ; + parList+=onePar ; + sprintf(onePar,"fMinDist3=%2.2f (One more cut on distance used for acceptance-efficiency study) \n",fMinDist3) ; + parList+=onePar ; + sprintf(onePar,"fRejectTrackMatch: %d\n",fRejectTrackMatch) ; + parList+=onePar ; + + //Get parameters set in base class. + parList += GetBaseParametersList() ; + + //Get parameters set in PID class. + parList += GetCaloPID()->GetPIDParametersList() ; + + //Get parameters set in FiducialCut class (not available yet) + //parlist += GetFidCut()->GetFidCutParametersList() + + return new TObjString(parList) ; +} + //________________________________________________________________________ TList * AliAnaPhoton::GetCreateOutputObjects() @@ -363,36 +395,7 @@ TList * AliAnaPhoton::GetCreateOutputObjects() outputContainer->Add(fhEtaUnknown) ; }//Histos with MC - - //Save parameters used for analysis -// TString parList ; //this will be list of parameters used for this analysis. -// char onePar[255] ; -// -// sprintf(onePar,"--- AliAnaPhoton ---\n") ; -// parList+=onePar ; -// sprintf(onePar,"Calorimeter: %s\n",fCalorimeter.Data()) ; -// parList+=onePar ; -// sprintf(onePar,"fMinDist =%2.2f (Minimal distance to bad channel to accept cluster) \n",fMinDist) ; -// parList+=onePar ; -// sprintf(onePar,"fMinDist2=%2.2f (Cuts on Minimal distance to study acceptance evaluation) \n",fMinDist2) ; -// parList+=onePar ; -// sprintf(onePar,"fMinDist3=%2.2f (One more cut on distance used for acceptance-efficiency study) \n",fMinDist3) ; -// parList+=onePar ; -// sprintf(onePar,"fRejectTrackMatch: %d\n",fRejectTrackMatch) ; -// parList+=onePar ; -// -// //Get parameters set in base class. -// parList += GetBaseParametersList() ; -// -// //Get parameters set in PID class. -// parList += GetCaloPID()->GetPIDParametersList() ; -// -// //Get parameters set in FiducialCut class (not available yet) -// //parlist += GetFidCut()->GetFidCutParametersList() -// -// TObjString *oString= new TObjString(parList) ; -// outputContainer->Add(oString); - + return outputContainer ; } diff --git a/PWG4/PartCorrDep/AliAnaPhoton.h b/PWG4/PartCorrDep/AliAnaPhoton.h index 69f5a82a092..e2c71cc07d2 100755 --- a/PWG4/PartCorrDep/AliAnaPhoton.h +++ b/PWG4/PartCorrDep/AliAnaPhoton.h @@ -17,6 +17,7 @@ class TH2F ; class TH1F; class TString ; +class TObjString; // --- ANALYSIS system --- #include "AliAnaPartCorrBaseClass.h" @@ -37,8 +38,9 @@ class AliAnaPhoton : public AliAnaPartCorrBaseClass { AliAnaPhoton & operator = (const AliAnaPhoton & g) ;//cpy assignment public: - - TList * GetCreateOutputObjects(); + + TObjString * GetAnalysisCuts(); + TList * GetCreateOutputObjects(); void Init(); diff --git a/PWG4/PartCorrDep/AliAnaPi0.cxx b/PWG4/PartCorrDep/AliAnaPi0.cxx index 71cbdec66a8..30643bafc88 100755 --- a/PWG4/PartCorrDep/AliAnaPi0.cxx +++ b/PWG4/PartCorrDep/AliAnaPi0.cxx @@ -32,7 +32,7 @@ #include "TPad.h" #include "TROOT.h" #include "TClonesArray.h" -//#include "TObjString.h" +#include "TObjString.h" //---- AliRoot system ---- #include "AliAnaPi0.h" @@ -156,6 +156,37 @@ void AliAnaPi0::InitParameters() //} + +//________________________________________________________________________________________________________________________________________________ +TObjString * AliAnaPi0::GetAnalysisCuts() +{ + //Save parameters used for analysis + TString parList ; //this will be list of parameters used for this analysis. + char onePar[255] ; + sprintf(onePar,"--- AliAnaPi0 ---\n") ; + parList+=onePar ; + sprintf(onePar,"Number of bins in Centrality: %d \n",fNCentrBin) ; + parList+=onePar ; + sprintf(onePar,"Number of bins in Z vert. pos: %d \n",fNZvertBin) ; + parList+=onePar ; + sprintf(onePar,"Number of bins in Reac. Plain: %d \n",fNrpBin) ; + parList+=onePar ; + sprintf(onePar,"Depth of event buffer: %d \n",fNmaxMixEv) ; + parList+=onePar ; + sprintf(onePar,"Number of different PID used: %d \n",fNPID) ; + parList+=onePar ; + sprintf(onePar,"Cuts: \n") ; + parList+=onePar ; + sprintf(onePar,"Z vertex position: -%f < z < %f \n",fZvtxCut,fZvtxCut) ; + parList+=onePar ; + sprintf(onePar,"Calorimeter: %s \n",fCalorimeter.Data()) ; + parList+=onePar ; + sprintf(onePar,"Number of modules: %d \n",fNModules) ; + parList+=onePar ; + + return new TObjString(parList) ; +} + //________________________________________________________________________________________________________________________________________________ TList * AliAnaPi0::GetCreateOutputObjects() { @@ -337,34 +368,6 @@ TList * AliAnaPi0::GetCreateOutputObjects() outputContainer->Add(fhReMod[imod]) ; } - -// //Save parameters used for analysis -// TString parList ; //this will be list of parameters used for this analysis. -// char onePar[255] ; -// sprintf(onePar,"--- AliAnaPi0 ---\n") ; -// parList+=onePar ; -// sprintf(onePar,"Number of bins in Centrality: %d \n",fNCentrBin) ; -// parList+=onePar ; -// sprintf(onePar,"Number of bins in Z vert. pos: %d \n",fNZvertBin) ; -// parList+=onePar ; -// sprintf(onePar,"Number of bins in Reac. Plain: %d \n",fNrpBin) ; -// parList+=onePar ; -// sprintf(onePar,"Depth of event buffer: %d \n",fNmaxMixEv) ; -// parList+=onePar ; -// sprintf(onePar,"Number of different PID used: %d \n",fNPID) ; -// parList+=onePar ; -// sprintf(onePar,"Cuts: \n") ; -// parList+=onePar ; -// sprintf(onePar,"Z vertex position: -%f < z < %f \n",fZvtxCut,fZvtxCut) ; -// parList+=onePar ; -// sprintf(onePar,"Calorimeter: %s \n",fCalorimeter.Data()) ; -// parList+=onePar ; -// sprintf(onePar,"Number of modules: %d \n",fNModules) ; -// parList+=onePar ; -// -// TObjString *oString= new TObjString(parList) ; -// outputContainer->Add(oString); - return outputContainer; } diff --git a/PWG4/PartCorrDep/AliAnaPi0.h b/PWG4/PartCorrDep/AliAnaPi0.h index f0187cb5e4d..8727f2162a2 100755 --- a/PWG4/PartCorrDep/AliAnaPi0.h +++ b/PWG4/PartCorrDep/AliAnaPi0.h @@ -16,6 +16,7 @@ class TList; class TH3D ; class TH2D ; +class TObjString; //Analysis class AliAODEvent ; @@ -33,7 +34,8 @@ class AliAnaPi0 : public AliAnaPartCorrBaseClass { public: - TList * GetCreateOutputObjects(); + TObjString * GetAnalysisCuts(); + TList * GetCreateOutputObjects(); void Print(const Option_t * opt) const; diff --git a/PWG4/PartCorrDep/AliAnaPi0EbE.cxx b/PWG4/PartCorrDep/AliAnaPi0EbE.cxx index e4ea0150e74..b87f7d00e1c 100755 --- a/PWG4/PartCorrDep/AliAnaPi0EbE.cxx +++ b/PWG4/PartCorrDep/AliAnaPi0EbE.cxx @@ -28,7 +28,7 @@ // --- ROOT system --- #include #include -//#include +#include #include //#include "Riostream.h" @@ -111,6 +111,38 @@ AliAnaPi0EbE::~AliAnaPi0EbE() } } +//________________________________________________________________________ +TObjString * AliAnaPi0EbE::GetAnalysisCuts() +{ + //Save parameters used for analysis + TString parList ; //this will be list of parameters used for this analysis. + char onePar[255] ; + + sprintf(onePar,"--- AliAnaPi0EbE ---\n") ; + parList+=onePar ; + sprintf(onePar,"fAnaType=%d (Pi0 selection type) \n",fAnaType) ; + parList+=onePar ; + + if(fAnaType == kSSCalo){ + sprintf(onePar,"Calorimeter: %s\n",fCalorimeter.Data()) ; + parList+=onePar ; + sprintf(onePar,"fMinDist =%2.2f (Minimal distance to bad channel to accept cluster) \n",fMinDist) ; + parList+=onePar ; + sprintf(onePar,"fMinDist2=%2.2f (Cuts on Minimal distance to study acceptance evaluation) \n",fMinDist2) ; + parList+=onePar ; + sprintf(onePar,"fMinDist3=%2.2f (One more cut on distance used for acceptance-efficiency study) \n",fMinDist3) ; + parList+=onePar ; + } + + //Get parameters set in base class. + parList += GetBaseParametersList() ; + + //Get parameters set in PID class. + if(fAnaType == kSSCalo) parList += GetCaloPID()->GetPIDParametersList() ; + + return new TObjString(parList) ; +} + //________________________________________________________________________ TList * AliAnaPi0EbE::GetCreateOutputObjects() { @@ -200,35 +232,6 @@ TList * AliAnaPi0EbE::GetCreateOutputObjects() } - //Save parameters used for analysis -// TString parList ; //this will be list of parameters used for this analysis. -// char onePar[255] ; -// -// sprintf(onePar,"--- AliAnaPi0EbE ---\n") ; -// parList+=onePar ; -// sprintf(onePar,"fAnaType=%d (Pi0 selection type) \n",fAnaType) ; -// parList+=onePar ; -// -// if(fAnaType == kSSCalo){ -// sprintf(onePar,"Calorimeter: %s\n",fCalorimeter.Data()) ; -// parList+=onePar ; -// sprintf(onePar,"fMinDist =%2.2f (Minimal distance to bad channel to accept cluster) \n",fMinDist) ; -// parList+=onePar ; -// sprintf(onePar,"fMinDist2=%2.2f (Cuts on Minimal distance to study acceptance evaluation) \n",fMinDist2) ; -// parList+=onePar ; -// sprintf(onePar,"fMinDist3=%2.2f (One more cut on distance used for acceptance-efficiency study) \n",fMinDist3) ; -// parList+=onePar ; -// } -// -// //Get parameters set in base class. -// parList += GetBaseParametersList() ; -// -// //Get parameters set in PID class. -// if(fAnaType == kSSCalo) parList += GetCaloPID()->GetPIDParametersList() ; -// -// TObjString *oString= new TObjString(parList) ; -// outputContainer->Add(oString); - return outputContainer ; } diff --git a/PWG4/PartCorrDep/AliAnaPi0EbE.h b/PWG4/PartCorrDep/AliAnaPi0EbE.h index 18b46226600..6da8094e989 100755 --- a/PWG4/PartCorrDep/AliAnaPi0EbE.h +++ b/PWG4/PartCorrDep/AliAnaPi0EbE.h @@ -19,6 +19,7 @@ // --- ROOT system --- class TH2F ; class TList ; +class TObjString; // --- ANALYSIS system --- #include "AliAnaPartCorrBaseClass.h" @@ -35,8 +36,9 @@ class AliAnaPi0EbE : public AliAnaPartCorrBaseClass { public: enum anaTypes {kIMCalo, kSSCalo, kIMCaloTracks}; - - TList * GetCreateOutputObjects(); + + TObjString * GetAnalysisCuts(); + TList * GetCreateOutputObjects(); void Init(); void InitParameters(); diff --git a/PWG4/macros/AddTaskPartCorr.C b/PWG4/macros/AddTaskPartCorr.C index eab9a6de690..db7926828d9 100644 --- a/PWG4/macros/AddTaskPartCorr.C +++ b/PWG4/macros/AddTaskPartCorr.C @@ -218,6 +218,7 @@ AliAnalysisTaskParticleCorrelation *AddTaskPartCorr(TString data, TString calori AliIsolationCut * ic = anaisol->GetIsolationCut(); ic->SetConeSize(0.4); ic->SetPtThreshold(0.2); + ic->SetParticleTypeInCone(AliIsolationCut::kOnlyCharged); ic->SetICMethod(AliIsolationCut::kPtThresIC); if(kPrintSettings) ic->Print(""); @@ -474,6 +475,7 @@ AliAnalysisTaskParticleCorrelation *AddTaskPartCorr(TString data, TString calori //if(!kSimulation)task->SelectCollisionCandidates(); //AliPhysicsSelection has to be attached before. mgr->AddTask(task); + //Create containers char name[128]; sprintf(name,"PartCorr_%s",calorimeter.Data()); cout<<"Name of task "<CreateContainer(Form("PartCorr_%s",calorimeter.Data()), TList::Class(), AliAnalysisManager::kOutputContainer, Form("%s:PartCorr_%s",outputfile.Data(),calorimeter.Data())); - AliAnalysisDataContainer *cout_pc = mgr->CreateContainer(calorimeter.Data(), TList::Class(), AliAnalysisManager::kOutputContainer, Form("%s:PartCorr",outputfile.Data())); - + AliAnalysisDataContainer *cout_pc = mgr->CreateContainer(calorimeter.Data(), TList::Class(), + AliAnalysisManager::kOutputContainer, + Form("%s:PartCorr",outputfile.Data())); + + AliAnalysisDataContainer *cout_cuts = mgr->CreateContainer(Form("%sCuts",calorimeter.Data()), TList::Class(), + AliAnalysisManager::kParamContainer, + Form("%s:PartCorrCuts",outputfile.Data())); + // Create ONLY the output containers for the data produced by the task. // Get and connect other common input/output containers via the manager as below //============================================================================== @@ -491,7 +499,8 @@ AliAnalysisTaskParticleCorrelation *AddTaskPartCorr(TString data, TString calori // AOD output slot will be used in a different way in future if(!data.Contains("delta")) mgr->ConnectOutput (task, 0, mgr->GetCommonOutputContainer()); mgr->ConnectOutput (task, 1, cout_pc); - + mgr->ConnectOutput (task, 2, cout_cuts); + return task; } diff --git a/PWG4/macros/QA/AddTaskCalorimeterQA.C b/PWG4/macros/QA/AddTaskCalorimeterQA.C index eead6d51dbe..f54a6d3ac14 100644 --- a/PWG4/macros/QA/AddTaskCalorimeterQA.C +++ b/PWG4/macros/QA/AddTaskCalorimeterQA.C @@ -189,20 +189,26 @@ AliAnalysisTaskParticleCorrelation *AddTaskCalorimeterQA(TString data, Bool_t kP task->SetAnalysisMaker(maker); mgr->AddTask(task); + //Create containers // AliAnalysisDataContainer *cout_pc = mgr->CreateContainer("Calo.Performance",TList::Class(), // AliAnalysisManager::kOutputContainer, "Calo.Performance.root"); - TString outputfile = AliAnalysisManager::GetCommonFileName(); - AliAnalysisDataContainer *cout_pc = mgr->CreateContainer("CaloQA", TList::Class(), AliAnalysisManager::kOutputContainer, Form("%s:CaloQA",outputfile.Data())); - - + AliAnalysisDataContainer *cout_pc = mgr->CreateContainer("CaloQA", TList::Class(), + AliAnalysisManager::kOutputContainer, + Form("%s:CaloQA",outputfile.Data())); + + AliAnalysisDataContainer *cout_cuts = mgr->CreateContainer("CaloQACuts", TList::Class(), + AliAnalysisManager::kParamContainer, + Form("%s:CaloQACuts",outputfile.Data())); + //Form("%s:PartCorrCuts",outputfile.Data())); // Create ONLY the output containers for the data produced by the task. // Get and connect other common input/output containers via the manager as below //============================================================================== mgr->ConnectInput (task, 0, mgr->GetCommonInputContainer()); mgr->ConnectOutput (task, 1, cout_pc); - + mgr->ConnectOutput (task, 2, cout_cuts); + return task; } -- 2.43.0