1) decouple the rapidity cut used in AliGenPythia to select the events with c or...
authormorsch <andreas.morsch@cern.ch>
Thu, 6 Nov 2014 15:28:01 +0000 (16:28 +0100)
committermorsch <andreas.morsch@cern.ch>
Thu, 6 Nov 2014 15:28:40 +0000 (16:28 +0100)
2) propagate the title of the generator (which can be set in the config) to the GenEventHeader, so that it can be read at the analysis level.

Francesco Prino

PYTHIA6/AliGenPythia.cxx
PYTHIA6/AliGenPythia.h
PYTHIA6/AliGenPythiaPlus.cxx
PYTHIA6/AliGenPythiaPlus.h

index f2a4023..5ad46d2 100644 (file)
@@ -109,6 +109,9 @@ AliGenPythia::AliGenPythia():
     fEtaMaxGamma(20.),      
     fPhiMinGamma(0.),      
     fPhiMaxGamma(2. * TMath::Pi()),      
+    fUseYCutHQ(kFALSE),
+    fYMinHQ(-20.),
+    fYMaxHQ(20.),
     fPycellEtaMax(2.),     
     fPycellNEta(274),       
     fPycellNPhi(432),       
@@ -232,6 +235,9 @@ AliGenPythia::AliGenPythia(Int_t npart)
      fEtaMaxGamma(20.),      
      fPhiMinGamma(0.),      
      fPhiMaxGamma(2. * TMath::Pi()),      
+     fUseYCutHQ(kFALSE),
+     fYMinHQ(-20.),
+     fYMaxHQ(20.),
      fPycellEtaMax(2.),     
      fPycellNEta(274),       
      fPycellNPhi(432),       
@@ -1128,7 +1134,8 @@ Int_t  AliGenPythia::GenerateMB()
          if(pdg>0) { theQ=kTRUE; } else { theQbar=kTRUE; }
          y = 0.5*TMath::Log((partCheck->Energy()+partCheck->Pz()+1.e-13)/
                             (partCheck->Energy()-partCheck->Pz()+1.e-13));
