ROOT logo
#ifndef ALICONVERSIONCUTS_H
#define ALICONVERSIONCUTS_H

// Class handling all kinds of selection cuts for Gamma Conversion analysis
// Authors: Svein Lindal, Daniel Lohner                                    *

#include "AliAODpidUtil.h"
#include "AliConversionPhotonBase.h"
#include "AliAODConversionMother.h"
#include "AliAODTrack.h"
#include "AliESDtrack.h"
#include "AliVTrack.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 AliKFVertex;
class TH1F;
class TH2F;
class TF1;
class AliPIDResponse;
class AliAnalysisCuts;
class iostream;
class TList;
class AliAnalysisManager;
class AliAODMCParticle;

using namespace std;

class AliConversionCuts : public AliAnalysisCuts {
      
   public: 
      

   enum cutIds {
      kisHeavyIon,                  
      kCentralityMin,               
      kCentralityMax,               
      kSelectSpecialTriggerAlias,                 
      kSelectSubTriggerClass,             
      kremovePileUp,                
      kExtraSignals, 
      kv0FinderType,                
      ketaCut,                                     
      kRCut,                     
      ksinglePtCut,                 
      kclsTPCCut,                   
      kededxSigmaCut,               
      kpidedxSigmaCut,              
      kpiMomdedxSigmaCut,        
      kpiMaxMomdedxSigmaCut,        
      kLowPRejectionSigmaCut,       
      kTOFelectronPID,              
      kQtMaxCut,                    
      kchi2GammaCut,                
      kPsiPair, 
      kdoPhotonAsymmetryCut,
      kCosPAngle,
      kElecShare,
      kToCloseV0s,
      kDcaRPrimVtx,
      kDcaZPrimVtx,
      kInPlaneOutOfPlane,
      kNCuts
   };

   enum photonCuts {
         kPhotonIn=0,
         kOnFly,
         kNoTracks,
         kTrackCuts,
         kdEdxCuts,
         kConvPointFail,
         kPhotonCuts,
         kEventPlane,
         kPhotonOut
   };


   Bool_t SetCutIds(TString cutString); 
   Int_t fCuts[kNCuts];
   Bool_t SetCut(cutIds cutID, Int_t cut);
   Bool_t UpdateCutString();


   static const char * fgkCutNames[kNCuts];

   Double_t GetCosineOfPointingAngle(const AliConversionPhotonBase * photon, AliVEvent * event) const; 


   Bool_t InitializeCutsFromCutString(const TString analysisCutSelection);
   void SelectCollisionCandidates(UInt_t offlineTriggerMask = AliVEvent::kAny) {
      fOfflineTriggerMask = offlineTriggerMask;
      fTriggerSelectedManually = kTRUE;
   }
   void SelectSpecialTrigger(UInt_t offlineTriggerMask = AliVEvent::kAny, TString TriggerClassName = "AliVEvent::kAny" ) {
      fOfflineTriggerMask = offlineTriggerMask;
      fSpecialTriggerName = TriggerClassName;
      cout << fSpecialTriggerName.Data() << endl;
      
   }   
   void FillElectonLabelArray(AliAODConversionPhoton* photon, Int_t nV0);
   void SetAcceptedHeader(TList *HeaderList){fHeaderList = HeaderList;}   
   void SetPreSelectionCutFlag(Bool_t preSelFlag){fPreSelCut = preSelFlag;}   
   TString *GetFoundHeader(){return fGeneratorNames;}

   Int_t GetEventQuality(){return fEventQuality;}
   Bool_t GetIsFromPileup(){return fRemovePileUp;}
   
   AliConversionCuts(const char *name="V0Cuts", const char * title="V0 Cuts");
   AliConversionCuts(const AliConversionCuts&);
   AliConversionCuts& operator=(const AliConversionCuts&);

   virtual ~AliConversionCuts();                            //virtual destructor

   static AliConversionCuts * GetStandardCuts2010PbPb();
   static AliConversionCuts * GetStandardCuts2010pp();

   virtual Bool_t IsSelected(TObject* /*obj*/){return kTRUE;}
   virtual Bool_t IsSelected(TList* /*list*/) {return kTRUE;}

   TString GetCutNumber();
   
   void GetCentralityRange(Double_t range[2]){range[0]=10*fCentralityMin;range[1]=10*fCentralityMax;};
   
   // Cut Selection
   Bool_t EventIsSelected(AliVEvent *fInputEvent, AliVEvent *fMCEvent);
   Int_t IsEventAcceptedByConversionCut(AliConversionCuts *ReaderCuts, AliVEvent *InputEvent, AliMCEvent *MCEvent, Int_t isHeavyIon);
   Bool_t PhotonIsSelected(AliConversionPhotonBase * photon, AliVEvent  * event);
   Bool_t PhotonIsSelectedMC(TParticle *particle,AliStack *fMCStack,Bool_t checkForConvertedGamma=kTRUE);
   Bool_t PhotonIsSelectedAODMC(AliAODMCParticle *particle,TClonesArray *aodmcArray,Bool_t checkForConvertedGamma=kTRUE);
   Bool_t ElectronIsSelectedMC(TParticle *particle,AliStack *fMCStack);
   Bool_t TracksAreSelected(AliVTrack * negTrack, AliVTrack * posTrack);
   Bool_t MesonIsSelected(AliAODConversionMother *pi0,Bool_t IsSignal=kTRUE);
   Bool_t MesonIsSelectedMC(TParticle *fMCMother,AliStack *fMCStack, Bool_t bMCDaughtersInAcceptance=kFALSE);

