#ifndef ALICFEVENTCLASSCUTS_H #define ALICFEVENTCLASSCUTS_H /************************************************************************** * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * * * * Author: The ALICE Off-line Project. * * Contributors are mentioned in the code where appropriate. * * * * Permission to use, copy, modify and distribute this software and its * * documentation strictly for non-commercial purposes is hereby granted * * without fee, provided that the above copyright notice appears in all * * copies and that both the copyright notice and this permission notice * * appear in the supporting documentation. The authors make no claims * * about the suitability of this software for any purpose. It is * * provided "as is" without express or implied warranty. * **************************************************************************/ // Cut on the type of Event Class: for the moment // the Trigger (pp running configurations) // and requirements on the energy observed in the ZDC are implemented // The argument of IsSelected member function (passed object) is cast into // an AliVEvent, although conditions are meaningful only for AliESD(AOD)Event // type objects. // The class derives from AliCFCutBase // Author:S.Arcelli Silvia.Arcelli@cern.ch #include "AliCFCutBase.h" #include "TBits.h" class TH1F; class AliVEvent; //____________________________________________________________________________ class AliCFEventClassCuts: public AliCFCutBase { public : AliCFEventClassCuts() ; AliCFEventClassCuts(Char_t* name, Char_t* title) ; AliCFEventClassCuts(const AliCFEventClassCuts& c) ; AliCFEventClassCuts& operator=(const AliCFEventClassCuts& c) ; ~AliCFEventClassCuts(); Bool_t IsSelected(TObject* obj); Bool_t IsSelected(TList* /*list*/) {return kTRUE;} //Association to The Trigger bits in the mask. //They correspond to the PP running descriptor as in //STEER/createTriggerDescriptor_pp.C plus five MB Trigger combinations enum TriggerType { kVZEROLeft=0,kVZERORight,kVZEROBeamGas, kSTARTAL0,kSTARTCL0, kITSSPDGFOL0,kITSSPDHMultL0, kMUSingleLPtL0,kMUUnlikeLPtL0,kMUUnlikeHPtL0,kMULikeLPtL0,kMULikeHPtL0, kMB,kTOFMB, kMUSingleMB,kMUUnLikeLPtMB,kMULikeLPtMB, kMB1,kMB2,kMB3,kMB4,kMB5 }; //static checker for trigger bits static Bool_t IsTriggered(AliVEvent *ev, TriggerType trigger=kMB1); void SetTriggerType(TriggerType trigger=kMB1) { fTriggerType.SetBitNumber(trigger,kTRUE);} // Set requested trigger bits TBits GetTriggerType() const { return fTriggerType;} // get Triggers bits which were requested void SetTriggersInAND( Bool_t flag){fTriggerAND=flag;} // request Trigger bits in .AND. void SetZDCN1EnergyCut(Double_t min,Double_t max){fZDCN1EnergyMin=min; fZDCN1EnergyMax=max;} // ZDC energy cuts void SetZDCN2EnergyCut(Double_t min,Double_t max){fZDCN2EnergyMin=min; fZDCN2EnergyMax=max;} // ZDC energy cuts void SetZDCP1EnergyCut(Double_t min,Double_t max){fZDCP1EnergyMin=min; fZDCP1EnergyMax=max;} // ZDC energy cuts void SetZDCP2EnergyCut(Double_t min,Double_t max){fZDCP2EnergyMin=min; fZDCP2EnergyMax=max;} // ZDC energy cuts void SetZDCEM1EnergyCut(Double_t min,Double_t max){fZDCEM1EnergyMin=min; fZDCEM1EnergyMax=max;} // ZDC energy cuts void SetZDCEM2EnergyCut(Double_t min,Double_t max){fZDCEM2EnergyMin=min; fZDCEM2EnergyMax=max;} // ZDC energy cuts Double_t GetZDCN1EnergyCutMin() const {return fZDCN1EnergyMin;};//ZDC N1 energy min Double_t GetZDCN2EnergyCutMin() const {return fZDCN2EnergyMin;};//ZDC N2 Emin Double_t GetZDCP1EnergyCutMin() const {return fZDCP1EnergyMin;};//ZDC P1 Emin Double_t GetZDCP2EnergyCutMin() const {return fZDCP2EnergyMin;};//ZDC P2 Emin Double_t GetZDCEM1EnergyCutMin() const {return fZDCEM1EnergyMin;};//ZDC EM1 Emin Double_t GetZDCEM2EnergyCutMin() const {return fZDCEM2EnergyMin;};//ZDC EM2 Emin Double_t GetZDCN1EnergyCutMax() const {return fZDCN1EnergyMax;};//ZDC N1 Emax Double_t GetZDCN2EnergyCutMax() const {return fZDCN2EnergyMax;};//ZDC N2 Emax Double_t GetZDCP1EnergyCutMax() const {return fZDCP1EnergyMax;};//ZDC P1 Emax Double_t GetZDCP2EnergyCutMax() const {return fZDCP2EnergyMax;};//ZDC P2 Emax Double_t GetZDCEM1EnergyCutMax() const {return fZDCEM1EnergyMax;};//ZDC EM1 Emax Double_t GetZDCEM2EnergyCutMax() const {return fZDCEM2EnergyMax;};//ZDC EM2 Emax // QA histogram setter // please use indices from the enumeration below void SetHistogramBins(Int_t index, Int_t nbins, Double_t *bins); void SetHistogramBins(Int_t index, Int_t nbins, Double_t xmin, Double_t xmax); enum{kTrigger=0, kZDCEnergyN1, kZDCEnergyP1, kZDCEnergyN2, kZDCEnergyP2, kZDCEnergyEM1, kZDCEnergyEM2, kNTriggers=17, kNTriggersMB=5, kNCuts=7, kNStepQA=2 }; protected: void SelectionBitMap(TObject* obj); static void TriggerBitMap(AliVEvent* ev,TBits *bitmapT); void DefineHistograms(); // books histograms and TList void AddQAHistograms(TList *qaList) ; void Initialise(); // sets everything to 0 void FillHistograms(TObject* obj, Bool_t b); TBits fTriggerType ; //The type of trigger to be checked Bool_t fTriggerAND; //Flag to ak for .AND of all the requested trigger bits (.or.is default) Double_t fZDCN1EnergyMin; //Min Energy in ZDCN1 Double_t fZDCP1EnergyMin; //Min Energy in ZDCP1 Double_t fZDCN2EnergyMin; //Min Energy in ZDCN2 Double_t fZDCP2EnergyMin; //Min Energy in ZDCP2 Double_t fZDCEM1EnergyMin; //Min Energy in ZDCEM1 Double_t fZDCEM2EnergyMin; //Min Energy in ZDCEM2 Double_t fZDCN1EnergyMax; //Max Energy in ZDCN1 Double_t fZDCP1EnergyMax; //Max Energy in ZDCP1 Double_t fZDCN2EnergyMax; //Max Energy in ZDCN2 Double_t fZDCP2EnergyMax; //Max Energy in ZDCP2 Double_t fZDCEM1EnergyMax; //Max Energy in ZDCEM1 Double_t fZDCEM2EnergyMax; //Max Energy in ZDCEM2 TBits *fBitMap ; //cut mask TH1F* fhQA[kNCuts][kNStepQA]; // QA Histograms ClassDef(AliCFEventClassCuts,2); }; #endif