4 const double beam_X0 = 0.0,
const double beam_Y0 = 0.0,
5 const double target_Z0 = 0.0,
const double beam_width_sigma_X = 0.0,
6 const double beam_width_sigma_Y = 0.0,
7 const double target_width_Z = 0.0,
8 const double beam_grad_X = 0.0,
const double beam_grad_Y = 0.0,
9 const double beam_grad_sigma_X = 0.0,
const double beam_grad_sigma_Y = 0.0,
10 const TString lmd_geometry_filename =
"Luminosity-Detector.root",
11 std::string misalignment_matrices_path =
"",
12 bool use_point_transform_misalignment =
false,
32 FairRunSim *
fRun =
new FairRunSim();
35 fRun->SetName(
"TGeant4");
37 fRun->SetOutputFile(simOutput);
40 fRun->SetMaterials(
"media_pnd.geo");
42 fRun->SetGenerateRunInfo(
false);
43 fRun->SetUseFairLinks(
true);
48 Cave->SetGeometryFileName(
"pndcave.geo");
49 fRun->AddModule(Cave);
53 Magnet->SetGeometryFileName(
"FullSuperconductingSolenoid_v831.root");
54 fRun->AddModule(Magnet);
67 Dipole->SetGeometryFileName(
"dipole.geo");
68 fRun->AddModule(Dipole);
71 Pipe->SetGeometryFileName(
"beampipe_201309.root");
72 fRun->AddModule(Pipe);
125 Lum->SetGeometryFileName(lmd_geometry_filename);
127 fRun->AddModule(Lum);
131 FairPrimaryGenerator*
primGen =
new FairPrimaryGenerator();
132 if (beam_X0 != 0.0 || beam_Y0 != 0.0 || beam_width_sigma_X > 0.0 || beam_width_sigma_Y > 0.0) {
133 primGen->SmearGausVertexXY(
true);
134 primGen->SetBeam(beam_X0, beam_Y0, beam_width_sigma_X, beam_width_sigma_Y);
136 if(target_Z0 != 0.0 || target_width_Z > 0.0) {
137 primGen->SmearGausVertexZ(
true);
138 primGen->SetTarget(target_Z0, target_width_Z);
140 if (beam_grad_X != 0.0 || beam_grad_Y != 0.0 || beam_grad_sigma_X > 0.0 || beam_grad_sigma_Y > 0.0) {
141 primGen->SetBeamAngle(beam_grad_X, beam_grad_Y, beam_grad_sigma_X,
145 fRun->SetGenerator(primGen);
149 primGen->AddGenerator(dpmGen);
154 fRun->SetBeamMom(
mom);
156 fRun->SetField(fField);
158 fRun->SetStoreTraj(
false);
162 if (misalignment_matrices_path !=
"" && !use_point_transform_misalignment) {
164 TFile *misalignmentMatrixRootfile =
new TFile(misalignment_matrices_path.c_str(),
"READ");
165 if (misalignmentMatrixRootfile->IsOpen()) {
166 std::map < std::string, TGeoHMatrix > *matrices;
168 gDirectory->GetObject(
"PndLmdMisalignMatrices", matrices);
169 misalignmentMatrixRootfile->Close();
171 cout << matrices->size() <<
" matrices successfully read from file.";
174 fRun->AddAlignmentMatrices(*matrices);
175 cout <<
"matrices set!\n";
180 ((TGeant4*)gMC)->ProcessGeantCommand(
"/mcVerbose/eventAction 0");
181 ((TGeant4*)gMC)->ProcessGeantCommand(
"/mcTracking/loopVerbose 0");
185 FairRuntimeDb *
rtdb = fRun->GetRuntimeDb();
187 FairParRootFileIo*
output =
new FairParRootFileIo(kParameterMerged);
188 output->open(parOutput.Data(),
"RECREATE");
189 rtdb->setOutput(output);
201 printf(
"RealTime=%f seconds, CpuTime=%f seconds\n", rtime, ctime);
printf("RealTime=%f seconds, CpuTime=%f seconds\n", rtime, ctime)
FairParRootFileIo * output
FairPrimaryGenerator * primGen
void SetVerboseLevel(Int_t level)
int runLumiPixel0SimDPM(const int nEvents=10, const int startEvent=0, const double mom=15, TString input="input.root", TString storePath="tmpOutputDPM", const double beam_X0=0.0, const double beam_Y0=0.0, const double target_Z0=0.0, const double beam_width_sigma_X=0.0, const double beam_width_sigma_Y=0.0, const double target_width_Z=0.0, const double beam_grad_X=0.0, const double beam_grad_Y=0.0, const double beam_grad_sigma_X=0.0, const double beam_grad_sigma_Y=0.0, const TString lmd_geometry_filename="Luminosity-Detector.root", std::string misalignment_matrices_path="", bool use_point_transform_misalignment=false, const int verboseLevel=3)