]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - EVGEN/AliGenMC.cxx
Add the number of local boards
[u/mrichter/AliRoot.git] / EVGEN / AliGenMC.cxx
index ce15a232008afac680f5577927808859c4298996..914ee1c59ec33a5d7478b8bf4ac2a8df845e7ee1 100644 (file)
 // decay products and particle selection.
 // andreas.morsch@cern.ch
 
+#include <TClonesArray.h>
 #include <TMath.h>
 #include <TPDGCode.h>
 #include <TParticle.h>
 
 #include "AliGenMC.h"
+#include "AliGeometry.h"
 
- ClassImp(AliGenMC)
+ClassImp(AliGenMC)
 
 AliGenMC::AliGenMC()
-                 :AliGenerator()
+    :AliGenerator(),
+     fParticles(0),
+     fParentSelect(8),
+     fChildSelect(8),
+     fCutOnChild(0),
+     fChildPtMin(0.),
+     fChildPtMax(1.e10),
+     fChildPMin(0.),
+     fChildPMax(1.e10),
+     fChildPhiMin(0.),
+     fChildPhiMax(2. * TMath::Pi()),
+     fChildThetaMin(0.),
+     fChildThetaMax(TMath::Pi()),
+     fChildYMin(-12.),
+     fChildYMax(12.),
+     fXingAngleX(0.),
+     fXingAngleY(0.),
+     fForceDecay(kAll),
+     fMaxLifeTime(1.e-15),
+     fAProjectile(1),
+     fZProjectile(1),
+     fATarget(1),
+     fZTarget(1),
+     fProjectile("P"),
+     fTarget("P"),    
+     fDyBoost(0.),
+     fGeometryAcceptance(0),
+     fPdgCodeParticleforAcceptanceCut(0),
+     fNumberOfAcceptedParticles(2)
 {
 // Default Constructor
-    SetCutOnChild();
-    SetChildMomentumRange();
-    SetChildPtRange();
-    SetChildPhiRange();
-    SetChildThetaRange(); 
-    SetChildYRange(); 
-    SetMaximumLifetime();
-    SetGeometryAcceptance();
-    SetPdgCodeParticleforAcceptanceCut();
-    SetNumberOfAcceptedParticles();
-    SetTarget();
-    SetProjectile();
 }
 
 AliGenMC::AliGenMC(Int_t npart)
-                 :AliGenerator(npart)
+    :AliGenerator(npart),
+     fParticles(0),
+     fParentSelect(8),
+     fChildSelect(8),
+     fCutOnChild(0),
+     fChildPtMin(0.),
+     fChildPtMax(1.e10),
+     fChildPMin(0.),
+     fChildPMax(1.e10),
+     fChildPhiMin(0.),
+     fChildPhiMax(2. * TMath::Pi()),
+     fChildThetaMin(0.),
+     fChildThetaMax(TMath::Pi()),
+     fChildYMin(-12.),
+     fChildYMax(12.),
+     fXingAngleX(0.),
+     fXingAngleY(0.),
+     fForceDecay(kAll),
+     fMaxLifeTime(1.e-15),
+     fAProjectile(1),
+     fZProjectile(1),
+     fATarget(1),
+     fZTarget(1),
+     fProjectile("P"),
+     fTarget("P"),    
+     fDyBoost(0.),
+     fGeometryAcceptance(0),
+     fPdgCodeParticleforAcceptanceCut(0),
+     fNumberOfAcceptedParticles(2)
 {
 //  Constructor
-    SetCutOnChild();
-    SetChildMomentumRange();
-    SetChildPtRange();
-    SetChildPhiRange();
-    SetChildThetaRange();
-    SetChildYRange(); 
 // 
-    fParentSelect.Set(8);
-    fChildSelect.Set(8);
     for (Int_t i=0; i<8; i++) fParentSelect[i]=fChildSelect[i]=0;
-    SetMaximumLifetime();
-    SetGeometryAcceptance();
-    SetPdgCodeParticleforAcceptanceCut();
-    SetNumberOfAcceptedParticles();
-    SetTarget();
-    SetProjectile();
-}
-
-AliGenMC::AliGenMC(const AliGenMC & mc)
-{
-// copy constructor
 }
 
 AliGenMC::~AliGenMC()
