#ifndef ALICALOPHOTONCUTS_H
#define ALICALOPHOTONCUTS_H
#include "AliConversionPhotonBase.h"
#include "AliAODConversionMother.h"
#include "AliAODTrack.h"
#include "AliESDtrack.h"
#include "AliVTrack.h"
#include "AliVCluster.h"
#include "AliAODTrack.h"
#include "AliStack.h"
#include "AliAnalysisCuts.h"
#include "TH1F.h"
#include "TF1.h"
#include "AliAnalysisUtils.h"
#include "AliAnalysisManager.h"
class AliESDEvent;
class AliAODEvent;
class AliConversionPhotonBase;
class TH1F;
class TH2F;
class TF1;
class AliPIDResponse;
class AliAnalysisCuts;
class iostream;
class TList;
class AliAnalysisManager;
class AliAODMCParticle;
using namespace std;
class AliCaloPhotonCuts : public AliAnalysisCuts {
public:
enum cutIds {
kClusterType,
kEtaMin,
kEtaMax,
kPhiMin,
kPhiMax,
kDistanceToBadChannel,
kTiming,
kTrackMatching,
kExoticCell,
kMinEnery,
kNMinCells,
kMinM02,
kMaxM02,
kMinM20,
kMaxM20,
kDispersion,
kNLM,
kNCuts
};
enum photonCuts {
kPhotonIn=0,
kDetector,
kAcceptance,
kClusterQuality,
kPhotonOut
};
static const char * fgkCutNames[kNCuts];
Bool_t SetCutIds(TString cutString);
Int_t fCuts[kNCuts];
Bool_t SetCut(cutIds cutID, Int_t cut);
Bool_t UpdateCutString();
void PrintCuts();
void PrintCutsWithValues();
Bool_t InitializeCutsFromCutString(const TString analysisCutSelection);
TString GetCutNumber();
Int_t GetClusterType() {return fClusterType; }
AliCaloPhotonCuts(const char *name="ClusterCuts", const char * title="Cluster Cuts");
AliCaloPhotonCuts(const AliCaloPhotonCuts&);
AliCaloPhotonCuts& operator=(const AliCaloPhotonCuts&);
virtual ~AliCaloPhotonCuts();
virtual Bool_t IsSelected(TObject* ) {return kTRUE;}
virtual Bool_t IsSelected(TList* ) {return kTRUE;}
Bool_t ClusterIsSelected(AliVCluster* cluster, AliVEvent *event, Bool_t isMC);
Bool_t ClusterIsSelectedMC(TParticle *particle,AliStack *fMCStack);
Bool_t ClusterIsSelectedAODMC(AliAODMCParticle *particle,TClonesArray *aodmcArray);
void InitCutHistograms(TString name="");
void SetFillCutHistograms(TString name="") {if(!fHistograms){InitCutHistograms(name);}}
TList* GetCutHistograms() {return fHistograms;}
void FillClusterCutIndex(Int_t photoncut) {if(fHistCutIndex)fHistCutIndex->Fill(photoncut);}
void SetExtendedMatching(Bool_t extendedMatching) {fExtendedMatching = extendedMatching;}
Bool_t AcceptanceCuts(AliVCluster* cluster, AliVEvent *event);
Bool_t ClusterQualityCuts(AliVCluster* cluster,AliVEvent *event, Bool_t isMC);
Bool_t MatchConvPhotonToCluster(AliAODConversionPhoton* convPhoton, AliVCluster* cluster, AliVEvent* event );
Bool_t SetClusterTypeCut(Int_t);
Bool_t SetMinEtaCut(Int_t);
Bool_t SetMaxEtaCut(Int_t);
Bool_t SetMinPhiCut(Int_t);
Bool_t SetMaxPhiCut(Int_t);
Bool_t SetDistanceToBadChannelCut(Int_t);
Bool_t SetTimingCut(Int_t);
Bool_t SetTrackMatchingCut(Int_t);
Bool_t SetExoticCellCut(Int_t);
Bool_t SetMinEnergyCut(Int_t);
Bool_t SetMinNCellsCut(Int_t);
Bool_t SetMaxM02(Int_t);
Bool_t SetMinM02(Int_t);
Bool_t SetMaxM20(Int_t);
Bool_t SetMinM20(Int_t);
Bool_t SetDispersion(Int_t);
Bool_t SetNLM(Int_t);
protected:
TList *fHistograms;
Int_t fClusterType;
Double_t fMinEtaCut;
Double_t fMaxEtaCut;
Bool_t fUseEtaCut;
Double_t fMinPhiCut;
Double_t fMaxPhiCut;
Bool_t fUsePhiCut;
Double_t fMinDistanceToBadChannel;
Bool_t fUseDistanceToBadChannel;
Double_t fMaxTimeDiff;
Bool_t fUseTimeDiff;
Double_t fMaxDistTrackToClusterEta;
Double_t fMinDistTrackToClusterPhi;
Double_t fMaxDistTrackToClusterPhi;
Bool_t fUseDistTrackToCluster;
Bool_t fExtendedMatching;
Double_t fExoticCell;
Bool_t fUseExoticCell;
Double_t fMinEnergy;
Bool_t fUseMinEnergy;
Int_t fMinNCells;
Bool_t fUseNCells;
Double_t fMaxM02;
Double_t fMinM02;
Bool_t fUseM02;
Double_t fMaxM20;
Double_t fMinM20;
Bool_t fUseM20;
Double_t fMaxDispersion;
Bool_t fUseDispersion;
Int_t fMinNLM;
Int_t fMaxNLM;
Bool_t fUseNLM;
TObjString* fCutString;
TH1F* fHistCutIndex;
TH1F* fHistAcceptanceCuts;
TH1F* fHistClusterIdentificationCuts;
TH2F* fHistClusterEtavsPhiBeforeAcc;
TH2F* fHistClusterEtavsPhiAfterAcc;
TH2F* fHistClusterEtavsPhiAfterQA;
TH2F* fHistClusterTimevsEBeforeQA;
TH2F* fHistClusterTimevsEAfterQA;
TH1F* fHistEnergyOfClusterBeforeQA;
TH1F* fHistEnergyOfClusterAfterQA;
TH1F* fHistNCellsBeforeQA;
TH1F* fHistNCellsAfterQA;
TH1F* fHistM02BeforeQA;
TH1F* fHistM02AfterQA;
TH1F* fHistM20BeforeQA;
TH1F* fHistM20AfterQA;
TH1F* fHistDispersionBeforeQA;
TH1F* fHistDispersionAfterQA;
TH1F* fHistClusterRBeforeQA;
TH1F* fHistClusterRAfterQA;
TH2F* fHistClusterdEtadPhiBeforeQA;
TH2F* fHistClusterdEtadPhiAfterQA;
TH1F* fHistDistanceTrackToClusterBeforeQA;
TH1F* fHistDistanceTrackToClusterAfterQA;
TH2F* fHistClusterdEtadPhiPosTracksBeforeQA;
TH2F* fHistClusterdEtadPhiNegTracksBeforeQA;
TH2F* fHistClusterdEtadPhiPosTracksAfterQA;
TH2F* fHistClusterdEtadPhiNegTracksAfterQA;
TH2F* fHistClusterdEtadPhiPosTracks_P1_BeforeQA;
TH2F* fHistClusterdEtadPhiPosTracks_P14_BeforeQA;
TH2F* fHistClusterdEtadPhiPosTracks_P4_BeforeQA;
TH2F* fHistClusterdEtadPhiNegTracks_P1_BeforeQA;
TH2F* fHistClusterdEtadPhiNegTracks_P14_BeforeQA;
TH2F* fHistClusterdEtadPhiNegTracks_P4_BeforeQA;
TH2F* fHistClusterdEtadPtBeforeQA;
TH2F* fHistClusterdPhidPtBeforeQA;
TH2F* fHistClusterM20Pt_dPhiBeforeQA;
TH2F* fHistClusterM02Pt_dPhiBeforeQA;
TH2F* fHistClusterM20M02BeforeQA;
TH2F* fHistClusterM20M02AfterQA;
private:
ClassDef(AliCaloPhotonCuts,2)
};
#endif