Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/programs/Simulation/SConscript
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import os,sbms

Import('*')

subdirs = ['genr8', 'GEN2HDDM', 'genr8_2_hddm', 'HDGeant', 'mcsmear', 'bggen', 'gen_2k', 'gen_2pi', 'gen_2pi_amp', 'gen_2pi_primakoff','gen_3pi', 'gen_pi0', 'gen_omega_3pi', 'gen_omega_radiative' , 'nullgen', 'gen_amp', 'gen_amp_V2', 'BGRate_calc', 'genEtaRegge', 'gen_ee', 'gen_ee_hb', 'genScalarRegge', 'gen_compton', 'gen_omegapi', 'gen_vec_ps', 'gen_compton_simple', 'gen_primex_eta_he4', 'gen_whizard', 'MC_GEN', 'bggen_jpsi', 'gen_2pi0_primakoff', 'gen_EtaPb', 'bggen_upd']
subdirs = ['genr8', 'GEN2HDDM', 'genr8_2_hddm', 'HDGeant', 'mcsmear', 'bggen', 'gen_2k', 'gen_2pi', 'gen_2pi_amp', 'gen_2pi_primakoff','gen_3pi', 'gen_pi0', 'gen_omega_3pi', 'gen_omega_radiative' , 'nullgen', 'gen_amp', 'gen_amp_V2', 'BGRate_calc', 'genEtaRegge', 'gen_ee', 'gen_ee_hb', 'genScalarRegge', 'gen_compton', 'gen_omegapi', 'gen_vec_ps', 'gen_compton_simple', 'gen_primex_eta_he4', 'gen_whizard', 'MC_GEN', 'bggen_jpsi', 'gen_2pi0_primakoff', 'gen_EtaPb', 'bggen_upd', 'gen_generic_root']


# only build if EvtGen is installed
Expand Down
2 changes: 1 addition & 1 deletion src/programs/Simulation/bggen_upd/code/sf_data.inc
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ C--- COMMON for the spectral function data
C--- 2023/11/16
C
INTEGER MXSFB
PARAMETER (MXSFB=100)
PARAMETER (MXSFB=1000)
COMMON/SF_DATA/ SF_A ! A mass of the nucleus
+ ,NE_SF ! number of bins in E
+ ,NP_SF ! number of bins in P
Expand Down
1,003 changes: 1,003 additions & 0 deletions src/programs/Simulation/bggen_upd/run/spec_fun/sf_Benhar_2.dat

Large diffs are not rendered by default.

