select trigger within etamin etamax range if etamin != etamax
authormorsch <andreas.morsch@cern.ch>
Sun, 6 Jul 2014 19:19:09 +0000 (21:19 +0200)
committermorsch <andreas.morsch@cern.ch>
Sun, 6 Jul 2014 19:19:09 +0000 (21:19 +0200)
PYTHIA6/AliGenPythia.cxx
PYTHIA6/AliGenPythia.h

index abfcc52..4924d31 100644 (file)
@@ -126,6 +126,7 @@ AliGenPythia::AliGenPythia():
     fNucPdf(0),
     fTriggerParticle(0),
     fTriggerEta(0.9),     
+    fTriggerEtaMin(0.9),     
     fTriggerMinPt(-1),  
     fTriggerMaxPt(1000),  
     fTriggerMultiplicity(0),
@@ -246,6 +247,7 @@ AliGenPythia::AliGenPythia(Int_t npart)
      fNucPdf(0),
      fTriggerParticle(0),
      fTriggerEta(0.9), 
+     fTriggerEtaMin(0.9),     
      fTriggerMinPt(-1),  
      fTriggerMaxPt(1000),      
      fTriggerMultiplicity(0),
@@ -518,6 +520,10 @@ void AliGenPythia::Init()
        fParentSelect[6] = 5332;
        fFlavorSelect    = 5;   
        break;
+    case kPyBPlusppMNRwmi:
+      fParentSelect[0]=  521;
+      fFlavorSelect   = 5;
+      break;
     case kPyJpsiChi:
     case kPyJpsi:
        fParentSelect[0] = 443;
@@ -773,14 +779,14 @@ void AliGenPythia::Generate()
            fProcess != kPyMbMSEL1     &&
            fProcess != kPyW && 
            fProcess != kPyZ &&
-      fProcess != kPyZgamma &&
+            fProcess != kPyZgamma &&
            fProcess != kPyCharmppMNRwmi && 
            fProcess != kPyBeautyppMNRwmi &&
            fProcess != kPyBeautyJets &&
-     fProcess != kPyWPWHG &&
-     fProcess != kPyJetsPWHG &&
-     fProcess != kPyCharmPWHG &&
-     fProcess != kPyBeautyPWHG) {
+            fProcess != kPyWPWHG &&
+            fProcess != kPyJetsPWHG &&
+            fProcess != kPyCharmPWHG &&
+            fProcess != kPyBeautyPWHG) {
            
            for (i = 0; i < np; i++) {
                TParticle* iparticle = (TParticle *) fParticles.At(i);
@@ -1087,7 +1093,11 @@ Int_t  AliGenPythia::GenerateMB()
            kf = CheckPDGCode(iparticle->GetPdgCode());
            if (kf != fTriggerParticle) continue;
            if (iparticle->Pt() == 0.) continue;
-           if (TMath::Abs(iparticle->Eta()) > fTriggerEta) continue;
+           if (fTriggerEtaMin == fTriggerEta) {
+             if (TMath::Abs(iparticle->Eta()) > fTriggerEta) continue;
+           } else {
+             if (iparticle->Eta() > fTriggerEta || iparticle->Eta() < fTriggerEtaMin) continue;
+           }
            if ( iparticle->Pt() > fTriggerMaxPt || iparticle->Pt() < fTriggerMinPt ) continue;
            triggered = kTRUE;
            break;
@@ -1109,8 +1119,8 @@ Int_t  AliGenPythia::GenerateMB()
       Bool_t  theChild=kFALSE;
       Bool_t  triggered=kFALSE;
       Float_t y;  
-      Int_t   pdg,mpdg,mpdgUpperFamily;
-      for(i=0; i<np; i++) {
+      Int_t   pdg, mpdg, mpdgUpperFamily;
+      for(i = 0; i < np; i++) {
        partCheck = (TParticle*)fParticles.At(i);
        pdg = partCheck->GetPdgCode();  
        if(TMath::Abs(pdg) == fFlavorSelect) { // quark  
@@ -1153,10 +1163,10 @@ Int_t  AliGenPythia::GenerateMB()
 
     //Introducing child cuts in case kPyW, kPyZ, kPyMb, and kPyMbNonDiff
     if ( (
-    fProcess == kPyWPWHG ||
-    fProcess == kPyW ||
+         fProcess == kPyWPWHG ||
+         fProcess == kPyW ||
          fProcess == kPyZ ||
-    fProcess == kPyZgamma ||
+         fProcess == kPyZgamma ||
          fProcess == kPyMbDefault ||
          fProcess == kPyMb ||
          fProcess == kPyMbAtlasTuneMC09 ||
@@ -1168,7 +1178,7 @@ Int_t  AliGenPythia::GenerateMB()
        return 0;
       }
     }
-  
+    
 
     for (i = 0; i < np; i++) {
        Int_t trackIt = 0;
index 730676b..57568a6 100644 (file)
@@ -169,7 +169,9 @@ class AliGenPythia : public AliGenMC
   
     // Trigger on a single particle (not related to calorimeter trigger above)
     virtual void    SetTriggerParticle(Int_t particle = 0, Float_t etamax = 0.9, Float_t ptmin = -1, Float_t ptmax = 1000) 
-       {fTriggerParticle = particle; fTriggerEta = etamax; fTriggerMinPt = ptmin; fTriggerMaxPt = ptmax;}
+    {fTriggerParticle = particle; fTriggerEta = etamax; fTriggerEtaMin = etamax; fTriggerMinPt = ptmin; fTriggerMaxPt = ptmax;}
+    virtual void    SetTriggerParticle(Int_t particle, Float_t etamin, Float_t etamax, Float_t ptmin, Float_t ptmax) 
+    {fTriggerParticle = particle; fTriggerEtaMin = etamin, fTriggerEta = etamax; fTriggerMinPt = ptmin; fTriggerMaxPt = ptmax;}
 
     //
     // Heavy flavor options
@@ -340,6 +342,7 @@ class AliGenPythia : public AliGenMC
     Int_t   fNucPdf;                // Nuclear pdf 0: EKS98 1: EPS08
     Int_t   fTriggerParticle;       // Trigger on this particle ...
     Float_t fTriggerEta;            // .. within |eta| < fTriggerEta
+    Float_t fTriggerEtaMin;         // .. within fTriggerEtaMin < eta < fTriggerEta
     Float_t fTriggerMinPt;          // .. within pt > fTriggerMinPt
     Float_t fTriggerMaxPt;          // .. within pt < fTriggerMaxPt
     Int_t       fTriggerMultiplicity;       // Trigger on events with a minimum charged multiplicity