   void InitAODpidUtil(Int_t type);
   Bool_t InitPIDResponse();
   
   void SetPIDResponse(AliPIDResponse * pidResponse) {fPIDResponse = pidResponse;}
   AliPIDResponse * GetPIDResponse() { return fPIDResponse;}
   
   void PrintCuts();
   void PrintCutsWithValues();

   void InitCutHistograms(TString name="",Bool_t preCut = kTRUE);
   void SetFillCutHistograms(TString name="",Bool_t preCut = kTRUE){if(!fHistograms){InitCutHistograms(name,preCut);};}
   TList *GetCutHistograms(){return fHistograms;}
   void FillPhotonCutIndex(Int_t photoncut){if(hCutIndex)hCutIndex->Fill(photoncut);}
   void FillV0EtaBeforedEdxCuts(Float_t v0Eta){if(hEtaDistV0s)hEtaDistV0s->Fill(v0Eta);}
   void FillV0EtaAfterdEdxCuts(Float_t v0Eta){if(hEtaDistV0sAfterdEdxCuts)hEtaDistV0sAfterdEdxCuts->Fill(v0Eta);}
   void SetEtaShift(Double_t etaShift) {
      fEtaShift = etaShift;
   }
   void SetEtaShift(TString pPbOrPbp) {
      Double_t etaShift = 0.0;
      if(!pPbOrPbp.CompareTo("pPb"))      etaShift = -0.465;
      else if(!pPbOrPbp.CompareTo("Pbp")) etaShift =  0.465;
      
      fEtaShift = etaShift;
   }
   Double_t GetEtaShift() {return fEtaShift;}
   Bool_t GetDoEtaShift(){return fDoEtaShift;}
   void DoEtaShift(Bool_t doEtaShift){fDoEtaShift = doEtaShift;}
   void GetCorrectEtaShiftFromPeriod(TString periodName);
   
   static AliVTrack * GetTrack(AliVEvent * event, Int_t label);
   static AliESDtrack *GetESDTrack(AliESDEvent * event, Int_t label);
   
   ///Cut functions
   Bool_t SpecificTrackCuts(AliAODTrack * negTrack, AliAODTrack * posTrack,Int_t &cutIndex);
   Bool_t SpecificTrackCuts(AliESDtrack * negTrack, AliESDtrack * posTrack,Int_t &cutIndex);
   Bool_t AcceptanceCuts(AliConversionPhotonBase *photon);
   Bool_t AcceptanceCut(TParticle *particle, TParticle * ePos,TParticle* eNeg);
   Bool_t dEdxCuts(AliVTrack * track);
   Bool_t ArmenterosQtCut(AliConversionPhotonBase *photon);
   Bool_t AsymmetryCut(AliConversionPhotonBase *photon,AliVEvent *event);
   Bool_t PIDProbabilityCut(AliConversionPhotonBase *photon, AliVEvent * event);
   Bool_t SelectV0Finder(Bool_t onfly){
      if(onfly == fUseOnFlyV0Finder) return kTRUE;
      else return kFALSE;
   }
   Bool_t PhotonCuts(AliConversionPhotonBase *photon,AliVEvent *event);
   Bool_t CorrectedTPCClusterCut(AliConversionPhotonBase *photon, AliVEvent * event);
   Bool_t PsiPairCut(const AliConversionPhotonBase * photon) const;
   Bool_t CosinePAngleCut(const AliConversionPhotonBase * photon, AliVEvent * event) const;
   Bool_t RejectSharedElectronV0s(AliAODConversionPhoton* photon, Int_t nV0, Int_t nV0s);
   Bool_t RejectToCloseV0s(AliAODConversionPhoton* photon, TList *photons, Int_t nV0);
   Int_t IsParticleFromBGEvent(Int_t index, AliStack *MCStack, AliVEvent *InputEvent = 0x0);
   void GetNotRejectedParticles(Int_t rejection, TList *HeaderList, AliVEvent *MCEvent);
   void SetUseReweightingWithHistogramFromFile( Bool_t pi0reweight=kTRUE, Bool_t etareweight=kFALSE, Bool_t k0sreweight=kFALSE, TString path="$ALICE_ROOT/PWGGA/GammaConv/MCSpectraInput.root", 
                                                TString histoNamePi0 = "", TString histoNameEta = "", TString histoNameK0s = "",
                                                TString fitNamePi0 = "", TString fitNameEta = "", TString fitNameK0s ="" ) {
      AliInfo(Form("enabled reweighting for: pi0 : %i, eta: %i, K0s: %i",pi0reweight, etareweight, k0sreweight));
      fDoReweightHistoMCPi0 = pi0reweight; 
      fDoReweightHistoMCEta = etareweight; 
      fDoReweightHistoMCK0s = k0sreweight; 
      fPathTrFReweighting=path;
      fNameHistoReweightingPi0 =histoNamePi0;
      fNameHistoReweightingEta =histoNameEta;
      fNameHistoReweightingK0s =histoNameK0s; 
      fNameFitDataPi0 =fitNamePi0;
      fNameFitDataEta =fitNameEta;
      fNameFitDataK0s =fitNameK0s; 
      
   }
   void  LoadReweightingHistosMCFromFile ();
   UChar_t DeterminePhotonQualityAOD(AliAODConversionPhoton*, AliVEvent*);
   // Event Cuts
   Bool_t IsCentralitySelected(AliVEvent *fInputEvent, AliVEvent *fMCEvent = NULL);
   Double_t GetCentrality(AliVEvent *event);
   Int_t GetNumberOfContributorsVtx(AliVEvent *event);
   Bool_t VertexZCut(AliVEvent *fInputEvent);
   Bool_t IsTriggerSelected(AliVEvent *fInputEvent);
   Bool_t HasV0AND(){return fHasV0AND;}
   Bool_t IsSDDFired(){return fIsSDDFired;}
   Int_t IsSpecialTrigger(){return fSpecialTrigger;}
   TString GetSpecialTriggerName(){return fSpecialTriggerName;}
   Bool_t InPlaneOutOfPlaneCut(Double_t photonPhi, Double_t eventPlaneAngle = -100, Bool_t fill = kTRUE);
   Int_t GetInPlaneOutOfPlaneCut(){return fInPlaneOutOfPlane;}


