dglazier / elSpectro

Event Generator for electron scattering hadron spectroscopy
GNU Lesser General Public License v2.1
1 stars 3 forks source link

elSpectro

Event Generator framework for incorporating Spectroscopy into electro / photoproduction reactions.

Prerequisites

ROOT 6

with MathMore RooFit GenVector EG

We require jpacPhot but this is included as a submodule. You may link to your own version of you prefer.

Installation

 git clone --recurse-submodules https://github.com/dglazier/elSpectro

 cd elSpectro

Set Environment

 setenv ELSPECTRO /path/to/elSpectro (or $PWD)
 setenv PATH ${PATH}:${ELSPECTRO}/bin

Note, if you want to use jpacPhoto with jpacBox you need to add the C++ boost library location to your path

  setenv PATH ${PATH}:/where/is/boost

Build with cmake

 mkdir build; cd build; cmake ../

 cmake --build . --target install

Output files

Currently you can write to CLAS12-Lund, HEPMC3, EICSmearSimple data formats e.g.

  writer(new EICSimpleWriter{Form("outCollision/jpac_Zc3900_%d_%d.txt",(int)ebeamE,(int)pbeamE)});
  writer(new HepMC3Writer{Form("out/jpac_x3872_%s_%d_%d.txt",ampPar.data(),(int)ebeamE,(int)pbeamE)});
  writer(new LundWriter{Form("out_mesonex/ep_to_nX3pi_%d.dat",(int)ebeamE)});

Running examples

 cd examples

Note the --i option means retain interactive root session, if not included elsepctro will exit once script is complete.

Examples comparing to simple weighting of TGenPhaseSpace

1) Decay a rho meson to 2 pi

  elspectro --i ComparePhaseSpaceto2.C

2) Decay g+p -> rho(pi+,pi-) p

  elspectro --i  ComparePhaseSpaceto3Rho.C

3) Decay g+p -> X(rho(pi+,pi-) , phi(K+,K-) ) p

   elspectro --i ComparePhaseSpaceto5RhoPhi.C

4) Decay g+p -> X(rho(pi+,pi-) , 4pi ) p

   elspectro --i ComparePhaseSpaceto4PiRho.C

Examples of ElectroProduction of Jpac amplitudes

1) e + p -> e' X (Jpsi (e+e-)rho(pi+,pi-)) p

  elspectro  --i 'EIC_JPAC_X3872.C("high",5,41,1E33,10)'

Which will run with 5GeV e- energy, 41 GeV proton, Luminosity=10^33 for 10 days

Or with diagnostic histgrams

  elspectro  --i 'EIC_JPAC_X3872_Hists.C("high",5,41,1E33,10)'

The first argument can be "high" or "low" giving different parameterisations.

To set luminosity and days change last 2 arguments, e.g. for luminosoty 10^33 and 25 days, e- energy 100 and p energy 100 with high energy paramterisation :

  elspectro  --i 'EIC_JPAC_X3872_Hists.C("high",100,100,1E33,25)'

To just run a fixed number of events leave last argument 0 and nLumi=number of events

 elspectro  --i 'EIC_JPAC_X3872_Hists.C("high",100,100,1E4)'

2) e + p -> e' Z(3900) (Jpsi (e+e-) pi+) n

This exampl3 uses the amplitude_blend class rather than running either high or low amplitude. To run with luminosity 10^33 for 25 days

  elspectro --i  'EIC_JPAC_nZc_Hists.C(5,41,1E33,25)'

or to just run 1000 events

  elspectro  --i 'EIC_JPAC_nZc_Hists.C("low",5,41,1000)'

Examples of MesonEx Quasi-real PhotoProduction

Note forward tagger acceptance can be included with lines like

 production->SetLimitTarRest_eThmin(1.5*TMath::DegToRad());
 production->SetLimitTarRest_eThmax(5.5*TMath::DegToRad());
 production->SetLimitTarRest_ePmin(0.4);
 production->SetLimitTarRest_ePmax(6);

1) e + p -> e' X (pi+pi-) p

 elspectro MesonEx_p2pi.C

2) e + p -> e' X (pi+pi+pi-) n

 elspectro MesonEx_n3pi.C

3) e + p -> e' P_c -> Jpsi(e+e-) p

 elspectro MesonEx_JpsiPenta.C

Also just does phase space Jpsi, which does not need jpacPhoto, see code for details