FairRoot/PandaRoot
detectors/lumi/sim.C
Go to the documentation of this file.
1 /*
2  * sim.C
3  *
4  * Created on: Feb 1, 2012
5  * Author: tsito
6  */
7 
8 int sim()
9 {
10  TStopwatch timer;
11  timer.Start();
12  gDebug=0;
13 
14  //gROOT->Reset();
15  // Load basic libraries
16  gROOT->LoadMacro("$VMCWORKDIR/gconfig/rootlogon.C");
17  rootlogon();
18 
20  Double_t rad = 180./pi;
21  Int_t nEvents = 100;
22  Double_t pbeam = 8.9;
23 
24  // Create a monte carlo
25  // --------------------
26  FairRunSim *fRun = new FairRunSim();
27 
28  //FileNames
29  TString simFile = "test_G4.root";
30  TString parFile= "params_G4.root";
31 
32  // Set the MC version used
33  // ------------------------
34  fRun->SetName("TGeant4");
35  fRun->SetOutputFile(simFile);
36 
37  // Create and add detectors
38  // ------------------------
39  fRun->SetMaterials("media_pnd.geo");
40 
41  FairModule *Cave= new PndCave("CAVE");
42  Cave->SetGeometryFileName("pndcave1.geo");
43  fRun->AddModule(Cave);
44 
45  FairDetector *Lumi = new PndLumi("Lumi", kTRUE);
46  Lumi->SetGeometryFileName("lumishiftandrotate.root");
47  Lumi->SetVerboseLevel(1);
48  fRun->AddModule(Lumi);
49 
50 // FairDetector *Stt= new PndStt("STT", kTRUE);
51 // Stt->SetGeometryFileName("straws_skewed_blocks_pipe_120cm.geo");
52 // fRun->AddModule(Stt);
53  // Create and set event generator
54  // ------------------------------
55  FairPrimaryGenerator* primGen = new FairPrimaryGenerator();
56  fRun->SetGenerator(primGen);
57 
58  // Box Generator:
59  //---------------------------
60  FairBoxGenerator* boxGen = new FairBoxGenerator(-2212, 1);
61  boxGen->SetPRange(pbeam , pbeam); // GeV/c
62  boxGen->SetPhiRange(0.,360.);// Azimuth angle range [degree]
63  Double_t theta_min = 0.0028*rad;
64  Double_t theta_max = 0.008*rad;
65 
66  boxGen->SetThetaRange(theta_min, theta_max);//TMath::ATan(0.02)*rad);
67  boxGen->SetXYZ(0.0,0.0, 0.0); // vertex coordinates [cm]
68  primGen->AddGenerator(boxGen);
69 
70  // Field Map
71  //-------------------------
72  fRun->SetBeamMom(pbeam);
73  //PndMultiField *fField= new PndMultiField("DIPOLE");
74  PndMultiField *fField= new PndMultiField("FULL");
75  fRun->SetField(fField);
76 
77 
78  fRun->SetStoreTraj(kTRUE);
79 
80  // Initalize the monte carlo
81  // -------------------------
82  fRun->Init();
83 
84  FairRuntimeDb *rtdb=fRun->GetRuntimeDb();
86 
87  FairParRootFileIo* output=new FairParRootFileIo(kParameterMerged);
88  output->open(parFile.Data(), "RECREATE");
89  rtdb->setOutput(output);
90 
91  PndMultiFieldPar* Par = (PndMultiFieldPar*) rtdb->getContainer("PndMultiFieldPar");
92  if (fField) { Par->SetParameters(fField); }
93  Par->setInputVersion(fRun->GetRunId(),1);
94  Par->setChanged();
95 
96  rtdb->saveOutput();
97  rtdb->print();
98 
99  fRun->Run(nEvents);
100  timer.Stop();
101  Double_t rtime = timer.RealTime();
102  Double_t ctime = timer.CpuTime();
103  printf("RealTime=%f seconds, CpuTime=%f seconds\n",rtime,ctime);
104  return 0;
105 }
PndMultiField * fField
Definition: sim_emc_apd.C:97
printf("RealTime=%f seconds, CpuTime=%f seconds\n", rtime, ctime)
sim(Int_t nEvents=1, TString SimEngine="TGeant4", Float_t mom=6.231552)
Bool_t kParameterMerged
Definition: sim_emc_apd.C:113
void SetParameters(FairField *field)
#define pi
Definition: createSTT.C:60
FairParRootFileIo * output
Definition: sim_emc_apd.C:120
FairPrimaryGenerator * primGen
Definition: sim_emc_apd.C:81
FairRunAna * fRun
Definition: hit_dirc.C:58
TString simFile
Definition: bump_emc.C:11
Double_t
TString parFile
Definition: hit_dirc.C:14
FairModule * Cave
Definition: sim_emc_apd.C:32
Int_t nEvents
Definition: hit_dirc.C:11
TStopwatch timer
Definition: hit_dirc.C:51
FairRuntimeDb * rtdb
Definition: hit_dirc.C:66
gDebug
Definition: sim_emc_apd.C:6
Double_t ctime
Definition: hit_dirc.C:114
FairBoxGenerator * boxGen
Definition: sim_emc_apd.C:85
PndMultiFieldPar * Par
Definition: sim_emc_apd.C:115
Double_t rtime
Definition: hit_dirc.C:113
Double_t Pi
Definition: PndCave.h:8