#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),
// Destructor
if(fRandomEngine) {delete fRandomEngine;}
fRandomEngine = 0;
+ if(fRadCorrEngine) {delete fRadCorrEngine;}
+ fRadCorrEngine = 0;
if(fGenerator) {delete fGenerator;}
fGenerator = 0;
if(fEvtstdhep) {delete fEvtstdhep;}
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)
//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();
}
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));
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:
+ SetDecayTablePath(gSystem->ExpandPathName("$ALICE_ROOT/TEvtGen/EvtGen/DecayTable/BTOELE.DEC"));
+ break;
+ case kHadronicD:
+ SetDecayTablePath(gSystem->ExpandPathName("$ALICE_ROOT/TEvtGen/EvtGen/DecayTable/BTOD.DEC"));
+ break;
+ case kChiToJpsiGammaToElectronElectron:
+ SetDecayTablePath(gSystem->ExpandPathName("$ALICE_ROOT/TEvtGen/EvtGen/DecayTable/CHICTOJPSITOELE.DEC"));
+ break;
case kChiToJpsiGammaToMuonMuon:
- case kChiToJpsiGammaToElectronElectron:
+ 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 kHardMuons:
case kPiToMu:
case kKaToMu:
case kAllMuonic:
case kWToCharmToMuon:
case kZDiMuon:
case kZDiElectron:
- case kHadronicD:
case kHadronicDWithout4Bodies:
case kPhiKK:
case kOmega:
- case kLambda:
+ case kLambda:
case kNoDecay:
case kNoDecayHeavy:
case kNeutralPion:
- case kBPsiPrimeDiElectron:
- AliWarning(Form("Warning: case %s not implemented for this class!",(Char_t)decay));
+ case kBeautyUpgrade:
+ case kBJpsiUndecayed:
+ case kDiElectronEM:
+ case kElectronEM:
+ case kGammaEM:
+ case kNoDecayBeauty:
+ case kPsiPrimeJpsiDiElectron:
+ AliWarning(Form("Warning: case %d not implemented for this class!",(int)decay));
break;
}
ReadDecayTable();