]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PYTHIA6/AliGenPythia.cxx
Additional software trigger posiibilities for pions and gammas (G. Conesa)
[u/mrichter/AliRoot.git] / PYTHIA6 / AliGenPythia.cxx
index 783b43473385f6e220e3a3945fc63745484d7b1e..3a3fd632bd1872f02b4ede8c78c1317fe1a7714b 100644 (file)
@@ -110,7 +110,19 @@ AliGenPythia::AliGenPythia():
     fCountMode(kCountAll),      
     fHeader(0),  
     fRL(0),      
-    fFileName(0)
+    fFileName(0),
+    fBremssInCalo(kFALSE),
+    fPi0InCalo(kFALSE) ,
+    fBremssPi0InEMCAL(kFALSE),
+    fBremssPi0InPHOS(kFALSE),
+    fBremssPi0MinPt(0), 
+    fPHOSMinPhi(220.),
+    fPHOSMaxPhi(320.),
+    fPHOSEta(0.12),
+    fEMCALMinPhi(80.),
+    fEMCALMaxPhi(190.),
+    fEMCALEta(0.7)
+
 {
 // Default Constructor
   SetNuclei(0,0);
@@ -182,7 +194,18 @@ AliGenPythia::AliGenPythia(Int_t npart)
      fCountMode(kCountAll),      
      fHeader(0),  
      fRL(0),      
-     fFileName(0)  
+     fFileName(0),
+     fBremssInCalo(kFALSE),
+     fPi0InCalo(kFALSE) ,
+     fBremssPi0InEMCAL(kFALSE),
+     fBremssPi0InPHOS(kFALSE),
+     fBremssPi0MinPt(0),
+     fPHOSMinPhi(220.),
+     fPHOSMaxPhi(320.),
+     fPHOSEta(0.12),
+     fEMCALMinPhi(80.),
+     fEMCALMaxPhi(190.),
+     fEMCALEta(0.7)
 {
 // default charm production at 5. 5 TeV
 // semimuonic decay
@@ -262,7 +285,18 @@ AliGenPythia::AliGenPythia(const AliGenPythia & Pythia)
      fCountMode(kCountAll),      
      fHeader(0),  
      fRL(0),      
-     fFileName(0)  
+     fFileName(0),
+     fBremssInCalo(kFALSE),
+     fPi0InCalo(kFALSE) ,
+     fBremssPi0InEMCAL(kFALSE),
+     fBremssPi0InPHOS(kFALSE),
+     fBremssPi0MinPt(0),
+     fPHOSMinPhi(220.),
+     fPHOSMaxPhi(320.),
+     fPHOSEta(0.12),
+     fEMCALMinPhi(80.),
+     fEMCALMaxPhi(190.),
+     fEMCALEta(0.7)   
 {
 // copy constructor
     Pythia.Copy(*this);
@@ -476,6 +510,7 @@ void AliGenPythia::Init()
     case kPyMbMSEL1:
     case kPyJets:
     case kPyDirectGamma:
+    case kPyLhwgMb:    
        break;
     case kPyW:
     case kPyZ:
@@ -520,6 +555,8 @@ void AliGenPythia::Init()
     if (fQuench) {
        fPythia->InitQuenching(0., 0.1, 0.6e6, 0);
     }
+    fPythia->SetPARJ(200, 0.0);
+
     if (fQuench == 3) {
        // Nestor's change of the splittings
        fPythia->SetPARJ(200, 0.8);
@@ -871,6 +908,30 @@ Int_t  AliGenPythia::GenerateMB()
        }
     }
 
+    // Select jets with bremsstrahlung or pi0 going to PHOS or EMCAL
+    if (fProcess == kPyJets && (fBremssInCalo || fPi0InCalo) ) {
+
+      Bool_t ok = kFALSE;
+
+      Int_t pdg  = 0; 
+      if (fBremssInCalo) pdg = 22   ; // Photon
+      else if (fPi0InCalo) pdg = 111 ; // Pi0
+
+      for (i=0; i< np; i++) {
+       TParticle* iparticle = (TParticle *) fParticles->At(i);
+       if(iparticle->GetStatusCode()==1 && iparticle->GetPdgCode()==pdg && 
+          iparticle->Pt() > fBremssPi0MinPt){
+         Float_t phi = iparticle->Phi()*180./TMath::Pi(); //Convert to degrees
+         Float_t eta =TMath::Abs(iparticle->Eta());//in calos etamin=-etamax     
+         if((fBremssPi0InEMCAL && IsInEMCAL(phi,eta)) ||
+             fBremssPi0InPHOS    && IsInPHOS(phi,eta)) 
+           ok =kTRUE;  
+       }
+      }
+      if(!ok)
+       return 0;
+    }
+    
     if (fTriggerParticle) {
        Bool_t triggered = kFALSE;
        for (i = 0; i < np; i++) {
@@ -1357,6 +1418,32 @@ void AliGenPythia::GetSubEventTime()
   return;
 }
 
+Bool_t AliGenPythia::IsInEMCAL(Float_t phi, Float_t eta)
+{
+  // Is particle in EMCAL acceptance? 
+  // Acceptance slightly larger considered.
+  // phi in degrees, etamin=-etamax
+  if(phi > fEMCALMinPhi-0.1  && phi < fEMCALMaxPhi+0.1 && 
+     eta < fEMCALEta+0.01   ) 
+    return kTRUE;
+  else 
+    return kFALSE;
+}
+
+Bool_t AliGenPythia::IsInPHOS(Float_t phi, Float_t eta)
+{
+  // Is particle in PHOS acceptance? 
+  // Acceptance slightly larger considered.
+  // phi in degrees, etamin=-etamax
+  if(phi > fPHOSMinPhi-0.1  && phi < fPHOSMaxPhi+0.1 && 
+     eta < fPHOSEta+0.01   ) 
+    return kTRUE;
+  else 
+    return kFALSE;
+}
+
+
+
 #ifdef never
 void AliGenPythia::Streamer(TBuffer &R__b)
 {