   // Set Individual Cuts
   Bool_t SetRCut(Int_t RCut);
   Bool_t SetV0Finder(Int_t v0FinderType);
   Bool_t SetChi2GammaCut(Int_t chi2GammaCut);
   Bool_t SetTPCdEdxCutPionLine(Int_t pidedxSigmaCut);
   Bool_t SetTPCdEdxCutElectronLine(Int_t ededxSigmaCut);
   Bool_t SetSinglePtCut(Int_t singlePtCut);
   Bool_t SetTPCClusterCut(Int_t clsTPCCut);
   Bool_t SetEtaCut(Int_t etaCut);
   Bool_t SetMinMomPiondEdxCut(Int_t piMinMomdedxSigmaCut);
   Bool_t SetMaxMomPiondEdxCut(Int_t piMaxMomdedxSigmaCut);
   Bool_t SetLowPRejectionCuts(Int_t LowPRejectionSigmaCut);
   Bool_t SetQtMaxCut(Int_t QtMaxCut);
   Bool_t SetTOFElectronPIDCut(Int_t TOFelectronPID);
   Bool_t SetTRDElectronCut(Int_t TRDElectronCut);
   Bool_t SetCentralityMin(Int_t useCentrality);
   Bool_t SetIsHeavyIon(Int_t isHeavyIon);
   Bool_t SetCentralityMax(Int_t centralityBin);
   Bool_t SetPhotonAsymmetryCut(Int_t doPhotonAsymmetryCut);
   Bool_t SetRemovePileUp(Int_t removePileUp);  
   Bool_t SetMultiplicityMethod(Int_t multiplicityMethod);
   Bool_t SetSelectSpecialTrigger(Int_t selectSpecialTrigger);
   Bool_t SetSelectSubTriggerClass (Int_t selectSpecialSubTriggerClass);
   Bool_t SetCosPAngleCut(Int_t cosCut);
   Bool_t SetPsiPairCut(Int_t psiCut);
   Bool_t SetSharedElectronCut(Int_t sharedElec);
   Bool_t SetToCloseV0sCut(Int_t toClose);
   Bool_t SetRejectExtraSignalsCut(Int_t extraSignal);
   Bool_t SetDCARPhotonPrimVtxCut(Int_t DCARPhotonPrimVtx);
   Bool_t SetDCAZPhotonPrimVtxCut(Int_t DCAZPhotonPrimVtx);
   Bool_t SetInPlaneOutOfPlane(Int_t inOutPlane);
   void SetAddedSignalPDGCode(Int_t addedSignalPDGcode) {fAddedSignalPDGCode = addedSignalPDGcode;}
   // Request Flags

   Int_t IsHeavyIon(){return fIsHeavyIon;}
   Int_t GetFirstTPCRow(Double_t radius);
   Float_t GetWeightForMeson(TString period, Int_t index, AliStack *MCStack, AliVEvent *InputEvent = 0x0);

   Bool_t UseElecSharingCut(){return fDoSharedElecCut;}
   Bool_t UseToCloseV0sCut(){return fDoToCloseV0sCut;}
   Int_t GetMultiplicityMethod(){return fMultiplicityMethod;}
   Double_t GetEtaCut(){return fEtaCut;}
   Int_t GetSignalRejection(){return fRejectExtraSignals;}
   Int_t GetNAcceptedHeaders(){return fnHeaders; }
   TString * GetAcceptedHeaderNames(){return fGeneratorNames;}
   Int_t * GetAcceptedHeaderStart(){return fNotRejectedStart;}
   Int_t * GetAcceptedHeaderEnd(){return fNotRejectedEnd;}
   TList* GetAcceptedHeader(){return fHeaderList;}
   
   
   protected:
   TList *fHistograms;
   TList *fHeaderList;
   AliPIDResponse *fPIDResponse;


