#ifndef ALIANALYSISTASKGAMMACONVERSION_H #define ALIANALYSISTASKGAMMACONVERSION_H /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * * See cxx source for full Copyright notice */ //////////////////////////////////////////////// //--------------------------------------------- // Class used to do analysis on conversion pairs //--------------------------------------------- //////////////////////////////////////////////// #include "AliAnalysisTaskSE.h" #include #include "AliV0Reader.h" #include "AliGammaConversionAODObject.h" class TNtuple; class AliGammaConversionHistograms; class AliESDv0; class AliKFParticle; class AliESDInputHandler; class AliESDEvent; class AliAODEvent; class TList; class AliStack; class AliESDtrackCuts; class AliAnalysisTaskGammaConversion : public AliAnalysisTaskSE { public: AliAnalysisTaskGammaConversion(); AliAnalysisTaskGammaConversion(const char* name); virtual ~AliAnalysisTaskGammaConversion() ;// virtual destructor // Implementation of interface methods virtual void UserCreateOutputObjects(); virtual void Init(); virtual void LocalInit() {Init();} virtual void Exec(Option_t *option); virtual void Terminate(Option_t *option); virtual void ConnectInputData(Option_t *); void ProcessMCData(); void ProcessV0sNoCut(); void ProcessV0s(); void ProcessGammasForNeutralMesonAnalysis(); // AOD TString GetAODBranchName() const {return fAODBranchName;} void SetAODBranchName(TString name) {fAODBranchName = name ;} void FillAODWithConversionGammas(); // end AOD // for GammaJetAnalysis void ProcessGammasForGammaJetAnalysis(); void CreateListOfChargedParticles(); Double_t GetMinimumDistanceToCharge(Int_t); void CalculateJetCone(Int_t); Int_t GetIndexHighestPtGamma(); void SetESDtrackCuts(); // end of Gamma Jet void SetMinPtForGammaJet(Double_t minPtForGammaJet){fMinPtForGammaJet=minPtForGammaJet;} void SetMinIsoConeSize(Double_t minIsoConeSize){fMinIsoConeSize=minIsoConeSize;} void SetMinPtIsoCone(Double_t minPtIsoCone){fMinPtIsoCone=minPtIsoCone;} void SetMinPtGamChargedCorr(Double_t minPtGamChargedCorr){fMinPtGamChargedCorr=minPtGamChargedCorr;} void SetMinPtJetCone(Double_t minPtJetCone){fMinPtJetCone=minPtJetCone;} void SetHistograms(AliGammaConversionHistograms *const histograms){fHistograms=histograms;} void SetDoMCTruth(Bool_t flag){fDoMCTruth=flag;} void SetDoNeutralMeson(Bool_t flag){fDoNeutralMeson=flag;} void SetDoJet(Bool_t flag){fDoJet=flag;} void SetDoChic(Bool_t flag){fDoChic=flag;} void SetElectronMass(Double_t electronMass){fElectronMass = electronMass;} void SetGammaMass(Double_t gammaMass){fGammaMass = gammaMass;} void SetGammaWidth(Double_t gammaWidth){fGammaWidth = gammaWidth;} void SetPi0Mass(Double_t pi0Mass){fPi0Mass = pi0Mass;} void SetPi0Width(Double_t pi0Width){fPi0Width = pi0Width;} void SetEtaMass(Double_t etaMass){fEtaMass = etaMass;} void SetEtaWidth(Double_t etaWidth){fEtaWidth = etaWidth;} void SetMinOpeningAngleGhostCut(Double_t ghostCut){fMinOpeningAngleGhostCut = ghostCut;} void SetV0Reader(AliV0Reader* const reader){fV0Reader=reader;} void SetCalculateBackground(Bool_t bg){fCalculateBackground=bg;} void CalculateBackground(); void SetWriteNtuple(Bool_t writeNtuple){fWriteNtuple = writeNtuple;} void FillNtuple(); Double_t GetMCOpeningAngle(TParticle* const daughter0, TParticle* const daughter1) const; void CheckV0Efficiency(); //////////////////Chi_c Analysis//////////////////////////// void GetPID(AliESDtrack *track, Stat_t &pid, Stat_t &weight); double GetSigmaToVertex(AliESDtrack* t); void ElectronBackground(TString hBg, vector e); void FillAngle(TString histoName,vector tlVeNeg, vector tlVePos); void FillElectronInvMass(TString histoName, vector negativeElectron, vector positiveElectron); void FillGammaElectronInvMass(TString histoMass,TString histoDiff,vector fKFGammas, vector tlVeNeg,vector tlVePos); void CleanWithAngleCuts(vector negativeElectrons, vector positiveElectrons, vector gammas); vector GetTLorentzVector(vector esdTrack); void ProcessGammaElectronsForChicAnalysis(); /////////////////////////////////////////////////////////////// private: AliAnalysisTaskGammaConversion(const AliAnalysisTaskGammaConversion&); // Not implemented AliAnalysisTaskGammaConversion& operator=(const AliAnalysisTaskGammaConversion&); // Not implemented AliV0Reader* fV0Reader; // The V0 reader object AliStack * fStack; // pointer to the MC particle stack AliESDEvent* fESDEvent; //pointer to the ESDEvent TList * fOutputContainer ; // Histogram container AliGammaConversionHistograms *fHistograms; // Pointer to the histogram handling class Bool_t fDoMCTruth; // Flag to switch on/off MC truth Bool_t fDoNeutralMeson; Bool_t fDoJet; Bool_t fDoChic; vector fMCAllGammas; // vector containing all MC gammas vector fMCPi0s; //vector containing all MC Pi0s vector fMCEtas; //vector containing all MC Etas vector fMCGammaChic; //vector containing all MC Chi_c's vector fKFReconstructedGammas; // vector containing all reconstructed gammas vector fIsTrueReconstructedGammas; // vector containing information if this was a true gamma or not (follows the index of fKFReconstructedGammas) vector fElectronv1; // vector containing index of electron 1 vector fElectronv2; // vector containing index of electron 2 ///////Chi_c Analysis/////////////////////////// vector fCurrentEventPosElectron; // comment here vector fPreviousEventPosElectron; //comment here vector fCurrentEventNegElectron; //comment here vector fPreviousEventNegElectron; //comment here vector fKFReconstructedGammasCut; //comment here vector fPreviousEventTLVNegElectron; //comment here vector fPreviousEventTLVPosElectron; //comment here ////////////////////////////////////////////////// //mass defines Double_t fElectronMass; //electron mass Double_t fGammaMass; //gamma mass Double_t fPi0Mass; //pi0mass Double_t fEtaMass; //eta mass // width defines Double_t fGammaWidth; //gamma width cut Double_t fPi0Width; // pi0 width cut Double_t fEtaWidth; // eta width cut Double_t fMinOpeningAngleGhostCut; // minimum angle cut AliESDtrackCuts* fEsdTrackCuts; // Object containing the parameters of the esd track cuts Bool_t fCalculateBackground; //flag to set backgrount calculation on/off Bool_t fWriteNtuple; // flag to set if writing to ntuple on/off TNtuple *fGammaNtuple; // Ntuple for gamma values TNtuple *fNeutralMesonNtuple;// NTuple for mesons Int_t fTotalNumberOfAddedNtupleEntries; // number of added ntuple entries vector fChargedParticles; vector fChargedParticlesId; Double_t fGammaPtHighest; Double_t fMinPtForGammaJet; Double_t fMinIsoConeSize; Double_t fMinPtIsoCone; Double_t fMinPtGamChargedCorr; Double_t fMinPtJetCone; Int_t fLeadingChargedIndex; TClonesArray* fAODBranch ; //! selected particles branch TString fAODBranchName; // New AOD branch name vector fAODObjects; ClassDef(AliAnalysisTaskGammaConversion, 4); // Analysis task for gamma conversions }; #endif //ALIANALYSISTASKGAMMA_H