9 #include <TStopwatch.h>
13 #include <FairRunSim.h>
14 #include <FairRuntimeDb.h>
15 #include <FairParAsciiFileIo.h>
16 #include <FairParRootFileIo.h>
17 #include <FairModule.h>
34 #include <FairEvtGenGenerator.h>
36 #include <FairPrimaryGenerator.h>
37 #include <FairBoxGenerator.h>
52 #include <sys/types.h>
58 #define DEVURANDOM "/dev/urandom"
62 std::vector<std::string>& geometryfiles);
67 return "Usage: [executable] [parameters]\n\n"
68 "\033[0;31m -o\t--output [name]\t\tName of the [o]utput file\033[0m\n"
69 "\033[0;31m -n\t--number [#]\t\tnumber of events to simulate\033[0m\n"
70 "\033[0;31m -t\t--tracker [tracker]\t\tWhich tracker will be used [Geant3, Geant4]\033[0m\n"
71 "\033[0;31m -g\t--geofile [geofile]\t\tFile that store the name of the geometry files of the detectors\033[0m\n"
80 const char* TransportModel,
81 std::vector<std::string> geometryfiles,
85 unsigned int rnum = 0;
88 (void) read(fd, (
void *)&rnum,
sizeof(int));
94 int main(
int argc,
char ** argv){
98 string out =
"RadMap_Out_Sim.root";
99 string tra =
"TGeant4";
100 string geofile =
"/lustre/nyx/panda/carsten/fairsoft_nov15/pandaroot/tools/RadMapTool/detectors.dat";
102 std::vector<std::string> geometryfiles;
103 while ((c = getopt(argc, argv,
"n:o:t:g:h")) != -1)
130 std::cout<<
" using detectors from "<<geofile.c_str()<<std::endl;
135 std::cout <<
"***************************\n";
136 std::cout <<
"sim: " << RandN << std::endl;
137 std::cout <<
"***************************\n";
139 sim(
TString(out.c_str()), nevt, tra.c_str(), geometryfiles, RandN);
144 const char* TransportModel,
145 std::vector<std::string> geometryfiles,
150 gRandom->SetSeed(seed);
155 unsigned int RandN = 0;
158 FairRunSim *
fRun =
new FairRunSim();
160 fRun->SetName(TransportModel);
161 fRun->SetOutputFile(output);
163 fRun->SetMaterials(geometryfiles.at(0).c_str());
169 Cave->SetGeometryFileName(geometryfiles.at(1).c_str());
170 fRun->AddModule(Cave);
173 Magnet->SetGeometryFileName(geometryfiles.at(2).c_str());
174 fRun->AddModule(Magnet);
177 Dipole->SetGeometryFileName(geometryfiles.at(3).c_str());
178 fRun->AddModule(Dipole);
181 Pipe->SetGeometryFileName(geometryfiles.at(4).c_str());
182 fRun->AddModule(Pipe);
184 FairDetector *
Stt=
new PndStt(
"STT", kFALSE);
185 Stt->SetGeometryFileName(geometryfiles.at(5).c_str());
186 fRun->AddModule(Stt);
189 Mvd->SetGeometryFileName(geometryfiles.at(6).c_str());
190 fRun->AddModule(Mvd);
193 Gem->SetGeometryFileName(geometryfiles.at(7).c_str());
194 fRun->AddModule(Gem);
200 fRun->AddModule(Emc);
203 Drc->SetGeometryFileName(geometryfiles.at(9).c_str());
205 fRun->AddModule(Drc);
210 fRun->AddModule(Dsk);
220 fRun->AddModule(Muo);
223 FairDetector *
Fts=
new PndFts(
"FTS", kFALSE);
224 Fts->SetGeometryFileName(geometryfiles.at(14).c_str());
225 fRun->AddModule(Fts);
229 FTof->SetGeometryFileName(geometryfiles.at(15).c_str());
230 fRun->AddModule(FTof);
233 FairModule* Rich=
new PndRich(
"RICH",kFALSE);
234 Rich->SetGeometryFileName(geometryfiles.at(16).c_str());
235 fRun->AddModule(Rich);
239 FairPrimaryGenerator*
primGen =
new FairPrimaryGenerator();
240 fRun->SetGenerator(primGen);
244 std::cout <<
"***************************\n";
245 std::cout <<
"Dpm: " << RandN << std::endl;
246 std::cout <<
"***************************\n";
248 primGen->AddGenerator(dpmGen);
251 fRun->GetListOfModules()->Print();
252 fRun->SetStoreTraj(kFALSE);
253 fRun->SetRadMapRegister(kTRUE);
256 fRun->SetField(fField);
260 Double_t preinitrtime = timer.RealTime();
268 Double_t postinitrtime = timer.RealTime();
272 printf(
"************* Running %i events ******************\n", nEvents);
279 printf(
"Preinit: %f seconds, Postinit: %f seconds; RealTime=%f seconds, CpuTime=%f seconds\n", preinitrtime, postinitrtime, rtime, ctime);
283 std::vector<std::string>& geometryfiles){
290 for(
int i = 0;
i < 18;
i++) geometryfiles.push_back(std::string(
""));
293 std::ifstream ifile(geomfile.c_str());
300 getline (ifile,line);
301 if(!ifile.good())
break;
304 tokens = Line.Tokenize(
":");
305 if(tokens->GetEntries() == 2){
306 help0 = ((TObjString*)(tokens->At(0)))->GetString();
307 help0.Remove(TString::kBoth,
' ');
308 help1 = ((TObjString*)(tokens->At(1)))->GetString();
309 help1.Remove(TString::kBoth,
' ');
310 cout <<
"\"" << ((TObjString*)(tokens->At(1)))->GetString() <<
"\" -> \"" << help1 <<
"\"" << endl;
312 if(help0.Contains(
"MEDIA")){
313 geometryfiles.at(0) = help1;
315 if(help0.Contains(
"CAVE")){
316 geometryfiles.at(1) = help1;
318 if(help0.Contains(
"SOLENOID")){
319 geometryfiles.at(2) = help1;
321 if(help0.Contains(
"DIPOLE")){
322 geometryfiles.at(3) = help1;
324 if(help0.Contains(
"PIPE")){
325 geometryfiles.at(4) = help1;
328 if(help0.Contains(
"STT")){
329 geometryfiles.at(5) = help1;
331 if(help0.Contains(
"MVD")){
332 geometryfiles.at(6) = help1;
334 if(help0.Contains(
"GEM")){
335 geometryfiles.at(7) = help1;
337 if(help0.Contains(
"SCITILE")){
338 geometryfiles.at(8) = help1;
340 if(help0.Contains(
"DRC")){
341 geometryfiles.at(9) = help1;
345 if(help0.Contains(
"DSK")){
346 geometryfiles.at(10) = help1;
348 if(help0.Contains(
"MUONBAR")){
349 geometryfiles.at(11) = help1;
351 if(help0.Contains(
"MUONENDC")){
352 geometryfiles.at(12) = help1;
354 if(help0.Contains(
"MUONFOR")){
355 geometryfiles.at(13) = help1;
357 if(help0.Contains(
"MUONFILT")){
358 geometryfiles.at(14) = help1;
361 if(help0.Contains(
"FTS")){
362 geometryfiles.at(15) = help1;
364 if(help0.Contains(
"FTOF")){
365 geometryfiles.at(16) = help1;
367 if(help0.Contains(
"RICH")){
368 geometryfiles.at(17) = help1;
void SetForward(TString name)
printf("RealTime=%f seconds, CpuTime=%f seconds\n", rtime, ctime)
void SetMdtCoil(bool opt=false)
void SetMdtMFIron(bool opt=false)
void SetStorageOfData(Bool_t val)
FairParRootFileIo * output
FairPrimaryGenerator * primGen
void SetMdtMagnet(bool opt=false)
void SetStoreTrackPoints(Bool_t storeTrackPoints)
void SetStoreCerenkovs(Bool_t storeCerenkovs)
virtual void SetGeometryVersion(const Int_t GeoNumber)
void SetBarrel(TString name)
parInput1 open(parFile.Data())
void SetEndcap(TString name)
void SetMuonFilter(TString name)
void SetRunCherenkov(Bool_t ch)