#ifndef ALICFPARTICLEGENCUTS_H
#define ALICFPARTICLEGENCUTS_H
#include "AliCFCutBase.h"
class AliMCEvent;
class TObject;
class AliMCParticle;
class AliStack;
class TList;
class TH1F;
class TH2F;
class TBits;
class TArrayF;
class TDecayChannel;
class AliVParticle;
class AliVEvent;
class AliAODMCParticle;
class AliCFParticleGenCuts : public AliCFCutBase
{
public :
AliCFParticleGenCuts() ;
AliCFParticleGenCuts (const Char_t* name, const Char_t* title) ;
AliCFParticleGenCuts (const AliCFParticleGenCuts& c) ;
AliCFParticleGenCuts& operator=(const AliCFParticleGenCuts& c) ;
virtual ~AliCFParticleGenCuts() { };
virtual Bool_t IsSelected(TObject* obj) ;
Bool_t IsSelected(TList* ) {return kTRUE;}
virtual void SetMCEventInfo(const TObject* mcEvent) ;
void SetAODMC(Bool_t flag) {fIsAODMC=flag;}
Bool_t IsPrimaryCharged(AliVParticle *mcPart);
Bool_t IsPrimary(AliMCParticle *mcPart) ;
Bool_t IsPrimary(AliAODMCParticle *mcPart) ;
static Bool_t IsCharged(AliVParticle *mcPart);
static Bool_t IsA(AliMCParticle *mcPart, Int_t pdg, Bool_t abs=kFALSE);
static Bool_t IsA(AliAODMCParticle *mcPart, Int_t pdg, Bool_t abs=kFALSE);
void SetRequireIsCharged () {fRequireIsCharged =kTRUE; fRequireIsNeutral =kFALSE;}
void SetRequireIsNeutral () {fRequireIsNeutral =kTRUE; fRequireIsCharged =kFALSE;}
void SetRequireIsPrimary () {fRequireIsPrimary =kTRUE; fRequireIsSecondary=kFALSE;}
void SetRequireIsSecondary () {fRequireIsSecondary=kTRUE; fRequireIsPrimary =kFALSE;}
void SetRequirePdgCode (Int_t pdg, Bool_t useAbsolute=kFALSE) {
fRequirePdgCode=kTRUE;
fPdgCode=pdg;
fRequireAbsolutePdg=useAbsolute;
}
void SetProdVtxRangeX (Double32_t xmin, Double32_t xmax) {fProdVtxXMin =xmin; fProdVtxXMax =xmax;}
void SetProdVtxRangeY (Double32_t ymin, Double32_t ymax) {fProdVtxYMin =ymin; fProdVtxYMax =ymax;}
void SetProdVtxRangeZ (Double32_t zmin, Double32_t zmax) {fProdVtxZMin =zmin; fProdVtxZMax =zmax;}
void SetProdVtxRange2D (Bool_t b=kFALSE) {fProdVtxRange2D = b;}
void SetDecayVtxRangeX (Double32_t xmin, Double32_t xmax) {fDecayVtxXMin =xmin; fDecayVtxXMax =xmax;}
void SetDecayVtxRangeY (Double32_t ymin, Double32_t ymax) {fDecayVtxYMin =ymin; fDecayVtxYMax =ymax;}
void SetDecayVtxRangeZ (Double32_t zmin, Double32_t zmax) {fDecayVtxZMin =zmin; fDecayVtxZMax =zmax;}
void SetDecayLengthRange (Double32_t rmin, Double32_t rmax) {fDecayLengthMin=rmin; fDecayLengthMax=rmax;}
void SetDecayRxyRange (Double32_t rmin, Double32_t rmax) {fDecayRxyMin =rmin; fDecayRxyMax =rmax;}
void SetDecayChannel (TDecayChannel* dc) {fDecayChannel = dc ;}
enum {
kCutCharge,
kCutPrimSec,
kCutPDGCode,
kCutProdVtxXMin,
kCutProdVtxXMax,
kCutProdVtxYMin,
kCutProdVtxYMax,
kCutProdVtxZMin,
kCutProdVtxZMax,
kCutDecVtxXMin,
kCutDecVtxXMax,
kCutDecVtxYMin,
kCutDecVtxYMax,
kCutDecVtxZMin,
kCutDecVtxZMax,
kCutDecLgthMin,
kCutDecLgthMax,
kCutDecRxyMin,
kCutDecRxyMax,
kCutDecayChannel,
kNCuts,
kNStepQA=2
};
private:
Bool_t fIsAODMC ;
AliVEvent* fMCInfo ;
Bool_t fRequireIsCharged;
Bool_t fRequireIsNeutral;
Bool_t fRequireIsPrimary;
Bool_t fRequireIsSecondary;
Bool_t fRequirePdgCode;
Bool_t fRequireAbsolutePdg;
Bool_t fProdVtxRange2D;
Int_t fPdgCode ;
Double32_t fProdVtxXMin;
Double32_t fProdVtxYMin;
Double32_t fProdVtxZMin;
Double32_t fProdVtxXMax;
Double32_t fProdVtxYMax;
Double32_t fProdVtxZMax;
Double32_t fDecayVtxXMin;
Double32_t fDecayVtxYMin;
Double32_t fDecayVtxZMin;
Double32_t fDecayVtxXMax;
Double32_t fDecayVtxYMax;
Double32_t fDecayVtxZMax;
Double32_t fDecayLengthMin;
Double32_t fDecayLengthMax;
Double32_t fDecayRxyMin;
Double32_t fDecayRxyMax;
TDecayChannel* fDecayChannel;
TH1F* fhCutStatistics;
TH2F* fhCutCorrelation;
TH1F* fhQA[kNCuts][kNStepQA];
TH2F* fhProdVtxXY[2];
TArrayF* fCutValues;
TBits* fBitmap ;
void SelectionBitMap(AliMCParticle* obj);
void SelectionBitMap(AliAODMCParticle* obj);
void FillHistograms(TObject* obj, Bool_t afterCuts);
void AddQAHistograms(TList *qaList) ;
void DefineHistograms();
ClassDef(AliCFParticleGenCuts,2);
};
#endif
AliCFParticleGenCuts.h:10 AliCFParticleGenCuts.h:11 AliCFParticleGenCuts.h:12 AliCFParticleGenCuts.h:13 AliCFParticleGenCuts.h:14 AliCFParticleGenCuts.h:15 AliCFParticleGenCuts.h:16 AliCFParticleGenCuts.h:17 AliCFParticleGenCuts.h:18 AliCFParticleGenCuts.h:19 AliCFParticleGenCuts.h:20 AliCFParticleGenCuts.h:21 AliCFParticleGenCuts.h:22 AliCFParticleGenCuts.h:23 AliCFParticleGenCuts.h:24 AliCFParticleGenCuts.h:25 AliCFParticleGenCuts.h:26 AliCFParticleGenCuts.h:27 AliCFParticleGenCuts.h:28 AliCFParticleGenCuts.h:29 AliCFParticleGenCuts.h:30 AliCFParticleGenCuts.h:31 AliCFParticleGenCuts.h:32 AliCFParticleGenCuts.h:33 AliCFParticleGenCuts.h:34 AliCFParticleGenCuts.h:35 AliCFParticleGenCuts.h:36 AliCFParticleGenCuts.h:37 AliCFParticleGenCuts.h:38 AliCFParticleGenCuts.h:39 AliCFParticleGenCuts.h:40 AliCFParticleGenCuts.h:41 AliCFParticleGenCuts.h:42 AliCFParticleGenCuts.h:43 AliCFParticleGenCuts.h:44 AliCFParticleGenCuts.h:45 AliCFParticleGenCuts.h:46 AliCFParticleGenCuts.h:47 AliCFParticleGenCuts.h:48 AliCFParticleGenCuts.h:49 AliCFParticleGenCuts.h:50 AliCFParticleGenCuts.h:51 AliCFParticleGenCuts.h:52 AliCFParticleGenCuts.h:53 AliCFParticleGenCuts.h:54 AliCFParticleGenCuts.h:55 AliCFParticleGenCuts.h:56 AliCFParticleGenCuts.h:57 AliCFParticleGenCuts.h:58 AliCFParticleGenCuts.h:59 AliCFParticleGenCuts.h:60 AliCFParticleGenCuts.h:61 AliCFParticleGenCuts.h:62 AliCFParticleGenCuts.h:63 AliCFParticleGenCuts.h:64 AliCFParticleGenCuts.h:65 AliCFParticleGenCuts.h:66 AliCFParticleGenCuts.h:67 AliCFParticleGenCuts.h:68 AliCFParticleGenCuts.h:69 AliCFParticleGenCuts.h:70 AliCFParticleGenCuts.h:71 AliCFParticleGenCuts.h:72 AliCFParticleGenCuts.h:73 AliCFParticleGenCuts.h:74 AliCFParticleGenCuts.h:75 AliCFParticleGenCuts.h:76 AliCFParticleGenCuts.h:77 AliCFParticleGenCuts.h:78 AliCFParticleGenCuts.h:79 AliCFParticleGenCuts.h:80 AliCFParticleGenCuts.h:81 AliCFParticleGenCuts.h:82 AliCFParticleGenCuts.h:83 AliCFParticleGenCuts.h:84 AliCFParticleGenCuts.h:85 AliCFParticleGenCuts.h:86 AliCFParticleGenCuts.h:87 AliCFParticleGenCuts.h:88 AliCFParticleGenCuts.h:89 AliCFParticleGenCuts.h:90 AliCFParticleGenCuts.h:91 AliCFParticleGenCuts.h:92 AliCFParticleGenCuts.h:93 AliCFParticleGenCuts.h:94 AliCFParticleGenCuts.h:95 AliCFParticleGenCuts.h:96 AliCFParticleGenCuts.h:97 AliCFParticleGenCuts.h:98 AliCFParticleGenCuts.h:99 AliCFParticleGenCuts.h:100 AliCFParticleGenCuts.h:101 AliCFParticleGenCuts.h:102 AliCFParticleGenCuts.h:103 AliCFParticleGenCuts.h:104 AliCFParticleGenCuts.h:105 AliCFParticleGenCuts.h:106 AliCFParticleGenCuts.h:107 AliCFParticleGenCuts.h:108 AliCFParticleGenCuts.h:109 AliCFParticleGenCuts.h:110 AliCFParticleGenCuts.h:111 AliCFParticleGenCuts.h:112 AliCFParticleGenCuts.h:113 AliCFParticleGenCuts.h:114 AliCFParticleGenCuts.h:115 AliCFParticleGenCuts.h:116 AliCFParticleGenCuts.h:117 AliCFParticleGenCuts.h:118 AliCFParticleGenCuts.h:119 AliCFParticleGenCuts.h:120 AliCFParticleGenCuts.h:121 AliCFParticleGenCuts.h:122 AliCFParticleGenCuts.h:123 AliCFParticleGenCuts.h:124 AliCFParticleGenCuts.h:125 AliCFParticleGenCuts.h:126 AliCFParticleGenCuts.h:127 AliCFParticleGenCuts.h:128 AliCFParticleGenCuts.h:129 AliCFParticleGenCuts.h:130 AliCFParticleGenCuts.h:131 AliCFParticleGenCuts.h:132 AliCFParticleGenCuts.h:133 AliCFParticleGenCuts.h:134 AliCFParticleGenCuts.h:135 AliCFParticleGenCuts.h:136 AliCFParticleGenCuts.h:137 AliCFParticleGenCuts.h:138 AliCFParticleGenCuts.h:139 AliCFParticleGenCuts.h:140 AliCFParticleGenCuts.h:141 AliCFParticleGenCuts.h:142 AliCFParticleGenCuts.h:143 AliCFParticleGenCuts.h:144 AliCFParticleGenCuts.h:145 AliCFParticleGenCuts.h:146 AliCFParticleGenCuts.h:147 AliCFParticleGenCuts.h:148 AliCFParticleGenCuts.h:149 AliCFParticleGenCuts.h:150 AliCFParticleGenCuts.h:151 AliCFParticleGenCuts.h:152 AliCFParticleGenCuts.h:153 AliCFParticleGenCuts.h:154 AliCFParticleGenCuts.h:155 AliCFParticleGenCuts.h:156 AliCFParticleGenCuts.h:157 AliCFParticleGenCuts.h:158 AliCFParticleGenCuts.h:159 AliCFParticleGenCuts.h:160