]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - TDPMjet/AliGenDPMjet.cxx
Converting PWG/TRD to native cmake
[u/mrichter/AliRoot.git] / TDPMjet / AliGenDPMjet.cxx
index 2b9cef5ca083846d8a3836da29f41cfe60cc731d..25a4a0fcf82c5970cfaf5bb2a432c170ad939131 100644 (file)
@@ -53,6 +53,7 @@ AliGenDPMjet::AliGenDPMjet()
      fSelectAll(0),
      fFlavor(0),
      fTrials(0),
+     fNprimaries(0),
      fSpectators(1),
      fSpecn(0),
      fSpecp(0),
@@ -63,6 +64,10 @@ AliGenDPMjet::AliGenDPMjet()
      fDecayAll(0),
      fGenImpPar(0.),
      fProcess(kDpmMb),
+     fTriggerParticle(0),
+     fTriggerEta(0.9),     
+     fTriggerMinPt(-1),  
+     fTriggerMaxPt(1000),  
      fTriggerMultiplicity(0),
      fTriggerMultiplicityEta(0),
      fTriggerMultiplicityPtMin(0),
@@ -88,6 +93,7 @@ AliGenDPMjet::AliGenDPMjet(Int_t npart)
      fSelectAll(0),
      fFlavor(0),
      fTrials(0),
+     fNprimaries(0),
      fSpectators(1),
      fSpecn(0),
      fSpecp(0),
@@ -98,6 +104,10 @@ AliGenDPMjet::AliGenDPMjet(Int_t npart)
      fDecayAll(0),
      fGenImpPar(0.),
      fProcess(kDpmMb),
+     fTriggerParticle(0),
+     fTriggerEta(0.9),     
+     fTriggerMinPt(-1),  
+     fTriggerMaxPt(1000),  
      fTriggerMultiplicity(0),
      fTriggerMultiplicityEta(0),
      fTriggerMultiplicityPtMin(0),
@@ -128,6 +138,7 @@ AliGenDPMjet::AliGenDPMjet(const AliGenDPMjet &/*Dpmjet*/)
      fSelectAll(0),
      fFlavor(0),
      fTrials(0),
+     fNprimaries(0),
      fSpectators(1),
      fSpecn(0),
      fSpecp(0),
@@ -138,6 +149,10 @@ AliGenDPMjet::AliGenDPMjet(const AliGenDPMjet &/*Dpmjet*/)
      fDecayAll(0),
      fGenImpPar(0.),
      fProcess(kDpmMb),
+     fTriggerParticle(0),
+     fTriggerEta(0.9),     
+     fTriggerMinPt(-1),  
+     fTriggerMaxPt(1000),  
      fTriggerMultiplicity(0),
      fTriggerMultiplicityEta(0),
      fTriggerMultiplicityPtMin(0),
@@ -206,6 +221,7 @@ void AliGenDPMjet::Generate()
   Int_t kf, ks, imo;
   kf = 0;
   fTrials = 0;
+  fNprimaries = 0;
   //  Set collision vertex position 
   if (fVertexSmear == kPerEvent) Vertex();
   
@@ -259,6 +275,21 @@ void AliGenDPMjet::Generate()
        Printf("Triggered on event with multiplicity of %d >= %d", multiplicity, fTriggerMultiplicity);
       }    
 
+  //Trigger on the presence of a given particle in some phase space
+    if (fTriggerParticle) {
+       Bool_t triggered = kFALSE;
+           for (Long_t i = 0; i < np; i++) {
+               TParticle *  iparticle = (TParticle *) fParticles.At(i);
+               kf = CheckPDGCode(iparticle->GetPdgCode());
+               if (kf != fTriggerParticle) continue;
+               if (iparticle->Pt() == 0.) continue;
+               if (TMath::Abs(iparticle->Eta()) > fTriggerEta) continue;
+               if ( iparticle->Pt() > fTriggerMaxPt || iparticle->Pt() < fTriggerMinPt ) continue;
+               triggered = kTRUE;
+               break;
+           }
+      if (!triggered) continue; 
+    }
 
       if(fkTuneForDiff && ( (TMath::Abs(fEnergyCMS - 900) < 1) || (TMath::Abs(fEnergyCMS - 2760) < 1) || (TMath::Abs(fEnergyCMS - 7000) < 1)) ) {
        if(!CheckDiffraction() ) continue;
@@ -384,6 +415,7 @@ void AliGenDPMjet::Generate()
                        polar[0], polar[1], polar[2],
                        kPNoProcess, nt, 1., ks);
              KeepTrack(nt);
+             fNprimaries++;
              newPos[i] = nt;
          } // if selected
       } // particle loop
@@ -470,7 +502,7 @@ Bool_t AliGenDPMjet::Stable(TParticle*  particle)
 void AliGenDPMjet::MakeHeader()
 {
 // Builds the event header, to be called after each event
-    fHeader.SetNProduced(fDPMjet->GetNumStablePc());
+    fHeader.SetNProduced(fNprimaries);
     fHeader.SetImpactParameter(fDPMjet->GetBImpac());
     fHeader.SetTotalEnergy(fDPMjet->GetTotEnergy());
     fHeader.SetParticipants(fDPMjet->GetProjParticipants(),