class TObjArray ;
#include <TList.h>
#include <TObject.h>
+class TObjString;
//Analysis
+class AliESDCaloCluster;
class AliAODCaloCluster;
class AliAODCaloCells;
-class AliCaloTrackReader ;
-class AliCaloPID ;
-class AliFidutialCut ;
-class AliIsolationCut ;
-class AliMCAnalysisUtils ;
-class AliNeutralMesonSelection ;
+#include "AliCaloTrackReader.h"
+#include "AliCaloPID.h"
+#include "AliFiducialCut.h"
+#include "AliIsolationCut.h"
+#include "AliMCAnalysisUtils.h"
+#include "AliNeutralMesonSelection.h"
+#include "AliCalorimeterUtils.h"
class AliStack ;
class AliHeader ;
class AliGenEventHeader ;
#include "AliAODPWG4ParticleCorrelation.h"
+class AliEMCALGeoUtils;
+class AliPHOSGeoUtils;
class AliAnaPartCorrBaseClass : public TObject {
-public:
-
+ public:
AliAnaPartCorrBaseClass() ; // default ctor
+ virtual ~AliAnaPartCorrBaseClass() ; //virtual dtor
+
+ private:
AliAnaPartCorrBaseClass(const AliAnaPartCorrBaseClass & g) ; // cpy ctor
AliAnaPartCorrBaseClass & operator = (const AliAnaPartCorrBaseClass & g) ;//cpy assignment
- virtual ~AliAnaPartCorrBaseClass() ; //virtual dtor
-// virtual void AddAODCaloCluster(AliAODCaloCluster calo) ;
+ public:
+ // virtual void AddAODCaloCluster(AliAODCaloCluster calo) ;
virtual void AddAODParticle(AliAODPWG4Particle part) ;
// virtual void ConnectAODCaloClusters();
virtual void ConnectAODEMCALCells();
virtual void ConnectInputOutputAODBranches();
- virtual TList * GetCreateOutputObjects() { return (new TList) ;}
-
+ virtual TList * GetCreateOutputObjects() { return (new TList) ;}
+ //virtual TList * GetAnalysisOutputContainer() { return fAnaOutContainer ;}
+
virtual void AddToHistogramsName(TString add) { fAddToHistogramsName = add; }
virtual TString GetAddedHistogramsStringToName() {return fAddToHistogramsName ;}
virtual void MakeAnalysisFillHistograms() {;}
+ virtual void MakeMixingAnalysisFillHistograms() {;}
+
+ virtual TObjString * GetAnalysisCuts() {return 0x0;}
+
virtual Int_t GetDebug() const { return fDebug ; }
virtual void SetDebug(Int_t d) { fDebug = d ; }
virtual Int_t GetEventNumber() const ;
virtual AliCaloTrackReader * GetReader() const {return fReader ; }
- virtual void SetReader(AliCaloTrackReader * reader) { fReader = reader ; }
+ virtual void SetReader(AliCaloTrackReader * const reader) { fReader = reader ; }
+ //Calorimeter helper class access methods
+ AliEMCALGeoUtils * GetEMCALGeometry() const { return fCaloUtils->GetEMCALGeometry(); }
+ AliPHOSGeoUtils * GetPHOSGeometry() const { return fCaloUtils->GetPHOSGeometry() ; }
+
+ Int_t GetModuleNumberCellIndexes(const Int_t absId, const TString calo, Int_t & icol, Int_t & irow, Int_t &iRCU) const {
+ return fCaloUtils->GetModuleNumberCellIndexes(absId, calo, icol, irow,iRCU);}
+ Int_t GetModuleNumber(AliAODPWG4Particle * part) const {
+ return fCaloUtils->GetModuleNumber(part, fReader->GetInputEvent());}
+ Int_t GetModuleNumber(AliESDCaloCluster * cluster) const {
+ return fCaloUtils->GetModuleNumber(cluster);}
+ Int_t GetModuleNumber(AliAODCaloCluster * cluster) const {
+ return fCaloUtils->GetModuleNumber(cluster);}
+
virtual void Terminate(TList * /*outputList*/) {;}
//analysis AOD branch
virtual Bool_t NewOutputAOD() const {return fNewAOD;}
virtual TString GetOutputAODClassName() const {return fOutputAODClassName;}
virtual void SetOutputAODClassName(TString name) {fOutputAODClassName = name; }
-
+ virtual AliCalorimeterUtils * GetCaloUtils() const {return fCaloUtils ; }
+ void SetCaloUtils(AliCalorimeterUtils * caloutils) { fCaloUtils = caloutils ; }
+
virtual TString GetAODObjArrayName() const {return fAODObjArrayName;}
virtual void SetAODObjArrayName(TString name) {fAODObjArrayName = name; }
virtual TClonesArray* GetInputAODBranch() const {return fInputAODBranch ;}
- virtual TClonesArray* GetOutputAODBranch() const {return fOutputAODBranch ;}
-
+ virtual TClonesArray* GetOutputAODBranch() const {if(fNewAOD) return fOutputAODBranch; else return fInputAODBranch ;}
+ virtual TClonesArray* GetAODBranch(TString aodBranchName) const ;
+
// virtual TClonesArray* GetAODCaloClusters() const {return fAODCaloClusters ;}
virtual TClonesArray* GetAODCaloClusters() const ;
virtual TClonesArray* GetAODTracks() const ;
virtual AliGenEventHeader* GetMCGenEventHeader() const ;
//Analysis helpers classes pointers setters and getters
- virtual AliCaloPID * GetCaloPID() const {return fCaloPID ;}
- virtual void SetCaloPID(AliCaloPID * pid) { fCaloPID = pid ;}
-
- virtual AliFidutialCut * GetFidutialCut() const {return fFidCut ;}
- virtual void SetFidutialCut(AliFidutialCut * fc) { fFidCut = fc ;}
+ virtual AliCaloPID * GetCaloPID() {if(!fCaloPID) fCaloPID = new AliCaloPID(); return fCaloPID ;}
+ virtual void SetCaloPID(AliCaloPID * const pid) { fCaloPID = pid ;}
- virtual AliIsolationCut * GetIsolationCut() const {return fIC ;}
- virtual void SetIsolationCut(AliIsolationCut * fc) { fIC = fc ;}
+ virtual AliFiducialCut * GetFiducialCut() {if(fFidCut) fFidCut = new AliFiducialCut(); return fFidCut ;}
+ virtual void SetFiducialCut(AliFiducialCut * const fc) { fFidCut = fc ;}
- virtual AliMCAnalysisUtils * GetMCAnalysisUtils() const {return fMCUtils ;}
- virtual void SetMCAnalysisUtils(AliMCAnalysisUtils * mcutils) { fMCUtils = mcutils ;}
+ virtual AliIsolationCut * GetIsolationCut() {if(!fIC) fIC = new AliIsolationCut(); return fIC ;}
+ virtual void SetIsolationCut(AliIsolationCut * const ic) { fIC = ic ;}
- virtual AliNeutralMesonSelection * GetNeutralMesonSelection() const {return fNMS ;}
- virtual void SetNeutralMesonSelection(AliNeutralMesonSelection * nms) { fNMS = nms ;}
+ virtual AliMCAnalysisUtils * GetMCAnalysisUtils() {if(!fMCUtils) fMCUtils = new AliMCAnalysisUtils(); return fMCUtils ;}
+ virtual void SetMCAnalysisUtils(AliMCAnalysisUtils * const mcutils) { fMCUtils = mcutils ;}
- virtual Bool_t IsDataMC() const {return fDataMC ; }
- virtual void SwitchOnDataMC() {fDataMC = kTRUE ; }
- virtual void SwitchOffDataMC() {fDataMC = kFALSE ; }
-
- virtual Bool_t IsFidutialCutOn() const {return fCheckFidCut ; }
- virtual void SwitchOnFidutialCut() { fCheckFidCut = kTRUE;}
- virtual void SwitchOffFidutialCut() { fCheckFidCut = kFALSE;}
+ virtual AliNeutralMesonSelection * GetNeutralMesonSelection() {if(!fNMS) fNMS = new AliNeutralMesonSelection(); return fNMS ;}
+ virtual void SetNeutralMesonSelection(AliNeutralMesonSelection * const nms) { fNMS = nms ;}
+
+ virtual Bool_t IsDataMC() {return fDataMC ; }
+ virtual void SwitchOnDataMC() {fDataMC = kTRUE ; if(!fMCUtils)fMCUtils = new AliMCAnalysisUtils();}
+ virtual void SwitchOffDataMC() {fDataMC = kFALSE ; }
+
+ virtual Bool_t IsFiducialCutOn() { return fCheckFidCut ; }
+ virtual void SwitchOnFiducialCut() { fCheckFidCut = kTRUE; if(!fFidCut)fFidCut = new AliFiducialCut();}
+ virtual void SwitchOffFiducialCut() { fCheckFidCut = kFALSE;}
- virtual Bool_t IsCaloPIDOn() const {return fCheckCaloPID ; }
- virtual void SwitchOnCaloPID() { fCheckCaloPID = kTRUE;}
- virtual void SwitchOffCaloPID() { fCheckCaloPID = kFALSE;}
+ virtual Bool_t IsCaloPIDOn() { return fCheckCaloPID ; }
+ virtual void SwitchOnCaloPID() { fCheckCaloPID = kTRUE; if(!fCaloPID)fCaloPID = new AliCaloPID();}
+ virtual void SwitchOffCaloPID() { fCheckCaloPID = kFALSE;}
- virtual Bool_t IsCaloPIDRecalculationOn() const {return fRecalculateCaloPID ; }
- virtual void SwitchOnCaloPIDRecalculation() { fRecalculateCaloPID = kTRUE;}
- virtual void SwitchOffCaloPIDRecalculation() { fRecalculateCaloPID = kFALSE;}
+ virtual Bool_t IsCaloPIDRecalculationOn() { return fRecalculateCaloPID ; }
+ virtual void SwitchOnCaloPIDRecalculation() { fRecalculateCaloPID = kTRUE;}
+ virtual void SwitchOffCaloPIDRecalculation() { fRecalculateCaloPID = kFALSE;}
virtual Float_t GetMaxPt() const {return fMaxPt ; }
virtual Float_t GetMinPt() const {return fMinPt ; }
- virtual void SetMaxPt(Float_t pt) {fMaxPt = pt ; }
- virtual void SetMinPt(Float_t pt) {fMinPt = pt ; }
- void SetPtCutRange(Double_t ptmin, Double_t ptmax)
+ virtual void SetMaxPt(Float_t pt) {fMaxPt = pt ; }
+ virtual void SetMinPt(Float_t pt) {fMinPt = pt ; }
+ virtual void SetPtCutRange(Double_t ptmin, Double_t ptmax)
{ fMaxPt=ptmax; fMinPt=ptmin;}
//Histogrammes setters and getters
+ //Pt, Energy
virtual void SetHistoPtRangeAndNBins(Float_t min, Float_t max, Int_t n) {
- fHistoNPtBins = n ;
+ fHistoPtBins = n ;
fHistoPtMax = max ;
fHistoPtMin = min ;
}
- Int_t GetHistoNPtBins() const { return fHistoNPtBins ; }
- Float_t GetHistoPtMin() const { return fHistoPtMin ; }
- Float_t GetHistoPtMax() const { return fHistoPtMax ; }
+ virtual Int_t GetHistoPtBins() const { return fHistoPtBins; }
+ virtual Float_t GetHistoPtMin() const { return fHistoPtMin ; }
+ virtual Float_t GetHistoPtMax() const { return fHistoPtMax ; }
+ //Azimuthal angle
virtual void SetHistoPhiRangeAndNBins(Float_t min, Float_t max, Int_t n) {
- fHistoNPhiBins = n ;
- fHistoPhiMax = max ;
- fHistoPhiMin = min ;
+ fHistoPhiBins = n ;
+ fHistoPhiMax = max ;
+ fHistoPhiMin = min ;
}
- Int_t GetHistoNPhiBins() const { return fHistoNPhiBins ; }
- Float_t GetHistoPhiMin() const { return fHistoPhiMin ; }
- Float_t GetHistoPhiMax() const { return fHistoPhiMax ; }
+ virtual Int_t GetHistoPhiBins() const { return fHistoPhiBins; }
+ virtual Float_t GetHistoPhiMin() const { return fHistoPhiMin ; }
+ virtual Float_t GetHistoPhiMax() const { return fHistoPhiMax ; }
+ //Pseudorapidity-rapidity
virtual void SetHistoEtaRangeAndNBins(Float_t min, Float_t max, Int_t n) {
- fHistoNEtaBins = n ;
- fHistoEtaMax = max ;
- fHistoEtaMin = min ;
+ fHistoEtaBins = n ;
+ fHistoEtaMax = max ;
+ fHistoEtaMin = min ;
}
- Int_t GetHistoNEtaBins() const { return fHistoNEtaBins ; }
- Float_t GetHistoEtaMin() const { return fHistoEtaMin ; }
- Float_t GetHistoEtaMax() const { return fHistoEtaMax ; }
-
+ virtual Int_t GetHistoEtaBins() const { return fHistoEtaBins; }
+ virtual Float_t GetHistoEtaMin() const { return fHistoEtaMin ; }
+ virtual Float_t GetHistoEtaMax() const { return fHistoEtaMax ; }
+
+ //Mass
+ virtual void SetHistoMassRangeAndNBins(Float_t min, Float_t max, Int_t n) {
+ fHistoMassBins = n ;
+ fHistoMassMax = max ;
+ fHistoMassMin = min ;
+ }
+
+ virtual Int_t GetHistoMassBins() const { return fHistoMassBins ; }
+ virtual Float_t GetHistoMassMin() const { return fHistoMassMin ; }
+ virtual Float_t GetHistoMassMax() const { return fHistoMassMax ; }
+
+ //Asymetry
+ virtual void SetHistoAsymmetryRangeAndNBins(Float_t min, Float_t max, Int_t n) {
+ fHistoAsymBins = n ;
+ fHistoAsymMax = max ;
+ fHistoAsymMin = min ;
+ }
+
+ virtual Int_t GetHistoAsymmetryBins() const { return fHistoAsymBins ; }
+ virtual Float_t GetHistoAsymmetryMin() const { return fHistoAsymMin ; }
+ virtual Float_t GetHistoAsymmetryMax() const { return fHistoAsymMax ; }
+
private:
Bool_t fDataMC ; // Flag to access MC data when using ESD or AOD
AliAODCaloCells * fAODCaloCells ; //! selected PHOS/EMCAL CaloCells
//Analysis helper classes access pointers
- AliCaloPID * fCaloPID; // PID calculation
- AliFidutialCut * fFidCut; // Acceptance cuts
- AliIsolationCut * fIC; // Isolation cut
- AliMCAnalysisUtils * fMCUtils; // MonteCarlo Analysis utils
- AliNeutralMesonSelection * fNMS; // Neutral Meson Selection
-
+ AliCaloPID * fCaloPID; //! PID calculation
+ AliFiducialCut * fFidCut; //! Acceptance cuts
+ AliIsolationCut * fIC; //! Isolation cut
+ AliMCAnalysisUtils * fMCUtils; //! MonteCarlo Analysis utils
+ AliNeutralMesonSelection * fNMS; //! Neutral Meson Selection
+ AliCalorimeterUtils * fCaloUtils ; // Pointer to CalorimeterUtils
+
+ //TList * fAnaOutContainer; // Temporal histogram output container, contents to be added to the main container passed to the main analysis frame
+
//Histograms binning and range
- Int_t fHistoNPtBins ; // Number of bins in pt axis
- Float_t fHistoPtMax ; // Maximum value of pt histogram range
- Float_t fHistoPtMin ; // Minimum value of pt histogram range
- Int_t fHistoNPhiBins ; // Number of bins in phi axis
- Float_t fHistoPhiMax ; // Maximum value of phi histogram range
- Float_t fHistoPhiMin ; // Minimum value of phi histogram range
- Int_t fHistoNEtaBins ; // Number of bins in eta axis
- Float_t fHistoEtaMax ; // Maximum value of eta histogram range
- Float_t fHistoEtaMin ; // Minimum value of eta histogram range
-
- ClassDef(AliAnaPartCorrBaseClass,5)
+ Int_t fHistoPtBins ; // Number of bins in pt axis
+ Float_t fHistoPtMax ; // Maximum value of pt histogram range
+ Float_t fHistoPtMin ; // Minimum value of pt histogram range
+ Int_t fHistoPhiBins ; // Number of bins in phi axis
+ Float_t fHistoPhiMax ; // Maximum value of phi histogram range
+ Float_t fHistoPhiMin ; // Minimum value of phi histogram range
+ Int_t fHistoEtaBins ; // Number of bins in eta axis
+ Float_t fHistoEtaMax ; // Maximum value of eta histogram range
+ Float_t fHistoEtaMin ; // Minimum value of eta histogram range
+ Int_t fHistoMassBins ; // Number of bins in mass axis
+ Float_t fHistoMassMax ; // Maximum value of mass histogram range
+ Float_t fHistoMassMin ; // Minimum value of mass histogram range
+ Int_t fHistoAsymBins ; // Number of bins in asymmetry axis
+ Float_t fHistoAsymMax ; // Maximum value of asymmetry histogram range
+ Float_t fHistoAsymMin ; // Minimum value of asymmetry histogram range
+
+ ClassDef(AliAnaPartCorrBaseClass,7)
} ;