Added possibility to cut on absolute PDG.
authorrvernet <rvernet@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 3 Dec 2008 10:58:14 +0000 (10:58 +0000)
committerrvernet <rvernet@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 3 Dec 2008 10:58:14 +0000 (10:58 +0000)
CORRFW/AliCFParticleGenCuts.cxx
CORRFW/AliCFParticleGenCuts.h

index 8c5b699..fad953e 100644 (file)
@@ -50,6 +50,7 @@ AliCFParticleGenCuts::AliCFParticleGenCuts() :
   fRequireIsPrimary(0),
   fRequireIsSecondary(0),
   fRequirePdgCode(0),
+  fRequireAbsolutePdg(0),
   fPdgCode(0),
   fProdVtxXMin (-1.e+09),
   fProdVtxYMin (-1.e+09),
@@ -91,6 +92,7 @@ AliCFParticleGenCuts::AliCFParticleGenCuts(const Char_t* name, const Char_t* tit
   fRequireIsPrimary(0),
   fRequireIsSecondary(0),
   fRequirePdgCode(0),
+  fRequireAbsolutePdg(0),
   fPdgCode(0),
   fProdVtxXMin (-1.e+09),
   fProdVtxYMin (-1.e+09),
@@ -132,6 +134,7 @@ AliCFParticleGenCuts::AliCFParticleGenCuts(const AliCFParticleGenCuts& c) :
   fRequireIsPrimary(c.fRequireIsPrimary),
   fRequireIsSecondary(c.fRequireIsSecondary),
   fRequirePdgCode(c.fRequirePdgCode),
+  fRequireAbsolutePdg(c.fRequireAbsolutePdg),
   fPdgCode(c.fPdgCode),
   fProdVtxXMin (c.fProdVtxXMin),
   fProdVtxYMin (c.fProdVtxYMin),
@@ -178,6 +181,7 @@ AliCFParticleGenCuts& AliCFParticleGenCuts::operator=(const AliCFParticleGenCuts
     fRequireIsPrimary=c.fRequireIsPrimary;
     fRequireIsSecondary=c.fRequireIsSecondary;
     fRequirePdgCode=c.fRequirePdgCode;
+    fRequireAbsolutePdg=c.fRequireAbsolutePdg;
     fPdgCode=c.fPdgCode;
     fProdVtxXMin=c.fProdVtxXMin;
     fProdVtxYMin=c.fProdVtxYMin;
@@ -301,7 +305,7 @@ void AliCFParticleGenCuts::SelectionBitMap(AliMCParticle* mcPart)
   
   // 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);
   
@@ -429,7 +433,7 @@ void AliCFParticleGenCuts::SelectionBitMap(AliAODMCParticle* mcPart)
   
   // 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);
   
@@ -644,7 +648,7 @@ Bool_t AliCFParticleGenCuts::IsPrimaryCharged(AliVParticle *mcPart) {
 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();
@@ -660,7 +664,7 @@ Bool_t AliCFParticleGenCuts::IsA(AliMCParticle *mcPart, Int_t pdg, Bool_t abs) {
 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();
   
index 96bc09c..7d54238 100644 (file)
@@ -70,7 +70,11 @@ class AliCFParticleGenCuts : public AliCFCutBase
   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;}
@@ -114,6 +118,7 @@ class AliCFParticleGenCuts : public AliCFCutBase
   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