   Int_t fEventQuality; // EventQuality
   //cuts
   Double_t fMaxR; //r cut
   Double_t fMinR; //r cut
   Double_t fEtaCut; //eta cut
   Double_t fEtaCutMin; //eta cut
   Double_t fPtCut; // pt cut
   Double_t fSinglePtCut; // pt cut for electron/positron
   Double_t fMaxZ; //z cut
   Double_t fMinClsTPC; // minimum clusters in the TPC
   Double_t fMinClsTPCToF; // minimum clusters to findable clusters
   Double_t fLineCutZRSlope; //linecut
   Double_t fLineCutZValue; //linecut
   Double_t fLineCutZRSlopeMin; //linecut
   Double_t fLineCutZValueMin; //linecut
   Double_t fChi2CutConversion; //chi2cut
   Double_t fPIDProbabilityCutNegativeParticle;
   Double_t fPIDProbabilityCutPositiveParticle;
   Bool_t   fDodEdxSigmaCut; // flag to use the dEdxCut based on sigmas
   Bool_t   fDoTOFsigmaCut; // flag to use TOF pid cut RRnewTOF
   Double_t fPIDTRDEfficiency; // required electron efficiency for TRD PID
   Bool_t   fDoTRDPID; // flag to use TRD pid
   Double_t fPIDnSigmaAboveElectronLine; // sigma cut
   Double_t fPIDnSigmaBelowElectronLine; // sigma cut
   Double_t fTofPIDnSigmaAboveElectronLine; // sigma cut RRnewTOF
   Double_t fTofPIDnSigmaBelowElectronLine; // sigma cut RRnewTOF 
   Double_t fPIDnSigmaAbovePionLine;     // sigma cut
   Double_t fPIDnSigmaAbovePionLineHighPt;     // sigma cut
   Double_t fPIDMinPnSigmaAbovePionLine; // sigma cut
   Double_t fPIDMaxPnSigmaAbovePionLine; // sigma cut
   Double_t fDoKaonRejectionLowP;   // Kaon rejection at low p
   Double_t fDoProtonRejectionLowP; // Proton rejection at low p
   Double_t fDoPionRejectionLowP;   // Pion rejection at low p
   Double_t fPIDnSigmaAtLowPAroundKaonLine; // sigma cut
   Double_t fPIDnSigmaAtLowPAroundProtonLine; // sigma cut
   Double_t fPIDnSigmaAtLowPAroundPionLine; // sigma cut
   Double_t fPIDMinPKaonRejectionLowP; // Momentum limit to apply kaon rejection
   Double_t fPIDMinPProtonRejectionLowP; // Momentum limit to apply proton rejection
   Double_t fPIDMinPPionRejectionLowP; // Momentum limit to apply proton rejection
   Bool_t   fDoQtGammaSelection; // Select gammas using qtMax
   Bool_t   fDo2DQt; // Select gammas using ellipse cut
   Double_t fQtMax; // Maximum Qt from Armenteros to select Gammas
   Double_t fXVertexCut; //vertex cut
   Double_t fYVertexCut; //vertex cut
   Double_t fZVertexCut; // vertexcut
   Double_t fNSigmaMass; //nsigma cut
   Bool_t fUseEtaMinCut; //flag
   Bool_t fUseOnFlyV0Finder; //flag
   Bool_t   fDoPhotonAsymmetryCut; // flag to use the PhotonAsymetryCut
   Double_t fMinPPhotonAsymmetryCut; // Min Momentum for Asymmetry Cut
   Double_t fMinPhotonAsymmetry;  // Asymmetry Cut
   Int_t  fIsHeavyIon;               // flag for heavy ion
   Int_t fDetectorCentrality;  // centrality detecotor V0M or CL1
   Int_t fModCentralityClass; // allows to select smaller centrality classes
   Double_t fMaxVertexZ;    // max z offset of vertex
   Int_t fCentralityMin;  // centrality selection lower bin value
   Int_t fCentralityMax; // centrality selection upper bin value
   Bool_t fUseCorrectedTPCClsInfo; // flag to use corrected tpc cl info
   Bool_t fUseTOFpid; // flag to use tof pid
   Int_t fMultiplicityMethod; // selected multiplicity method
   Int_t fSpecialTrigger; // flag
   Int_t fSpecialSubTrigger; // flag
   Bool_t fRemovePileUp; //flag
   Float_t fOpeningAngle; // min opening angle for meson
   Float_t fPsiPairCut;
   Bool_t fDo2DPsiPairChi2;
   Float_t fCosPAngleCut;
   Bool_t fDoToCloseV0sCut; //
   Int_t fRejectExtraSignals;//
   Double_t fminV0Dist; //
   Bool_t fDoSharedElecCut; //
   Bool_t fDoPhotonQualitySelectionCut; //
   Int_t fPhotonQualityCut; //
   UInt_t fOfflineTriggerMask;   //  Task processes collision candidates only
   Bool_t fHasV0AND; // V0AND Offline Trigger
   Bool_t fIsSDDFired; // SDD FIRED to select with SDD events
   TRandom3 fRandom; //
   Int_t fElectronArraySize; // Size of electron array
   Int_t *fElectronLabelArray; //[fElectronArraySize]
   Double_t fDCAZPrimVtxCut; // cut value for the maximum distance in Z between the photon & the primary vertex [cm]
   Double_t fDCARPrimVtxCut; // cut value for the maximum distance in R between the photon & the primary vertex [cm]
   Int_t fInPlaneOutOfPlane; // In-Plane Out-Of Plane Analysis
   Float_t fConversionPointXArray; // Array with conversion Point x
   Float_t fConversionPointYArray; // Array with conversion Point y
   Float_t fConversionPointZArray; // Array with conversion Point z
   Int_t fnHeaders; // Number of Headers
   Int_t *fNotRejectedStart; //[fnHeaders]
   Int_t *fNotRejectedEnd; //[fnHeaders]
   TString *fGeneratorNames; //[fnHeaders]
   TObjString *fCutString; // cut number used for analysis
   AliAnalysisUtils *fUtils;
   Double_t fEtaShift;
   Bool_t fDoEtaShift;            // Flag for Etashift
   Bool_t fDoReweightHistoMCPi0; // Flag for reweighting Pi0 input with histogram
   Bool_t fDoReweightHistoMCEta; // Flag for reweighting Eta input with histogram
   Bool_t fDoReweightHistoMCK0s; // Flag for reweighting K0s input with histogram
   TString fPathTrFReweighting; // Path for file used in reweighting
   TString fNameHistoReweightingPi0; //Histogram name for reweighting Pi0
   TString fNameHistoReweightingEta; //Histogram name for reweighting Eta
   TString fNameHistoReweightingK0s; //Histogram name for reweighting K0s
   TString fNameFitDataPi0; //Fit name for fit to spectrum of pi0s in Data
   TString fNameFitDataEta; //Fit name for fit to spectrum of etas in Data
   TString fNameFitDataK0s; //Fit name for fit to spectrum of k0s in Data
   // Histograms
   TH1F* hEtaDistV0s; //eta-distribution of all V0s after Finder selection
   TH1F* hEtaDistV0sAfterdEdxCuts; //eta-distribution of all V0s after Finder selection after dEdx cuts
   TH1F *hdEdxCuts;  // bookkeeping for dEdx cuts
   TH2F *hTPCdEdxbefore; // TPC dEdx before cuts
   TH2F *hTPCdEdxafter; // TPC dEdx after cuts
   TH2F *hTPCdEdxSigbefore; // TPC Sigma dEdx before cuts
   TH2F *hTPCdEdxSigafter; // TPC Sigm dEdx after cuts
   TH2F *hTOFbefore; // TOF before cuts
   TH2F *hTOFSigbefore; // TOF Sigma before cuts
   TH2F *hTOFSigafter; // TOF Sigma after cuts
   TH2F *hPsiPairDeltaPhiafter; // TOF Sigma after cuts
   TH1F *hTrackCuts; // bookkeeping for track cuts
   TH1F *hPhotonCuts; // bookkeeping for photon specific cuts
   TH1F *hInvMassbefore; // e+e- inv mass distribution before cuts
   TH2F *hArmenterosbefore; // armenteros podolanski plot before cuts
   TH1F *hInvMassafter; // e+e- inv mass distribution after cuts
   TH2F *hArmenterosafter;  // armenteros podolanski plot after cuts
   TH1F *hAcceptanceCuts; // bookkeeping for acceptance cuts
   TH1F *hCutIndex; // bookkeeping for cuts
   TH1F *hV0EventCuts; // bookkeeping for event selection cuts
   TH1F *hCentrality; // centrality distribution for selected events
   TH2F *hCentralityVsNumberOfPrimaryTracks; // centrality distribution for selected events
   TH1F *hVertexZ; // vertex z distribution for selected events
   TH1F *hEventPlanePhi; //EventPlaneAngle Minus Photon Angle
   TH1F *hTriggerClass; //fired offline trigger class
   TH1F *hTriggerClassSelected; //selected fired offline trigger class
   TH1D *hReweightMCHistPi0; //histogram input for reweighting Pi0
   TH1D *hReweightMCHistEta; //histogram input for reweighting Eta
   TH1D *hReweightMCHistK0s; //histogram input for reweighting K0s
   TF1  *fFitDataPi0; //fit to pi0 spectrum in Data
   TF1  *fFitDataEta; //fit to eta spectrum in Data
   TF1  *fFitDataK0s; //fit to K0s spectrum in Data
   Int_t fAddedSignalPDGCode;
   Bool_t fPreSelCut; // Flag for preselection cut used in V0Reader
   Bool_t fTriggerSelectedManually; // Flag for manual trigger selection
   TString fSpecialTriggerName; // Name of the Special Triggers
   TString fSpecialSubTriggerName; // Name of the Special Triggers
   Int_t fNSpecialSubTriggerOptions;
private:

