FairRoot/PandaRoot
PndChiGenExclusive.cxx
Go to the documentation of this file.
1 /*
2  * @author Alexey Luchinsky
3  * @author Stanislav Poslavsky (stvlpos (at) mail.ru)
4  */
5 
6 #include "PndChiGenExclusive.h"
7 #include "EvtGenBase/EvtParticle.hh"
8 #include "EvtGenBase/EvtParticleFactory.hh"
9 
11 : model(pmodel) {
13  double Mchi = model.mesonMass;
14  double p = sqrt(
15  (pow(Mchi, 4) - 4 * pow(Mchi, 2) * pow(PROTON_MASS, 2))
16  / (4 * pow(PROTON_MASS, 2)));
17  double e = sqrt(pow(Mchi, 2) + p * p);
18  chiMomentum = EvtVector4R(e, 0., 0., p);
19  assert(Mchi * Mchi - 1E-6 <= chiMomentum.mass2()
20  && chiMomentum.mass2() <= Mchi * Mchi + 1E-6);
21 }
22 
24 }
25 
27  EvtParticle *chiMeson =
28  EvtParticleFactory::particleFactory(model.evtId, chiMomentum);
29  chiMeson->setSpinDensityForward(model.spinDensity);
30 
31  //decay
32  chigen::evtgen::evt_gen->generateDecay(chiMeson);
33  //write info
34  evtstdhep.init();
35  chiMeson->makeStdHep(evtstdhep);
36 
37  if (chigen::ostreams::verbose_mode)//<- if verbose then print Pythia event
38  chigen::pythia::pythia->event.reset();
39 
40  EvtVector4R vertexPoint, evtMomentum;
41  for (int particleNumber = 0, size = evtstdhep.getNPart();
42  particleNumber < size; ++particleNumber) {
43 
44  vertexPoint = evtstdhep.getX4(particleNumber);
45  evtMomentum = evtstdhep.getP4(particleNumber);
46 
48  //printing Pythia event
49  int id;
50  Pythia8::Particle p;
51  p.id(id = evtstdhep.getStdHepID(particleNumber));
52  p.px(evtMomentum.get(1));
53  p.py(evtMomentum.get(2));
54  p.pz(evtMomentum.get(3));
55  p.e(evtMomentum.get(0));
56  p.daughter1(evtstdhep.getFirstDaughter(particleNumber) + 1);
57  p.daughter2(evtstdhep.getLastDaughter(particleNumber) + 1);
58  p.mother1(evtstdhep.getFirstMother(particleNumber) + 1);
59  p.mother2(evtstdhep.getLastMother(particleNumber) + 1);
60  if (id == CHI1_PDG_ID || id == CHI2_PDG_ID || id == PSI_PDG_ID)
61  p.status(-33);
62  else
63  p.status(91);
64  chigen::pythia::pythia->event.append(p);
65  }
66 
67  //skip non final particles
68  if (evtstdhep.getFirstDaughter(particleNumber) != -1 ||
69  evtstdhep.getLastDaughter(particleNumber) != -1)
70  continue;
71 
72  primGen->AddTrack(evtstdhep.getStdHepID(particleNumber),
73  evtMomentum.get(1), evtMomentum.get(2), evtMomentum.get(3),
74  vertexPoint.get(1), vertexPoint.get(2), vertexPoint.get(3),
75  -1, true, evtMomentum.get(0));
76  }
79  return true;
80 }
81 
void ensure_chigen_is_initialized()
virtual Bool_t ReadEvent(FairPrimaryGenerator *primGen)
#define CHI1_PDG_ID
Definition: ChiGenContext.h:43
friend F32vec4 sqrt(const F32vec4 &a)
Definition: P4_F32vec4.h:29
std::ostream * chigen_cout
Double_t p
Definition: anasim.C:58
FairPrimaryGenerator * primGen
Definition: sim_emc_apd.C:81
#define PROTON_MASS
Definition: ChiGenContext.h:31
#define CHI2_PDG_ID
Definition: ChiGenContext.h:49
PndChiGenExclusive(PartonicModel &model)
ClassImp(PndAnaContFact)
#define PSI_PDG_ID
Definition: ChiGenContext.h:41
Pythia8::Pythia * pythia