void CreateGeo() { //-----User Settings:----------------------------------------------- TString OutputFile = "geo.root"; TString ParOutputfile = "geoparams.root"; TString MediaFile = "media_pnd.geo"; gDebug = 0; TString digiFile = "all.par"; //The emc run the hit producer directly Bool_t UseBoxGenerator = kTRUE; Double_t BeamMomentum = 15.; // beam momentum ONLY for the scaling of the dipole field. //------------------------------------------------------------------ TStopwatch timer; timer.Start(); gRandom->SetSeed(); // Create the Simulation run manager-------------------------------- FairRunSim *fRun = new FairRunSim(); fRun->SetName("TGeant3"); fRun->SetOutputFile(OutputFile.Data()); fRun->SetWriteRunInfoFile(kFALSE); fRun->SetBeamMom(BeamMomentum); fRun->SetMaterials(MediaFile.Data()); FairRuntimeDb *rtdb=fRun->GetRuntimeDb(); // Set the parameters //------------------------------- TString allDigiFile = gSystem->Getenv("VMCWORKDIR"); allDigiFile += "/macro/params/"; allDigiFile += digiFile; //---------------------Set Parameter output ---------- Bool_t kParameterMerged=kTRUE; FairParRootFileIo* output=new FairParRootFileIo(kParameterMerged); output->open(ParOutputfile.Data()); rtdb->setOutput(output); // Create and add detectors //------------------------- CAVE ----------------- FairModule *Cave= new PndCave("CAVE"); Cave->SetGeometryFileName("pndcave.geo"); fRun->AddModule(Cave); //------------------------- STT ----------------- FairDetector *SttExp = new PndStt("STT", kTRUE); SttExp->SetGeometryFileName("straw_prototype_beam.geo"); fRun->AddModule(SttExp); // Create and Set Event Generator //------------------------------- FairPrimaryGenerator* primGen = new FairPrimaryGenerator(); fRun->SetGenerator(primGen); // Box Generator FairBoxGenerator* boxGen = new FairBoxGenerator(2212, 1); // 13 = muon; 1 = multipl. boxGen->SetPRange(1.); // GeV/c boxGen->SetPhiRange(0., 360.); // Azimuth angle range [degree] boxGen->SetThetaRange(-4.57,4.57); // Polar angle in lab system range [degree] 4.57 boxGen->SetBoxXYZ(-1.5, -1.5, 1.5, 1.5, 0); primGen->AddGenerator(boxGen); fRun->SetStoreTraj(kTRUE); //------------------------- Initialize the RUN ----------------- fRun->Init(); //------------------------- Run the Simulation ----------------- fRun->Run(0); //------------------------- Save the parameters ----------------- rtdb->saveOutput(); rtdb->print(); //------------------------Print some info and exit---------------- timer.Stop(); Double_t rtime = timer.RealTime(); Double_t ctime = timer.CpuTime(); printf("RealTime=%f seconds, CpuTime=%f seconds\n",rtime,ctime); }