   ClassDef(AliConversionCuts,9)
};


inline void AliConversionCuts::InitAODpidUtil(Int_t type) {
  if (!fPIDResponse) fPIDResponse = new AliAODpidUtil();
  Double_t alephParameters[5];
  // simulation
  alephParameters[0] = 2.15898e+00/50.;
  alephParameters[1] = 1.75295e+01;
  alephParameters[2] = 3.40030e-09;
  alephParameters[3] = 1.96178e+00;
  alephParameters[4] = 3.91720e+00;
  fPIDResponse->GetTOFResponse().SetTimeResolution(80.);
  
  // data
  if (type==1){
    alephParameters[0] = 0.0283086/0.97;
    alephParameters[1] = 2.63394e+01;
    alephParameters[2] = 5.04114e-11;
    alephParameters[3] = 2.12543e+00;
    alephParameters[4] = 4.88663e+00;
    fPIDResponse->GetTOFResponse().SetTimeResolution(130.);
    fPIDResponse->GetTPCResponse().SetMip(50.);
  }
  
  fPIDResponse->GetTPCResponse().SetBetheBlochParameters(
    alephParameters[0],alephParameters[1],alephParameters[2],
    alephParameters[3],alephParameters[4]);
  
  fPIDResponse->GetTPCResponse().SetSigma(3.79301e-03, 2.21280e+04);
}