-         if(y>fYMin && y<fYMax) inYcut=kTRUE;
+         if(fUseYCutHQ && y>fYMinHQ && y<fYMaxHQ) inYcut=kTRUE;
+         if(!fUseYCutHQ && y>fYMin && y<fYMax) inYcut=kTRUE;
        }
        if(fTriggerParticle) {
          if(TMath::Abs(pdg)==fTriggerParticle) triggered=kTRUE;
@@ -1285,6 +1292,7 @@ void AliGenPythia::MakeHeader()
 // Builds the event header, to be called after each event
     if (fHeader) delete fHeader;
     fHeader = new AliGenPythiaEventHeader("Pythia");
+    fHeader->SetTitle(GetTitle());
 //
 // Event type  
     if(fProcDiff>0){
index 48867a7..01d05d1 100644 (file)
@@ -96,6 +96,10 @@ class AliGenPythia : public AliGenMC
     // Phi range for gamma trigger
     virtual void    SetGammaPhiRange(Float_t phimin = 0., Float_t phimax = 360.)
        {fPhiMinGamma = TMath::Pi()*phimin/180.; fPhiMaxGamma = TMath::Pi()*phimax/180.;}
+    // Y range for heavy quark trigger
+    virtual void    SetHeavyQuarkYRange(Float_t ymin=-20., Float_t ymax=20.){
+      fYMinHQ = ymin;    fYMaxHQ=ymax;   fUseYCutHQ=kTRUE;
+    }
   
     // Select events with fragmentation photon, decay photon, pi0 or eta going to PHOS or EMCAL and central barrel
     virtual Bool_t TriggerOnSelectedParticles(Int_t np);
@@ -325,6 +329,9 @@ class AliGenPythia : public AliGenMC
     Float_t     fEtaMaxGamma;       // Maximum eta of triggered gamma
     Float_t     fPhiMinGamma;       // Minimum phi of triggered gamma
     Float_t     fPhiMaxGamma;       // Maximum phi of triggered gamma
+    Bool_t      fUseYCutHQ;         // siwtch for using y cut for heavy quarks
+    Float_t     fYMinHQ;            // Minimum y of triggered heavy quarks
+    Float_t     fYMaxHQ;            // Maximum y of triggered heavy quarks
     Float_t     fPycellEtaMax;      // Max. eta for Pycell 
     Int_t       fPycellNEta;        // Number of eta bins for Pycell 
     Int_t       fPycellNPhi;        // Number of phi bins for Pycell
@@ -404,7 +411,7 @@ class AliGenPythia : public AliGenMC
     Bool_t GetWeightsDiffraction(Double_t M, Double_t &Mmin, Double_t &Mmax, 
                                               Double_t &wSD, Double_t &wDD, Double_t &wND);
 
-    ClassDef(AliGenPythia, 14) // AliGenerator interface to Pythia
+    ClassDef(AliGenPythia, 15) // AliGenerator interface to Pythia
 };
 #endif
 
index 0f91b97..76b6fce 100644 (file)
@@ -92,6 +92,9 @@ AliGenPythiaPlus::AliGenPythiaPlus():
     fEtaMaxGamma(20.),      
     fPhiMinGamma(0.),      
     fPhiMaxGamma(2. * TMath::Pi()),      
+    fUseYCutHQ(kFALSE),
+    fYMinHQ(-20.),
+    fYMaxHQ(20.),
     fPycellEtaMax(2.),     
     fPycellNEta(274),       
     fPycellNPhi(432),       
@@ -180,6 +183,9 @@ AliGenPythiaPlus::AliGenPythiaPlus(AliPythiaBase* pythia)
      fEtaMaxGamma(20.),      
      fPhiMinGamma(0.),      
      fPhiMaxGamma(2. * TMath::Pi()),      
+     fUseYCutHQ(kFALSE),
+     fYMinHQ(-20.),
+     fYMaxHQ(20.),
      fPycellEtaMax(2.),     
      fPycellNEta(274),       
      fPycellNPhi(432),       
@@ -949,7 +955,8 @@ Int_t  AliGenPythiaPlus::GenerateMB()
          if(pdg>0) { theQ=kTRUE; } else { theQbar=kTRUE; }
          y = 0.5*TMath::Log((partCheck->Energy()+partCheck->Pz()+1.e-13)/
                             (partCheck->Energy()-partCheck->Pz()+1.e-13));
-         if(y>fYMin && y<fYMax) inYcut=kTRUE;
+         if(fUseYCutHQ && y>fYMinHQ && y<fYMaxHQ) inYcut=kTRUE;
+         if(!fUseYCutHQ && y>fYMin && y<fYMax) inYcut=kTRUE;
        }
 
        if(fCutOnChild && TMath::Abs(pdg) == fPdgCodeParticleforAcceptanceCut) {
@@ -1113,6 +1120,8 @@ void AliGenPythiaPlus::MakeHeader()
 // Builds the event header, to be called after each event
     if (fHeader) delete fHeader;
     fHeader = new AliGenPythiaEventHeader("Pythia");
+    fHeader->SetTitle(GetTitle());
+
 //
 // Event type  
     ((AliGenPythiaEventHeader*) fHeader)->SetProcessType(fPythia->ProcessCode());
index 6f7bc8f..d8df7ff 100644 (file)
@@ -163,6 +163,11 @@ class AliGenPythiaPlus : public AliGenMC
        {etamin = fEtaMinGamma; etamax = fEtaMaxGamma;}
     virtual void         GetGammaPhiRange(Float_t& phimin, Float_t& phimax) const
        {phimin = fPhiMinGamma*180./TMath::Pi(); phimax = fPhiMaxGamma*180./TMath::Pi();}
+    // Y range for heavy quark trigger
+    virtual void    SetHeavyQuarkYRange(Float_t ymin=-20., Float_t ymax=20.){
+      fYMinHQ = ymin;    fYMaxHQ=ymax;   fUseYCutHQ=kTRUE;
+    }
+
     //
     Bool_t IsInEMCAL(Float_t phi, Float_t eta) const;
     Bool_t IsInPHOS(Float_t phi, Float_t eta) const;
@@ -223,6 +228,9 @@ class AliGenPythiaPlus : public AliGenMC
     Float_t     fEtaMaxGamma;       // Maximum eta of triggered gamma
     Float_t     fPhiMinGamma;       // Minimum phi of triggered gamma
     Float_t     fPhiMaxGamma;       // Maximum phi of triggered gamma
+    Bool_t      fUseYCutHQ;         // siwtch for using y cut for heavy quarks
+    Float_t     fYMinHQ;            // Minimum y of triggered heavy quarks
+    Float_t     fYMaxHQ;            // Maximum y of triggered heavy quarks
     Float_t     fPycellEtaMax;      // Max. eta for Pycell 
     Int_t       fPycellNEta;        // Number of eta bins for Pycell 
     Int_t       fPycellNPhi;        // Number of phi bins for Pycell
@@ -276,7 +284,7 @@ class AliGenPythiaPlus : public AliGenMC
     AliGenPythiaPlus(const AliGenPythiaPlus &Pythia);
     AliGenPythiaPlus & operator=(const AliGenPythiaPlus & rhs);
 
-    ClassDef(AliGenPythiaPlus, 2) // AliGenerator interface to Pythia
+    ClassDef(AliGenPythiaPlus, 3) // AliGenerator interface to Pythia
 };
 #endif