@@ -84,30 +111,44 @@ void AliGenMC::Init()
 //
 //  Initialization
     switch (fForceDecay) {
+    case kBSemiElectronic:
     case kSemiElectronic:
     case kDiElectron:
     case kBJpsiDiElectron:
     case kBPsiPrimeDiElectron:
        fChildSelect[0] = kElectron;    
        break;
+    case kHardMuons:   
+    case kBSemiMuonic:
     case kSemiMuonic:
     case kDiMuon:
     case kBJpsiDiMuon:
     case kBPsiPrimeDiMuon:
     case kPiToMu:
     case kKaToMu:
+    case kWToMuon:
+    case kWToCharmToMuon:
+    case kZDiMuon:
        fChildSelect[0]=kMuonMinus;
        break;
+    case kWToCharm:
+       break;
     case kHadronicD:
        fChildSelect[0]=kPiPlus;
        fChildSelect[1]=kKPlus;
        break;
     case kPhiKK:
        fChildSelect[0]=kKPlus;
+       break;
+    case kBJpsi:
+       fChildSelect[0]=443;
+       break;
     case kOmega:       
     case kAll:
+    case kAllMuonic:
     case kNoDecay:
     case kNoDecayHeavy:
+    case kNeutralPion:
        break;
     }
 
@@ -244,24 +285,26 @@ Bool_t AliGenMC::KinematicSelection(TParticle *particle, Int_t flag) const
 
 Bool_t AliGenMC::CheckAcceptanceGeometry(Int_t np, TClonesArray* particles)
 {
-  Bool_t Check ;  // All fPdgCodeParticleforAcceptanceCut particles are in in the fGeometryAcceptance acceptance
-  Int_t NumberOfPdgCodeParticleforAcceptanceCut=0;
-  Int_t NumberOfAcceptedPdgCodeParticleforAcceptanceCut=0;
+// Check the geometrical acceptance for particle.
+
+  Bool_t check ;  
+  Int_t numberOfPdgCodeParticleforAcceptanceCut = 0;
+  Int_t numberOfAcceptedPdgCodeParticleforAcceptanceCut = 0;
   TParticle * particle;
   Int_t i;
-  for (i=0; i<np; i++) {
+  for (i = 0; i < np; i++) {
     particle =  (TParticle *) particles->At(i);
     if( TMath::Abs( particle->GetPdgCode() ) == TMath::Abs( fPdgCodeParticleforAcceptanceCut ) ) {
-      NumberOfPdgCodeParticleforAcceptanceCut++;
-      if (fGeometryAcceptance->Impact(particle)) NumberOfAcceptedPdgCodeParticleforAcceptanceCut++;
+      numberOfPdgCodeParticleforAcceptanceCut++;
+      if (fGeometryAcceptance->Impact(particle)) numberOfAcceptedPdgCodeParticleforAcceptanceCut++;
     }   
   }
-  if ( NumberOfAcceptedPdgCodeParticleforAcceptanceCut > (fNumberOfAcceptedParticles-1) )
-    Check = kTRUE;
+  if ( numberOfAcceptedPdgCodeParticleforAcceptanceCut > (fNumberOfAcceptedParticles-1) )
+    check = kTRUE;
   else
-    Check = kFALSE;
+    check = kFALSE;
 
-  return Check;
+  return check;
 }
 
 Int_t AliGenMC::CheckPDGCode(Int_t pdgcode) const
@@ -326,12 +369,3 @@ void AliGenMC::Boost()
        iparticle->SetMomentum(px, py, pzb, eb);
     }
 }
-
-
-         
-AliGenMC& AliGenMC::operator=(const  AliGenMC& rhs)
-{
-// Assignment operator
-    return *this;
-}
-