fRequireIsPrimary(0),
fRequireIsSecondary(0),
fRequirePdgCode(0),
+ fRequireAbsolutePdg(0),
fPdgCode(0),
fProdVtxXMin (-1.e+09),
fProdVtxYMin (-1.e+09),
fRequireIsPrimary(0),
fRequireIsSecondary(0),
fRequirePdgCode(0),
+ fRequireAbsolutePdg(0),
fPdgCode(0),
fProdVtxXMin (-1.e+09),
fProdVtxYMin (-1.e+09),
fRequireIsPrimary(c.fRequireIsPrimary),
fRequireIsSecondary(c.fRequireIsSecondary),
fRequirePdgCode(c.fRequirePdgCode),
+ fRequireAbsolutePdg(c.fRequireAbsolutePdg),
fPdgCode(c.fPdgCode),
fProdVtxXMin (c.fProdVtxXMin),
fProdVtxYMin (c.fProdVtxYMin),
fRequireIsPrimary=c.fRequireIsPrimary;
fRequireIsSecondary=c.fRequireIsSecondary;
fRequirePdgCode=c.fRequirePdgCode;
+ fRequireAbsolutePdg=c.fRequireAbsolutePdg;
fPdgCode=c.fPdgCode;
fProdVtxXMin=c.fProdVtxXMin;
fProdVtxYMin=c.fProdVtxYMin;
// cut on PDG code
if ( fRequirePdgCode ) {
- if (IsA(mcPart,fPdgCode,kFALSE)) fCutValues->SetAt((Double32_t)kTRUE,kCutPDGCode);
+ if (IsA(mcPart,fPdgCode,fRequireAbsolutePdg)) fCutValues->SetAt((Double32_t)kTRUE,kCutPDGCode);
}
else fCutValues->SetAt((Double32_t)kTRUE,kCutPDGCode);
// cut on PDG code
if ( fRequirePdgCode ) {
- if (IsA(mcPart,fPdgCode,kFALSE)) fCutValues->SetAt((Double32_t)kTRUE,kCutPDGCode);
+ if (IsA(mcPart,fPdgCode,fRequireAbsolutePdg)) fCutValues->SetAt((Double32_t)kTRUE,kCutPDGCode);
}
else fCutValues->SetAt((Double32_t)kTRUE,kCutPDGCode);
Bool_t AliCFParticleGenCuts::IsA(AliMCParticle *mcPart, Int_t pdg, Bool_t abs) {
//
//Check on the pdg code of the MC particle. if abs=kTRUE then check on the
- //absolute value. By default is set to kFALSE.
+ //absolute value.
//
TParticle* part = mcPart->Particle();
Int_t pdgCode = part->GetPdgCode();
Bool_t AliCFParticleGenCuts::IsA(AliAODMCParticle *mcPart, Int_t pdg, Bool_t abs) {
//
//Check on the pdg code of the MC particle. if abs=kTRUE then check on the
- //absolute value. By default is set to kFALSE.
+ //absolute value.
//
Int_t pdgCode = mcPart->GetPdgCode();
void SetRequireIsNeutral () {fRequireIsNeutral =kTRUE; fRequireIsCharged =kFALSE;}
void SetRequireIsPrimary () {fRequireIsPrimary =kTRUE; fRequireIsSecondary=kFALSE;}
void SetRequireIsSecondary () {fRequireIsSecondary=kTRUE; fRequireIsPrimary =kFALSE;}
- void SetRequirePdgCode (Int_t pdg) {fRequirePdgCode=kTRUE; fPdgCode=pdg;}
+ 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;}
Bool_t fRequireIsPrimary; // require primary particle
Bool_t fRequireIsSecondary; // require secondary particle
Bool_t fRequirePdgCode; // require check of the PDG code
+ Bool_t fRequireAbsolutePdg; // use the PDG code absolute value
Int_t fPdgCode ; // particle PDG code
Double32_t fProdVtxXMin; // min X of particle production vertex
Double32_t fProdVtxYMin; // min Y of particle production vertex