]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - TEvtGen/AliDecayerEvtGen.cxx
Updated maximum number of particles possible in HepMC
[u/mrichter/AliRoot.git] / TEvtGen / AliDecayerEvtGen.cxx
index efd158f77a80b54dd2666fcb979f2df7a1090d27..b99b54dcf37832861d03cf1b902a1a38877affaf 100644 (file)
 
 #include "EvtGenBase/EvtStdHep.hh"
 #include "EvtGenBase/EvtRandomEngine.hh"
+#include "EvtGenBase/EvtStdlibRandomEngine.hh" 
 #include "EvtGen/EvtGen.hh"
 #include "EvtGenBase/EvtParticle.hh"
 #include "EvtGenBase/EvtPDL.hh"
 #include "EvtGenBase/EvtParticleFactory.hh"
 #include "AliDecayerEvtGen.h"
+#include "EvtGenExternal/EvtExternalGenList.hh"
+#include "EvtGenBase/EvtAbsRadCorr.hh"
 #include "AliLog.h"
 
 ClassImp(AliDecayerEvtGen)
 //____________________________________________________________
 AliDecayerEvtGen::AliDecayerEvtGen():
   fRandomEngine(0x0),
+  fRadCorrEngine(0x0),
   fGenerator(0x0),
   fEvtstdhep(0x0),
   fDecayTablePath(0x0),
@@ -68,6 +72,8 @@ AliDecayerEvtGen::~AliDecayerEvtGen()
   // Destructor
   if(fRandomEngine) {delete fRandomEngine;}
   fRandomEngine = 0;
+  if(fRadCorrEngine) {delete fRadCorrEngine;}
+  fRadCorrEngine = 0;
   if(fGenerator) {delete fGenerator;}
   fGenerator = 0;
   if(fEvtstdhep) {delete fEvtstdhep;}
@@ -89,8 +95,14 @@ void AliDecayerEvtGen::Init()
   AliWarning(" AliDecayerEvtGen already initialized!!!!\n");
   return;
   }
-  fRandomEngine=new EvtNUMRandomEngine();
-  fGenerator=new EvtGen(fDecayTablePath,fParticleTablePath,fRandomEngine);
+  fRandomEngine = new EvtStdlibRandomEngine();
+  std::list<EvtDecayBase*> extraModels;
+
+  EvtExternalGenList genList;
+  fRadCorrEngine = genList.getPhotosModel();
+  extraModels = genList.getListOfModels();
+  
+  fGenerator=new EvtGen(fDecayTablePath,fParticleTablePath,fRandomEngine,fRadCorrEngine,&extraModels);
   }
 //____________________________________________________________
 void AliDecayerEvtGen::Decay(Int_t ipart, TLorentzVector *p)
@@ -101,12 +113,12 @@ void AliDecayerEvtGen::Decay(Int_t ipart, TLorentzVector *p)
   //all informations about decay products are stored in fEvtstdhep 
   //
   EvtId IPART=EvtPDL::evtIdFromStdHep(ipart);
-  EvtVector4R p_init=EvtVector4R::EvtVector4R(p->E(),p->Px(),p->Py(),p->Pz());
+  EvtVector4R p_init(p->E(),p->Px(),p->Py(),p->Pz());
   EvtParticle *froot_part=EvtParticleFactory::particleFactory(IPART,p_init);
   fGenerator->generateDecay(froot_part);
   fEvtstdhep->init();
   froot_part->makeStdHep(*fEvtstdhep);
-  //froot_part->printTree(); //to print the decay chain 
+  froot_part->printTree(); //to print the decay chain 
   froot_part->deleteTree();
   }
 
@@ -158,11 +170,12 @@ Int_t AliDecayerEvtGen::ImportParticles(TClonesArray *particles)
   py=p4.get(2);
   pz=p4.get(3);
   e=p4.get(0);
