FairRoot/PandaRoot
runSimTr_Mvd.C
Go to the documentation of this file.
1 // Macro created A.Sanchez
2 // It creates a geant simulation file for hyp
3 {
4  TStopwatch timer;
5  timer.Start();
6  gDebug=0;
7  // Load basic libraries
8  // If it does not work, please check the path of the libs and put it by hands
9  //gROOT->LoadMacro("$VMCWORKDIR/gconfig/basiclibs.C");
10  //basiclibs();
11 
12  gROOT->Macro("$VMCWORKDIR/gconfig/rootlogon.C");
13  //rootlogon();
14 
15  gSystem->Load("librazhyp");
16  gSystem->Load("libHyp");
17 
18  FairRunSim *fRun = new FairRunSim();
19 
20 
21 
22  //--Second xi minus momentum solution.
23 
24  //TString inFile= "froot/ximinAsciiStpRate.dat";
25  // set the MC version used
26 
27  // -- UrqmdSmm background events
28  // Int_t nEvents =99480;
29  //TString inFile= "/d/panda02/urqmd_smm/pbarC_3GeV/pbarC_1.root";
30 
31  // ------------------------
32 
33  fRun->SetName("TGeant3");
34 
35  //fRun->SetOutputFile("./sim_hypgeantcheck.root");
36 
37 
38  fRun->SetOutputFile("sim_piTr.root");
39 
40  // Set Material file Name
41  //-----------------------
42 
43  //fRun->SetMaterials("media_pnd_hyp.geo");
44  //new media for hyp
45  fRun->SetMaterials("media_pnd_cuts.geo");
46 
47  // Create and add detectors
48  //-------------------------
49 
50  FairModule *Cave= new PndCave("CAVE");
51  Cave->SetGeometryFileName("pndcave.geo");
52  fRun->AddModule(Cave);
53  /*
54  FairModule *Magnet= new FairMagnet("MAGNET");
55  Magnet->SetGeometryFileName("magnet.geo");
56  fRun->AddModule(Magnet);
57  */
58 
59  //------------------------- TPC -----------------
60  /*
61  PndTpcDetector *PndTpc = new PndTpcDetector("TPC", kTRUE);
62  PndTpc->SetGeometryFileName("tpcHyp.geo");
63  //if(SimEngine=="TGeant3") PndTpc->SetAliMC();
64  fRun->AddModule(PndTpc);
65  */
66 
67 
68  /* FairDetector *Mvd = new PndMvdDetector("MVD", kTRUE);
69  Mvd->SetGeometryFileName("Mvd-2.2_Simplified_onlyStrip5_z-verschoben550.root"); // only sensors, update follows
70  //Mvd->SetVerboseLevel(verboseLevel);
71  fRun->AddModule(Mvd);*/
72 
73 
74  PndHyp *Hyp = new PndHyp("HYP",kTRUE);
75  //FairDetector *Hyp = new PndHyp("HYP",kTRUE);
76 
77  //Hyp->SetGeometryFileName("HypST_block.geo");
78  //fRun->AddModule(Hyp);
79  //--blocks
80  //---Layers (si+abs)
81  //Hyp->SetGeometryFileName("HypST_prueba2.geo");
82  //fRun->AddModule(Hyp);
83  //--layers C+Si
84  // Hyp->SetGeometryFileName("HypST_prueba23.geo");
85  //fRun->AddModule(Hyp);
86  //--layers C+si+hyppipe
87  //Hyp->SetGeometryFileName("HypST_prueba24pipe.geo");
88  //Hyp->SetGeometryFileName("HypST_newxy3C.geo");
89 
90 
91 
92  // --- root geometry ------
93  Hyp->SetAbsorberVol("stglAb"); // absorber layer
94  Hyp->SetSensorVol("stglSi"); // silicon sensor
95  //Hyp->SetGeometryFileName("HYPST_assexy3C5Lay.root");
96  Hyp->SetGeometryFileName("HYPST_assexy3C5Lay_mvd.root");//HYPST_assexy3C5Lay_test.root");
97 
98 
99  // xxxxxxxx Sebastian asymmetric geo root xxxxxxxxxxx
100 
101  /* Hyp->SetAbsorverVol("Absorber"); // absorber layer
102  Hyp->SetSensorVol("Sensor"); // silicon sensor
103  Hyp->SetGeometryFileName("SekTarget_open_varAbs4Si5_3Q_HYPbe_1mm_MVD.root");
104  */
105 
106  // ---------------------------------
107 
108  //Hyp->SetHypSDtoFile(true,false);
109  fRun->AddModule(Hyp);
110 
111  //gROOT->LoadMacro("$VMCWORKDIR/gconfig/SetFragments.C");
112  //FragConfig(fRun);
113 
114 
115 
116  // Create and Set Event Generator
117  //-------------------------------
118 
119  FairPrimaryGenerator* primGen = new FairPrimaryGenerator();
120  fRun->SetGenerator(primGen);
121 
122 
123  // Box Generator:
124  PndVolGenerator* boxGen = new PndVolGenerator(-211, 2); // 13 = muon; 1 = multipl. // 211 = pi+
125  // first number: PDG particle code: 2nd number: particle multiplicity per event
126 
127  boxGen->SetPRange(.1,.1); // GeV/c
128  // boxGen->SetPtRange(1.,1.); // GeV/c
129  boxGen->SetPhiRange(90., 90.); // Azimuth angle range [degree] 90
130  boxGen->SetThetaRange(70., 70.); // Polar angle in lab system range [degree] 70
131  //boxGen->SetCosTheta(); // Set uniform ditribution in cos(theta)
132  //boxGen->SetXYZ(0., 0., -55.0); // vertex coordinates [cm]
133  primGen->AddGenerator(boxGen);
134 
135  // PndBoxGenerator* boxGen2 = new PndBoxGenerator(-211, 1); // 13 = muon; 1 = multipl. // 211 = pi+
136  // // first number: PDG particle code: 2nd number: particle multiplicity per event
137 
138  // boxGen2->SetPRange(.1,.1); // GeV/c
139  // // boxGen->SetPtRange(1.,1.); // GeV/c
140  // boxGen2->SetPhiRange(90., 90.); // Azimuth angle range [degree] 90
141  // boxGen2->SetThetaRange(80., 80.); // Polar angle in lab system range [degree] 70
142  // //boxGen->SetCosTheta(); // Set uniform ditribution in cos(theta)
143  // boxGen2->SetXYZ(0., 0., -55.0); // vertex coordinates [cm]
144  // primGen->AddGenerator(boxGen2);
145 
146 
147  // Background events UrqmdSmm
148  /* PndUrqmdSmmGenerator* AsciiGen = new PndUrqmdSmmGenerator(inFile);
149 
150  primGen->SetTarget(-76.5,0.);
151  primGen->AddGenerator(AsciiGen);*/
152 
153 
154 
155 
156 
158  fMagField->SetField(0, 0 ,10. ); // values are in kG
159  // MinX=-75, MinY=-40,MinZ=-12 ,MaxX=75, MaxY=40 ,MaxZ=124 ); // values are in cm
160  fMagField->SetFieldRegion(-50, 50,-50, 50, -200, 200);
161  fRun->SetField(fMagField);
162 
163 
164  /*PndMultiField *fField= new PndMultiField();
165  PndTransMap *map= new PndTransMap("TransMap", "R");
166  PndDipoleMap *map1= new PndDipoleMap("DipoleMap", "R");
167  PndSolenoidMap *map2= new PndSolenoidMap("SolenoidMap", "R");
168  fField->AddField(map);
169  fField->AddField(map1);
170  fField->AddField(map2);
171  fRun->SetField(fField);*/
172 
173  fRun->SetStoreTraj(kTRUE); // to store particle trajectories
174 
175 
176  fRun->Init();
177 
178 
179 
180 
181  /*FairTrajFilter* trajFilter = FairTrajFilter::Instance();
182  trajFilter->SetStepSizeCut(0.001); // 1 cm
183  // trajFilter->SetVertexCut(-2000., -2000., 4., 2000., 2000., 100.);
184  // trajFilter->SetMomentumCutP(10e-3); // p_lab > 10 MeV
185  // trajFilter->SetEnergyCut(0., 1.02); // 0 < Etot < 1.04 GeV
186  trajFilter->SetStorePrimaries(kTRUE);
187  trajFilter->SetStoreSecondaries(kTRUE);*/ // not used for the others.????
188 
189 
190 
191  // Fill the Parameter containers for this run
192  //-------------------------------------------
193  // cout<<" gGeoManager "<<gGeoManager<<endl;
194  FairRuntimeDb *rtdb=fRun->GetRuntimeDb();
195 
196  // PndMultiFieldPar* fieldPar = (PndMultiFieldPar*) rtdb->getContainer("PndMultiFieldPar");
197  // if ( fField ) { fieldPar->SetParameters(fField); }
198  // fieldPar->setInputVersion(fRun->GetRunId(),1);
199  // fieldPar->setChanged();
200 
201  PndConstPar* fieldPar = (PndConstPar*) rtdb->getContainer("PndConstPar");
202  if ( fMagField ) { fieldPar->SetParameters(fMagField); }
203  fieldPar->setInputVersion(fRun->GetRunId(),1);
204  fieldPar->setChanged();
205 
207  FairParRootFileIo* output=new FairParRootFileIo(kParameterMerged);
208  //output->open("simparams.root");
209  output->open("PiTrparams.root");
210  rtdb->setOutput(output);
211  rtdb->saveOutput();
212  rtdb->print();
213 
214  // Transport nEvents
215  // -----------------
216  // Set the number of events
217  Int_t nEvents =1000;
218 
219  fRun->Run(nEvents);
220 
221  timer.Stop();
222 
223  Double_t rtime = timer.RealTime();
224  Double_t ctime = timer.CpuTime();
225  printf("RealTime=%f seconds, CpuTime=%f seconds\n",rtime,ctime);
226  delete fRun;
227  exit(0);
228 }
229 
FairParRootFileIo * output
Definition: runSimTr_Mvd.C:207
gDebug
Definition: runSimTr_Mvd.C:6
void SetPRange(Double32_t pmin=0, Double32_t pmax=10)
Definition: PndHyp.h:30
Double_t rtime
Definition: runSimTr_Mvd.C:223
Double_t ctime
Definition: runSimTr_Mvd.C:224
FairModule * Cave
Definition: runSimTr_Mvd.C:50
Bool_t kParameterMerged
Definition: runSimTr_Mvd.C:206
exit(0)
Int_t nEvents
Definition: runSimTr_Mvd.C:217
void SetPhiRange(Double32_t phimin=0, Double32_t phimax=360)
PndConstPar * fieldPar
Definition: runSimTr_Mvd.C:201
void SetFieldRegion(Double_t xMin, Double_t xMax, Double_t yMin, Double_t yMax, Double_t zMin, Double_t zMax)
void SetSensorVol(TString VolSi)
Definition: PndHyp.h:195
Double_t
printf("RealTime=%f seconds, CpuTime=%f seconds\n", rtime, ctime)
void SetField(Double_t bX, Double_t bY, Double_t bZ)
TStopwatch timer
Definition: hit_dirc.C:51
void SetAbsorberVol(TString VolAb)
Definition: PndHyp.h:199
FairRunSim * fRun
Definition: runSimTr_Mvd.C:18
void SetParameters(FairField *field)
Definition: PndConstPar.cxx:54
PndVolGenerator * boxGen
Definition: runSimTr_Mvd.C:124
FairRuntimeDb * rtdb
Definition: runSimTr_Mvd.C:194
FairPrimaryGenerator * primGen
Definition: runSimTr_Mvd.C:119
void SetThetaRange(Double32_t thetamin=0, Double32_t thetamax=90)
PndHyp * Hyp
Definition: runSimTr_Mvd.C:74
PndConstField * fMagField
Definition: runSimTr_Mvd.C:157
Definition: PndCave.h:8