55 changes: 36 additions & 19 deletions src/programs/Simulation/gen_generic_root/HddmOut.h
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,13 @@ struct tmpEvt_t {
int nGen;
TString rxn;
double weight;
Particle_t t_target;
Particle_t t_spectator;
Particle_t t_participant;
TLorentzVector beam;
TLorentzVector target;
TLorentzVector q[10];
Particle_t t_particles[10];
TLorentzVector recoil;
int pdg[10];
};
Expand All @@ -39,7 +43,9 @@ class HddmOut {
s_HDDM_t* hddmEvt;
s_Origin_t* origin;
s_Products_t* products;

Particle_t t_target;
Particle_t t_spectator;
Particle_t t_participant;
Particle_t targetType;
Particle_t beamType;

Expand All @@ -50,7 +56,9 @@ class HddmOut {
targetType = Proton;
beamType = Gamma;
}


Particle_t TYPE;

~HddmOut() {
close_s_HDDM(ostream);
}
Expand All @@ -71,13 +79,13 @@ class HddmOut {
reaction->target = target = make_s_Target();
target->type = targetType;
target->properties = make_s_Properties();
target->properties->charge = ParticleCharge(targetType);
target->properties->mass = ParticleMass(targetType);
//target->properties->charge = ParticleCharge(targetType);
//target->properties->mass = ParticleMass(targetType);
target->momentum = make_s_Momentum();
target->momentum->px = 0;
target->momentum->py = 0;
target->momentum->pz = 0;
target->momentum->E = ParticleMass(targetType);
//target->momentum->px = 0;
//target->momentum->py = 0;
//target->momentum->pz = 0;
//target->momentum->E = ParticleMass(targetType);
reaction->beam = beam = make_s_Beam();
beam->type = beamType;
beam->properties = make_s_Properties();
Expand All @@ -100,33 +108,42 @@ class HddmOut {
origin->vy = 0.0;
origin->vz = 0.0;

beam->momentum->px = evt.beam.Px();
beam->momentum->py = evt.beam.Py();
beam->momentum->pz = evt.beam.Pz();
beam->momentum->E = evt.beam.E();

target->type = evt.t_target;
target->properties->charge = ParticleCharge(evt.t_target);
target->properties->mass = ParticleMass(evt.t_target);

target->momentum->px = evt.target.Px();
target->momentum->py = evt.target.Py();
target->momentum->pz = evt.target.Pz();
target->momentum->E = evt.target.E();

beam->momentum->px = evt.beam.Px();
beam->momentum->py = evt.beam.Py();
beam->momentum->pz = evt.beam.Pz();
beam->momentum->E = evt.beam.E();

products->mult = evt.nGen;
reaction->weight = evt.weight;

//cout <<"nGen " << evt.nGen << endl;

for (int i = 0; i < evt.nGen; i ++) {
Particle_t TYPE;
if (evt.pdg[i] == 211) TYPE = PiPlus;
if (evt.pdg[i] == -211) TYPE = PiMinus;
if (evt.pdg[i] == 321) TYPE = KPlus;
if (evt.pdg[i] == -321) TYPE = KMinus;
if (evt.pdg[i] == 3122) TYPE = Lambda;
if (evt.pdg[i] == -3122) TYPE = AntiLambda;
if (evt.pdg[i] == 0) TYPE = Unknown;
products->in[i].type = TYPE;
products->in[i].pdgtype = evt.pdg[i];
products->in[i].id = i;
products->in[i].type = evt.t_particles[i];
products->in[i].pdgtype = PDGtype(evt.t_particles[i]);
products->in[i].id = i + 1;
products->in[i].parentid = 0;
products->in[i].mech = 0;
products->in[i].momentum = make_s_Momentum();
products->in[i].momentum->px = evt.q[i].Px();
products->in[i].momentum->py = evt.q[i].Py();
products->in[i].momentum->pz = evt.q[i].Pz();
products->in[i].momentum->E = evt.q[i].E();
//products->in[i].momentum->t = evt.q[i].t();
}

flush_s_HDDM(hddmEvt, ostream);
Expand Down
267 changes: 267 additions & 0 deletions src/programs/Simulation/gen_generic_root/MyReadConfig.cc
Original file line number Diff line number Diff line change
@@ -0,0 +1,267 @@
/**************************************************************************
* HallD software *
* Copyright(C) 2019 GlueX and PrimEX-D Collaborations *
* *
* Author: The GlueX and PrimEX-D Collaborations *
* Contributors: Igal Jaegle *
* *
* This software is provided "as is" without any warranty. *
**************************************************************************/

#include "MyReadConfig.h"

//------------------------------------------------------------------------------
MyReadConfig::MyReadConfig() {
nLine=0;

// Check if env. variable $ exist
//

strCaLibPath = gSystem->pwd();

//this->ReadConfigFile( "config.dat" );
}

//------------------------------------------------------------------------------
MyReadConfig::MyReadConfig( Char_t * szFin ) {
nLine=0;

this->ReadConfigFile( szFin );
}

//------------------------------------------------------------------------------
MyReadConfig::~MyReadConfig() {
}

//------------------------------------------------------------------------------
void MyReadConfig::ReadConfigFile( const Char_t *szFin ) {
// Build File name
char szCalibFile[400];
sprintf( szCalibFile,
"%s/%s",
strCaLibPath.Data(),
szFin );

//
ifstream infile;
infile.open( szCalibFile );

if ( !infile.is_open() ) {
printf("\n ERROR: opening \"%s\" file ! ! !\n\n", szFin);
} else {
printf("\n ---------------------------------------- \n");
printf(" Read File : \"%s\"\n", szFin);

while ( infile.good() ) {
strLine[nLine]="";
strLine[nLine].ReadLine(infile);

if ( strLine[nLine].BeginsWith("#") ) {
// printf("Comment : %s \n", strLine[nLine].Data());
} else if ( strLine[nLine].Contains("FILE") ) {
TString strFile = this->ExtractName( strLine[nLine] );

this->ReadConfigFile( strFile.Data() );
}
nLine++;
if ( nLine >= MAX_LINE ) {
printf("\n ERROR: Number of lines is more than MAX_LINE ! ! !\n\n");
gSystem->Exit(0);
}
}
}

infile.close();
return;
}

//------------------------------------------------------------------------------
TString MyReadConfig::ExtractName( TString strIn ) {
Ssiz_t aa = strIn.First(":")+1;
Ssiz_t bb = strIn.Length()-aa;

TString cc = strIn(aa, bb);
cc.ReplaceAll(" ","");
return cc;
}

//------------------------------------------------------------------------------
TString MyReadConfig::GetConfigName( TString name ) {
TString strOut;

for ( Int_t i=0; i<nLine; i++) {
if ( !( strLine[i].BeginsWith("#") ) &&
strLine[i].Contains( name ) ) {
strOut = this->ExtractName( strLine[i] );
}
}
return strOut;
}

//------------------------------------------------------------------------------

Double_t* MyReadConfig::GetConfig6Par( TString name ) {
Char_t tmp1[256];
Char_t tmp2[256];
Char_t tmp3[256];
Char_t tmp4[256];
Char_t tmp5[256];
Char_t tmp6[256];

Double_t* iPar = new Double_t[6];

for ( Int_t i=0; i<nLine; i++) {
if ( !( strLine[i].BeginsWith("#") ) && strLine[i].Contains( name ) ) {
sscanf( strLine[i].Data(),"%*s %s %s %s %s %s %s",tmp1,tmp2,tmp3,tmp4,tmp5,tmp6);
}
}

iPar[0] = atof(tmp1);
iPar[1] = atof(tmp2);
iPar[2] = atof(tmp3);
iPar[3] = atof(tmp4);
iPar[4] = atof(tmp5);
iPar[5] = atof(tmp6);

return iPar;
}

//------------------------------------------------------------------------------

Double_t* MyReadConfig::GetConfig5Par( TString name ) {
Char_t tmp1[256];
Char_t tmp2[256];
Char_t tmp3[256];
Char_t tmp4[256];
Char_t tmp5[256];

Double_t* iPar = new Double_t[5];

for ( Int_t i=0; i<nLine; i++) {
if ( !( strLine[i].BeginsWith("#") ) && strLine[i].Contains( name ) ) {
sscanf( strLine[i].Data(),"%*s %s %s %s %s %s",tmp1,tmp2,tmp3,tmp4,tmp5);
}
}

iPar[0] = atof(tmp1);
iPar[1] = atof(tmp2);
iPar[2] = atof(tmp3);
iPar[3] = atof(tmp4);
iPar[4] = atof(tmp5);

return iPar;
}

//------------------------------------------------------------------------------

Double_t* MyReadConfig::GetConfig4Par( TString name ) {
Char_t tmp1[256];
Char_t tmp2[256];
Char_t tmp3[256];
Char_t tmp4[256];

Double_t* iPar = new Double_t[4];

for ( Int_t i=0; i<nLine; i++) {
if ( !( strLine[i].BeginsWith("#") ) && strLine[i].Contains( name ) ) {
sscanf( strLine[i].Data(),"%*s %s %s %s %s",tmp1,tmp2,tmp3,tmp4);
}
}

iPar[0] = atof(tmp1);
iPar[1] = atof(tmp2);
iPar[2] = atof(tmp3);
iPar[3] = atof(tmp4);

return iPar;
}

//------------------------------------------------------------------------------

Double_t* MyReadConfig::GetConfig3Par( TString name ) {
Char_t tmp1[256];
Char_t tmp2[256];
Char_t tmp3[256];

Double_t* iPar = new Double_t[3];

for ( Int_t i=0; i<nLine; i++) {
if ( !( strLine[i].BeginsWith("#") ) && strLine[i].Contains( name ) ) {
sscanf( strLine[i].Data(),"%*s %s %s %s",tmp1,tmp2,tmp3);
}
}

iPar[0] = atof(tmp1);
iPar[1] = atof(tmp2);
iPar[2] = atof(tmp3);

return iPar;
}

//------------------------------------------------------------------------------

Double_t* MyReadConfig::GetConfig2Par( TString name ) {
Char_t tmp1[256];
Char_t tmp2[256];

Double_t* iPar = new Double_t[2];

for ( Int_t i=0; i<nLine; i++) {
if( !( strLine[i].BeginsWith("#") ) && strLine[i].Contains( name ) ) {
sscanf( strLine[i].Data(),"%*s %s %s",tmp1,tmp2);
}
}

iPar[0] = atof(tmp1);
iPar[1] = atof(tmp2);

return iPar;
}




//------------------------------------------------------------------------------

Double_t* MyReadConfig::GetConfig1Par( TString name ) {
Char_t tmp1[256];

Double_t* iPar = new Double_t[1];

for ( Int_t i=0; i<nLine; i++) {
if ( !( strLine[i].BeginsWith("#") ) && strLine[i].Contains( name ) ) {
sscanf( strLine[i].Data(),"%*s %s",tmp1);
}
}

iPar[0] = atof(tmp1);

return iPar;
}


//------------------------------------------------------------------------------

TString* MyReadConfig::GetConfig5str( TString name ) {
Char_t tmp1[256];
Char_t tmp2[256];
Char_t tmp3[256];
Char_t tmp4[256];
Char_t tmp5[256];

TString* iPar = new TString[5];

for ( Int_t i=0; i<nLine; i++) {
if ( !( strLine[i].BeginsWith("#") ) && strLine[i].Contains( name ) ) {
sscanf( strLine[i].Data(),"%*s %s %s %s %s %s",tmp1,tmp2,tmp3,tmp4,tmp5);
}
}

iPar[0] = tmp1;
iPar[1] = tmp2;
iPar[2] = tmp3;
iPar[3] = tmp4;
iPar[4] = tmp5;

return iPar;
}
Loading