-
-  x=x4.get(1);//[mm]
-  y=x4.get(2);//[mm]
-  z=x4.get(3);//[mm]
-  t=x4.get(0);//[mm]
+  const Float_t kconvT=0.001/2.999792458e8; // mm/c to seconds conversion
+  const Float_t kconvL=1./10; // mm to cm conversion
+  x=x4.get(1)*kconvL;//[cm]
+  y=x4.get(2)*kconvL;//[cm]
+  z=x4.get(3)*kconvL;//[cm]
+  t=x4.get(0)*kconvT;//[s]
 
   AliDebug(1,Form("partnum = %d istat = %d primaMadre = %d ultimaMadre = %d primaF = %d ultimaF=%d x=%f y=%f z=%f t=%f e=%f px=%f \n",partnum,istat,jmotherfirst,jmotherlast,jdaugfirst,jdauglast,x,y,z,t,e,px));
 
@@ -193,29 +206,83 @@ void AliDecayerEvtGen::ForceDecay()
   Decay_t decay = fDecay;
   switch(decay)
     {
-     case kAll: 
-     break;
+     case kAll: // particles decayed "naturally" according to $ALICE_ROOT/TEvtGen/EvtGen/DECAY.DEC
+      break;
      case kBJpsiDiElectron:
-     SetDecayTablePath(gSystem->ExpandPathName("$ALICE_ROOT/TEvtGen/EvtGen/DecayTable/BTOJPSITOELE.DEC"));
-     break;
+      SetDecayTablePath(gSystem->ExpandPathName("$ALICE_ROOT/TEvtGen/EvtGen/DecayTable/BTOJPSITOELE.DEC"));
+      break;
      case kBJpsi:
-     SetDecayTablePath(gSystem->ExpandPathName("$ALICE_ROOT/TEvtGen/EvtGen/DecayTable/BTOJPSI.DEC"));
-     break;
+      SetDecayTablePath(gSystem->ExpandPathName("$ALICE_ROOT/TEvtGen/EvtGen/DecayTable/BTOJPSI.DEC"));
+      break;
      case kBJpsiDiMuon:
-     SetDecayTablePath(gSystem->ExpandPathName("$ALICE_ROOT/TEvtGen/EvtGen/DecayTable/BTOJPSITOMU.DEC"));
-     break;
+      SetDecayTablePath(gSystem->ExpandPathName("$ALICE_ROOT/TEvtGen/EvtGen/DecayTable/BTOJPSITOMU.DEC"));
+      break;
      case kBSemiElectronic:
-     SetDecayTablePath(gSystem->ExpandPathName("$ALICE_ROOT/TEvtGen/EvtGen/DecayTable/BTOELE.DEC"));
-     break;  
-     case kHardMuons:
-     case kChiToJpsiGammaToMuonMuon:
+      SetDecayTablePath(gSystem->ExpandPathName("$ALICE_ROOT/TEvtGen/EvtGen/DecayTable/BTOELE.DEC"));
+      break;
+     case kHadronicD:
+      SetDecayTablePath(gSystem->ExpandPathName("$ALICE_ROOT/TEvtGen/EvtGen/DecayTable/HADRONICD.DEC"));
+      break;
+     case kHadronicDWithout4Bodies:
+      SetDecayTablePath(gSystem->ExpandPathName("$ALICE_ROOT/TEvtGen/EvtGen/DecayTable/HADRONICDWITHOUT4BODIES.DEC"));
+      break;
      case kChiToJpsiGammaToElectronElectron:
+      SetDecayTablePath(gSystem->ExpandPathName("$ALICE_ROOT/TEvtGen/EvtGen/DecayTable/CHICTOJPSITOELE.DEC"));
+      break;
+     case kChiToJpsiGammaToMuonMuon:
+      SetDecayTablePath(gSystem->ExpandPathName("$ALICE_ROOT/TEvtGen/EvtGen/DecayTable/CHICTOJPSITOMUON.DEC"));
+      break;
+     case kSemiElectronic:
+      SetDecayTablePath(gSystem->ExpandPathName("$ALICE_ROOT/TEvtGen/EvtGen/DecayTable/BANDCTOELE.DEC"));
+      break;
      case kBSemiMuonic:
+      SetDecayTablePath(gSystem->ExpandPathName("$ALICE_ROOT/TEvtGen/EvtGen/DecayTable/BTOMU.DEC"));
+      break;
      case kSemiMuonic:
-     case kDiMuon:
-     case kSemiElectronic:
+      SetDecayTablePath(gSystem->ExpandPathName("$ALICE_ROOT/TEvtGen/EvtGen/DecayTable/BANDCTOMU.DEC"));
+      break;
      case kDiElectron:
+      SetDecayTablePath(gSystem->ExpandPathName("$ALICE_ROOT/TEvtGen/EvtGen/DecayTable/DIELECTRON.DEC"));
+      break;
+     case kDiMuon:
+      SetDecayTablePath(gSystem->ExpandPathName("$ALICE_ROOT/TEvtGen/EvtGen/DecayTable/DIMUON.DEC"));
+      break;
      case kBPsiPrimeDiMuon:
+      SetDecayTablePath(gSystem->ExpandPathName("$ALICE_ROOT/TEvtGen/EvtGen/DecayTable/BTOPSIPRIMETODIMUON.DEC"));
+      break;
+     case kBPsiPrimeDiElectron:
+      SetDecayTablePath(gSystem->ExpandPathName("$ALICE_ROOT/TEvtGen/EvtGen/DecayTable/BTOPSIPRIMETODIELECTRON.DEC"));
+      break;
+     case kJpsiDiMuon:
+      SetDecayTablePath(gSystem->ExpandPathName("$ALICE_ROOT/TEvtGen/EvtGen/DecayTable/JPSIDIMUON.DEC"));
+      break;
+     case kPsiPrimeJpsiDiElectron:
+      SetDecayTablePath(gSystem->ExpandPathName("$ALICE_ROOT/TEvtGen/EvtGen/DecayTable/PSIPRIMETOJPSITOMU.DEC"));
+      break;
+     case kPhiKK:
+      SetDecayTablePath(gSystem->ExpandPathName("$ALICE_ROOT/TEvtGen/EvtGen/DecayTable/PHITOK.DEC"));
+      break;
+     case kOmega:
+      SetDecayTablePath(gSystem->ExpandPathName("$ALICE_ROOT/TEvtGen/EvtGen/DecayTable/OMEGATOLAMBDAK.DEC"));
+      break;
+     case kLambda:
+      SetDecayTablePath(gSystem->ExpandPathName("$ALICE_ROOT/TEvtGen/EvtGen/DecayTable/LAMBDATOPROTPI.DEC"));
+      break;
+     case kHardMuons:
+      SetDecayTablePath(gSystem->ExpandPathName("$ALICE_ROOT/TEvtGen/EvtGen/DecayTable/HARDMUONS.DEC"));
+      break;
+     case kElectronEM:
+      SetDecayTablePath(gSystem->ExpandPathName("$ALICE_ROOT/TEvtGen/EvtGen/DecayTable/ELECTRONEM.DEC"));
+      break;
+     case kDiElectronEM:
+      SetDecayTablePath(gSystem->ExpandPathName("$ALICE_ROOT/TEvtGen/EvtGen/DecayTable/DIELECTRONEM.DEC"));
+      break;
+     case kGammaEM:
+      SetDecayTablePath(gSystem->ExpandPathName("$ALICE_ROOT/TEvtGen/EvtGen/DecayTable/GAMMAEM.DEC"));
+      break;
+     case kBeautyUpgrade:
+      SetDecayTablePath(gSystem->ExpandPathName("$ALICE_ROOT/TEvtGen/EvtGen/DecayTable/BEAUTYUPGRADE.DEC"));
+      break;     
      case kPiToMu:
      case kKaToMu:
      case kAllMuonic:
@@ -224,16 +291,12 @@ void AliDecayerEvtGen::ForceDecay()
      case kWToCharmToMuon:
      case kZDiMuon:
      case kZDiElectron:
-     case kHadronicD:
-     case kHadronicDWithout4Bodies:
-     case kPhiKK:
-     case kOmega:
-     case kLambda:      
      case kNoDecay:
      case kNoDecayHeavy:
      case kNeutralPion:
-     case kBPsiPrimeDiElectron:
-     AliWarning(Form("Warning: case %s not implemented for this class!",(Char_t)decay));
+     case kBJpsiUndecayed: 
+     case kNoDecayBeauty:
+      AliWarning(Form("Warning: case %d not implemented for this class!",(int)decay));
      break;
      }
      ReadDecayTable();