#endif
 AliConversionCuts.h:1
 AliConversionCuts.h:2
 AliConversionCuts.h:3
 AliConversionCuts.h:4
 AliConversionCuts.h:5
 AliConversionCuts.h:6
 AliConversionCuts.h:7
 AliConversionCuts.h:8
 AliConversionCuts.h:9
 AliConversionCuts.h:10
 AliConversionCuts.h:11
 AliConversionCuts.h:12
 AliConversionCuts.h:13
 AliConversionCuts.h:14
 AliConversionCuts.h:15
 AliConversionCuts.h:16
 AliConversionCuts.h:17
 AliConversionCuts.h:18
 AliConversionCuts.h:19
 AliConversionCuts.h:20
 AliConversionCuts.h:21
 AliConversionCuts.h:22
 AliConversionCuts.h:23
 AliConversionCuts.h:24
 AliConversionCuts.h:25
 AliConversionCuts.h:26
 AliConversionCuts.h:27
 AliConversionCuts.h:28
 AliConversionCuts.h:29
 AliConversionCuts.h:30
 AliConversionCuts.h:31
 AliConversionCuts.h:32
 AliConversionCuts.h:33
 AliConversionCuts.h:34
 AliConversionCuts.h:35
 AliConversionCuts.h:36
 AliConversionCuts.h:37
 AliConversionCuts.h:38
 AliConversionCuts.h:39
 AliConversionCuts.h:40
 AliConversionCuts.h:41
 AliConversionCuts.h:42
 AliConversionCuts.h:43
 AliConversionCuts.h:44
 AliConversionCuts.h:45
 AliConversionCuts.h:46
 AliConversionCuts.h:47
 AliConversionCuts.h:48
 AliConversionCuts.h:49
 AliConversionCuts.h:50
 AliConversionCuts.h:51
 AliConversionCuts.h:52
 AliConversionCuts.h:53
 AliConversionCuts.h:54
 AliConversionCuts.h:55
 AliConversionCuts.h:56
 AliConversionCuts.h:57
 AliConversionCuts.h:58
 AliConversionCuts.h:59
 AliConversionCuts.h:60
 AliConversionCuts.h:61
 AliConversionCuts.h:62
 AliConversionCuts.h:63
 AliConversionCuts.h:64
 AliConversionCuts.h:65
 AliConversionCuts.h:66
 AliConversionCuts.h:67
 AliConversionCuts.h:68
 AliConversionCuts.h:69
 AliConversionCuts.h:70
 AliConversionCuts.h:71
 AliConversionCuts.h:72
 AliConversionCuts.h:73
 AliConversionCuts.h:74
 AliConversionCuts.h:75
 AliConversionCuts.h:76
 AliConversionCuts.h:77
 AliConversionCuts.h:78
 AliConversionCuts.h:79
 AliConversionCuts.h:80
 AliConversionCuts.h:81
 AliConversionCuts.h:82
 AliConversionCuts.h:83
 AliConversionCuts.h:84
 AliConversionCuts.h:85
 AliConversionCuts.h:86
 AliConversionCuts.h:87
 AliConversionCuts.h:88
 AliConversionCuts.h:89
 AliConversionCuts.h:90
 AliConversionCuts.h:91
 AliConversionCuts.h:92
 AliConversionCuts.h:93
 AliConversionCuts.h:94
 AliConversionCuts.h:95
 AliConversionCuts.h:96
 AliConversionCuts.h:97
 AliConversionCuts.h:98
 AliConversionCuts.h:99
 AliConversionCuts.h:100
 AliConversionCuts.h:101
 AliConversionCuts.h:102
 AliConversionCuts.h:103
 AliConversionCuts.h:104
 AliConversionCuts.h:105
 AliConversionCuts.h:106
 AliConversionCuts.h:107
 AliConversionCuts.h:108
 AliConversionCuts.h:109
 AliConversionCuts.h:110
 AliConversionCuts.h:111
 AliConversionCuts.h:112
 AliConversionCuts.h:113
 AliConversionCuts.h:114
 AliConversionCuts.h:115
 AliConversionCuts.h:116
 AliConversionCuts.h:117
 AliConversionCuts.h:118
 AliConversionCuts.h:119
 AliConversionCuts.h:120
 AliConversionCuts.h:121
 AliConversionCuts.h:122
 AliConversionCuts.h:123
 AliConversionCuts.h:124
 AliConversionCuts.h:125
 AliConversionCuts.h:126
 AliConversionCuts.h:127
 AliConversionCuts.h:128
 AliConversionCuts.h:129
 AliConversionCuts.h:130
 AliConversionCuts.h:131
 AliConversionCuts.h:132
 AliConversionCuts.h:133
 AliConversionCuts.h:134
 AliConversionCuts.h:135
 AliConversionCuts.h:136
 AliConversionCuts.h:137
 AliConversionCuts.h:138
 AliConversionCuts.h:139
 AliConversionCuts.h:140
 AliConversionCuts.h:141
 AliConversionCuts.h:142
 AliConversionCuts.h:143
 AliConversionCuts.h:144
 AliConversionCuts.h:145
 AliConversionCuts.h:146
 AliConversionCuts.h:147
 AliConversionCuts.h:148
 AliConversionCuts.h:149
 AliConversionCuts.h:150
 AliConversionCuts.h:151
 AliConversionCuts.h:152
 AliConversionCuts.h:153
 AliConversionCuts.h:154
 AliConversionCuts.h:155
 AliConversionCuts.h:156
 AliConversionCuts.h:157
 AliConversionCuts.h:158
 AliConversionCuts.h:159
 AliConversionCuts.h:160
 AliConversionCuts.h:161
 AliConversionCuts.h:162
 AliConversionCuts.h:163
 AliConversionCuts.h:164
 AliConversionCuts.h:165
 AliConversionCuts.h:166
 AliConversionCuts.h:167
 AliConversionCuts.h:168
 AliConversionCuts.h:169
 AliConversionCuts.h:170
 AliConversionCuts.h:171
 AliConversionCuts.h:172
 AliConversionCuts.h:173
 AliConversionCuts.h:174
 AliConversionCuts.h:175
 AliConversionCuts.h:176
 AliConversionCuts.h:177
 AliConversionCuts.h:178
 AliConversionCuts.h:179
 AliConversionCuts.h:180
 AliConversionCuts.h:181
 AliConversionCuts.h:182
 AliConversionCuts.h:183
 AliConversionCuts.h:184
 AliConversionCuts.h:185
 AliConversionCuts.h:186
 AliConversionCuts.h:187
 AliConversionCuts.h:188
 AliConversionCuts.h:189
 AliConversionCuts.h:190
 AliConversionCuts.h:191
 AliConversionCuts.h:192
 AliConversionCuts.h:193
 AliConversionCuts.h:194
 AliConversionCuts.h:195
 AliConversionCuts.h:196
 AliConversionCuts.h:197
 AliConversionCuts.h:198
 AliConversionCuts.h:199
 AliConversionCuts.h:200
 AliConversionCuts.h:201
 AliConversionCuts.h:202
 AliConversionCuts.h:203
 AliConversionCuts.h:204
 AliConversionCuts.h:205
 AliConversionCuts.h:206
 AliConversionCuts.h:207
 AliConversionCuts.h:208
 AliConversionCuts.h:209
 AliConversionCuts.h:210
 AliConversionCuts.h:211
 AliConversionCuts.h:212
 AliConversionCuts.h:213
 AliConversionCuts.h:214
 AliConversionCuts.h:215
 AliConversionCuts.h:216
 AliConversionCuts.h:217
 AliConversionCuts.h:218
 AliConversionCuts.h:219
 AliConversionCuts.h:220
 AliConversionCuts.h:221
 AliConversionCuts.h:222
 AliConversionCuts.h:223
 AliConversionCuts.h:224
 AliConversionCuts.h:225
 AliConversionCuts.h:226
 AliConversionCuts.h:227
 AliConversionCuts.h:228
 AliConversionCuts.h:229
 AliConversionCuts.h:230
 AliConversionCuts.h:231
 AliConversionCuts.h:232
 AliConversionCuts.h:233
 AliConversionCuts.h:234
 AliConversionCuts.h:235
 AliConversionCuts.h:236
 AliConversionCuts.h:237
 AliConversionCuts.h:238
 AliConversionCuts.h:239
 AliConversionCuts.h:240
 AliConversionCuts.h:241
 AliConversionCuts.h:242
 AliConversionCuts.h:243
 AliConversionCuts.h:244
 AliConversionCuts.h:245
 AliConversionCuts.h:246
 AliConversionCuts.h:247
 AliConversionCuts.h:248
 AliConversionCuts.h:249
 AliConversionCuts.h:250
 AliConversionCuts.h:251
 AliConversionCuts.h:252
 AliConversionCuts.h:253
 AliConversionCuts.h:254
 AliConversionCuts.h:255
 AliConversionCuts.h:256
 AliConversionCuts.h:257
 AliConversionCuts.h:258
 AliConversionCuts.h:259
 AliConversionCuts.h:260
 AliConversionCuts.h:261
 AliConversionCuts.h:262
 AliConversionCuts.h:263
 AliConversionCuts.h:264
 AliConversionCuts.h:265
 AliConversionCuts.h:266
 AliConversionCuts.h:267
 AliConversionCuts.h:268
 AliConversionCuts.h:269
 AliConversionCuts.h:270
 AliConversionCuts.h:271
 AliConversionCuts.h:272
 AliConversionCuts.h:273
 AliConversionCuts.h:274
 AliConversionCuts.h:275
 AliConversionCuts.h:276
 AliConversionCuts.h:277
 AliConversionCuts.h:278
 AliConversionCuts.h:279
 AliConversionCuts.h:280
 AliConversionCuts.h:281
 AliConversionCuts.h:282
 AliConversionCuts.h:283
 AliConversionCuts.h:284
 AliConversionCuts.h:285
 AliConversionCuts.h:286
 AliConversionCuts.h:287
 AliConversionCuts.h:288
 AliConversionCuts.h:289
 AliConversionCuts.h:290
 AliConversionCuts.h:291
 AliConversionCuts.h:292
 AliConversionCuts.h:293
 AliConversionCuts.h:294
 AliConversionCuts.h:295
 AliConversionCuts.h:296
 AliConversionCuts.h:297
 AliConversionCuts.h:298
 AliConversionCuts.h:299
 AliConversionCuts.h:300
 AliConversionCuts.h:301
 AliConversionCuts.h:302
 AliConversionCuts.h:303
 AliConversionCuts.h:304
 AliConversionCuts.h:305
 AliConversionCuts.h:306
 AliConversionCuts.h:307
 AliConversionCuts.h:308
 AliConversionCuts.h:309
 AliConversionCuts.h:310
 AliConversionCuts.h:311
 AliConversionCuts.h:312
 AliConversionCuts.h:313
 AliConversionCuts.h:314
 AliConversionCuts.h:315
 AliConversionCuts.h:316
 AliConversionCuts.h:317
 AliConversionCuts.h:318
 AliConversionCuts.h:319
 AliConversionCuts.h:320
 AliConversionCuts.h:321
 AliConversionCuts.h:322
 AliConversionCuts.h:323
 AliConversionCuts.h:324
 AliConversionCuts.h:325
 AliConversionCuts.h:326
 AliConversionCuts.h:327
 AliConversionCuts.h:328
 AliConversionCuts.h:329
 AliConversionCuts.h:330
 AliConversionCuts.h:331
 AliConversionCuts.h:332
 AliConversionCuts.h:333
 AliConversionCuts.h:334
 AliConversionCuts.h:335
 AliConversionCuts.h:336
 AliConversionCuts.h:337
 AliConversionCuts.h:338
 AliConversionCuts.h:339
 AliConversionCuts.h:340
 AliConversionCuts.h:341
 AliConversionCuts.h:342
 AliConversionCuts.h:343
 AliConversionCuts.h:344
 AliConversionCuts.h:345
 AliConversionCuts.h:346
 AliConversionCuts.h:347
 AliConversionCuts.h:348
 AliConversionCuts.h:349
 AliConversionCuts.h:350
 AliConversionCuts.h:351
 AliConversionCuts.h:352
 AliConversionCuts.h:353
 AliConversionCuts.h:354
 AliConversionCuts.h:355
 AliConversionCuts.h:356
 AliConversionCuts.h:357
 AliConversionCuts.h:358
 AliConversionCuts.h:359
 AliConversionCuts.h:360
 AliConversionCuts.h:361
 AliConversionCuts.h:362
 AliConversionCuts.h:363
 AliConversionCuts.h:364
 AliConversionCuts.h:365
 AliConversionCuts.h:366
 AliConversionCuts.h:367
 AliConversionCuts.h:368
 AliConversionCuts.h:369
 AliConversionCuts.h:370
 AliConversionCuts.h:371
 AliConversionCuts.h:372
 AliConversionCuts.h:373
 AliConversionCuts.h:374
 AliConversionCuts.h:375
 AliConversionCuts.h:376
 AliConversionCuts.h:377
 AliConversionCuts.h:378
 AliConversionCuts.h:379
 AliConversionCuts.h:380
 AliConversionCuts.h:381
 AliConversionCuts.h:382
 AliConversionCuts.h:383
 AliConversionCuts.h:384
 AliConversionCuts.h:385
 AliConversionCuts.h:386
 AliConversionCuts.h:387
 AliConversionCuts.h:388
 AliConversionCuts.h:389
 AliConversionCuts.h:390
 AliConversionCuts.h:391
 AliConversionCuts.h:392
 AliConversionCuts.h:393
 AliConversionCuts.h:394
 AliConversionCuts.h:395
 AliConversionCuts.h:396
 AliConversionCuts.h:397
 AliConversionCuts.h:398
 AliConversionCuts.h:399
 AliConversionCuts.h:400
 AliConversionCuts.h:401
 AliConversionCuts.h:402
 AliConversionCuts.h:403
 AliConversionCuts.h:404
 AliConversionCuts.h:405
 AliConversionCuts.h:406
 AliConversionCuts.h:407
 AliConversionCuts.h:408
 AliConversionCuts.h:409
 AliConversionCuts.h:410
 AliConversionCuts.h:411
 AliConversionCuts.h:412
 AliConversionCuts.h:413
 AliConversionCuts.h:414
 AliConversionCuts.h:415
 AliConversionCuts.h:416
 AliConversionCuts.h:417
 AliConversionCuts.h:418
 AliConversionCuts.h:419
 AliConversionCuts.h:420
 AliConversionCuts.h:421
 AliConversionCuts.h:422
 AliConversionCuts.h:423
 AliConversionCuts.h:424
 AliConversionCuts.h:425
 AliConversionCuts.h:426
 AliConversionCuts.h:427
 AliConversionCuts.h:428
 AliConversionCuts.h:429
 AliConversionCuts.h:430
 AliConversionCuts.h:431
 AliConversionCuts.h:432
 AliConversionCuts.h:433
 AliConversionCuts.h:434
 AliConversionCuts.h:435
 AliConversionCuts.h:436
 AliConversionCuts.h:437
 AliConversionCuts.h:438
 AliConversionCuts.h:439
 AliConversionCuts.h:440
 AliConversionCuts.h:441
 AliConversionCuts.h:442
 AliConversionCuts.h:443
 AliConversionCuts.h:444
 AliConversionCuts.h:445
 AliConversionCuts.h:446
 AliConversionCuts.h:447
 AliConversionCuts.h:448
 AliConversionCuts.h:449
 AliConversionCuts.h:450
 AliConversionCuts.h:451
 AliConversionCuts.h:452
 AliConversionCuts.h:453
 AliConversionCuts.h:454
 AliConversionCuts.h:455
 AliConversionCuts.h:456
 AliConversionCuts.h:457
 AliConversionCuts.h:458
 AliConversionCuts.h:459
 AliConversionCuts.h:460
 AliConversionCuts.h:461
 AliConversionCuts.h:462
 AliConversionCuts.h:463
 AliConversionCuts.h:464