1 #ifndef CosmicMuonGenerator_h 2 #define CosmicMuonGenerator_h 10 #include <CLHEP/Random/RandomEngine.h> 11 #include <CLHEP/Random/JamesRandom.h> 14 class HepRandomEngine;
53 ElossScaleFactor = 1.0;
54 RadiusOfTarget = 8000.;
55 ZDistOfTarget = 15000.;
59 MultiMuonFileName =
"dummy.root";
60 MultiMuonFileFirstEvent = 0;
62 TIFOnly_constant =
false;
63 TIFOnly_linear =
false;
73 NotInitialized =
true;
90 std::cout <<
"*********************************************************" << std::endl;
91 std::cout <<
"*********************************************************" << std::endl;
93 std::cout <<
"*** C O S M I C M U O N G E N E R A T O R (vC++) ***" << std::endl;
95 std::cout <<
"*********************************************************" << std::endl;
96 std::cout <<
"*********************************************************" << std::endl;
117 double Px_at;
double Py_at;
double Pz_at;
120 double Vx_at;
double Vy_at;
double Vz_at;
125 std::vector<double> Px_mu; std::vector<double> Py_mu; std::vector<double>
Pz_mu;
127 std::vector<double> Vx_mu; std::vector<double> Vy_mu; std::vector<double>
Vz_mu;
132 std::vector<double> Px_sf; std::vector<double> Py_sf; std::vector<double>
Pz_sf;
135 std::vector<double> Vx_sf; std::vector<double> Vy_sf; std::vector<double>
Vz_sf;
139 std::vector<double> Px_ug; std::vector<double> Py_ug; std::vector<double>
Pz_ug;
142 std::vector<double> Vx_ug; std::vector<double> Vy_ug; std::vector<double>
Vz_ug;
224 bool goodOrientation();
231 void setNumberOfEvents(
unsigned int N);
232 void setRanSeed(
int N);
233 void setMinP(
double P);
234 void setMinP_CMS(
double P);
235 void setMaxP(
double P);
236 void setMinTheta(
double Theta);
237 void setMaxTheta(
double Theta);
238 void setMinPhi(
double Phi);
239 void setMaxPhi(
double Phi);
240 void setMinT0(
double T0);
241 void setMaxT0(
double T0);
242 void setElossScaleFactor(
double ElossScaleFact);
243 void setRadiusOfTarget(
double R);
244 void setZDistOfTarget(
double Z);
245 void setZCentrOfTarget(
double Z);
247 void setMultiMuon(
bool MultiMu);
248 void setMultiMuonFileName(
std::string MultiMuonFileName);
249 void setMultiMuonFileFirstEvent(
int MultiMuFile1stEvt);
250 void setMultiMuonNmin(
int MultiMuNmin);
251 void setTIFOnly_constant(
bool TIF);
252 void setTIFOnly_linear(
bool TIF);
253 void setMTCCHalf(
bool MTCC);
254 void setPlugVx(
double PlugVtx);
255 void setPlugVz(
double PlugVtz);
256 void setRhoAir(
double VarRhoAir);
257 void setRhoWall(
double VarRhoSWall);
258 void setRhoRock(
double VarRhoRock);
259 void setRhoClay(
double VarRhoClay);
260 void setRhoPlug(
double VarRhoPlug);
261 void setClayWidth(
double ClayLaeyrWidth);
263 void setMinEnu(
double MinEn);
264 void setMaxEnu(
double MaxEn);
265 void setNuProdAlt(
double NuPrdAlt);
266 void setAcptAllMu(
bool AllMu);
270 void setRandomEngine(CLHEP::HepRandomEngine*
v);
271 void initialize(CLHEP::HepRandomEngine *rng =
nullptr);
281 bool nextMultiEvent();
static AlgebraicMatrix initialize()
std::vector< double > Theta_mu
const double PlugOnShaftVz
std::vector< double > E_sf
std::vector< double > Pz_mu
std::vector< double > E_ug
std::string MultiMuonFileName
std::vector< double > Vz_ug
const double PlugOnShaftVx
std::vector< double > Vz_sf
std::vector< double > Vz_mu
int NcloseMultiMuonEvents
CLHEP::HepRandomEngine * RanGen
SingleParticleEvent OneMuoEvt
std::vector< double > T0_sf
int MultiMuonFileFirstEvent
std::pair< OmniClusterRef, TrackingParticleRef > P
std::vector< double > Pz_ug
int NskippedMultiMuonEvents
unsigned int NumberOfEvents
std::vector< double > P_mu
std::vector< double > T0_ug
std::vector< double > Pz_sf