FairRoot/PandaRoot
sim_pid_runSimHF_GiB_DC.C
Go to the documentation of this file.
1 // Macro created A.Sanchez
2 // It creates a geant simulation file for hyp
3 // Parameters
4 //1) Generator option
5 // 1.a ) first step Xi m + Xib p --> Decfile,
6 //
7 // "box", Box generator
8 // "hist", Th2D Distribution in P (thet)from GiBUU model
9 // "Ascii", Ascii Gen, Intranuclear Cascade
10 // "giBUU", Xi m from giBUU on 12C target
11 // "param", Parametrization of a P(theta) dist from GiBUU
12 // "hypbup", second hyp step, breakUp hyp/ pions from seq.decay emitted
13 
14 // HYP_File== " true "//first step -->bup / pionic decay products -->root output
15 //
16 // 1.b ) second step , hypernuclei production "hypbup",
17 //2) detctor geo version
18 // 2.a) standard--> alicia version
19 // 2.b) current --> sebastian version
20 
21 void sim_pid_runSimHF_GiB_DC(int nEvents=10, int seed=17, int runNr=0, TString name="sim_pidC",
22 TString path="data", int geoID=201922, TString Decfile = "param", TString vers = "current",Bool_t HYP_File= true){
23  TStopwatch timer;
24  timer.Start();
25  gRandom->SetSeed(seed);
26  gDebug=0;
27 
28  // Load basic libraries
29 
30 
31  gROOT->Macro("$VMCWORKDIR/gconfig/rootlogon.C");
32  //rootlogon();
33 
34 // gSystem->Load("librazhyp");
35  gSystem->Load("libHyp");
36 
37  FairRunSim *fRun = new FairRunSim();
38 
39  // --- first step ----
40 
41  // -- GiBUU Parametrization TH2F Corr. Dist P(theta)
42 
43  if(Decfile=="hist"||Decfile=="param") TString inFile= "XiGenGiBUUSamp.root";
44 
45  //--Second xi minus momentum solution.
46 
47  //TString inFile= "data/xibximin2AStpRate.dat";//data/ximinAsciiStpRate.dat";
48  //TString inFile= "data/ximinAsciiStpRate.dat";
49 
50  // -- UrqmdSmm/GiBUU SIGNAL/ background events
51 
52  if(Decfile=="giBUU") TString inFile= "carbon_onlyXi_2_5.root";
53 
54  //--- second step --
55  //--- HF from vertexes ----
56 
57  if(Decfile=="hypbup"){
58  TString inFile= "hypBupV1T_Decay.root";
59  }
60 
61 
62  // set the MC version used
63 
64 
65 
66  // ------------------------
67 
68  //fRun->SetName("TGeant4");
69  fRun->SetName("TGeant3");
70 
71  TString outFile=path+"/"+name+".root";
72 
73  cout << "Datei: " << outFile << endl;
74  fRun->SetOutputFile(outFile);
75 
76 
77  // ----------first step -------------
78  // ++++++ Xi minus production ++++++
79 
80  //if(Decfile=="param")fRun->SetOutputFile(outFile);
81 
82  // ----------first step XXb production -----------------------
83 
84  //fRun->SetOutputFile("Sim_hypFSG41TXXb_Geo2.root");
85 
86  // ---------- second step HF decay from secondary vertexes -------
87 
88  //fRun->SetOutputFile("Bup_hypFSG41TXXb.root");
89  //if(Decfile=="hypbup")fRun->SetOutputFile("Bup_hypFSG41TXm.root");
90 
91 
92  // Set Material file Name
93  //-----------------------
94 
95  //fRun->SetMaterials("media_pnd_hyp.geo");
96  //new media for hyp
97  fRun->SetMaterials("media_pnd.geo");
98 
99  // Create and add detectors
100  //-------------------------
101 
102  FairModule *Cave= new PndCave("CAVE");
103  Cave->SetGeometryFileName("pndcave.geo");
104  fRun->AddModule(Cave);
105  /*
106  FairModule *Magnet= new FairMagnet("MAGNET");
107  Magnet->SetGeometryFileName("magnet.geo");
108  fRun->AddModule(Magnet);
109  */
110 
111 
112 
113  PndHyp *Hyp = new PndHyp("HYP",kTRUE);
114  //FairDetector *Hyp = new PndHyp("HYP",kTRUE);
115 
116  //Hyp->SetGeometryFileName("HypST_block.geo");
117  //fRun->AddModule(Hyp);
118  //--blocks
119  //---Layers (si+abs)
120  //Hyp->SetGeometryFileName("HypST_prueba2.geo");
121  //fRun->AddModule(Hyp);
122  //--layers C+Si
123  // Hyp->SetGeometryFileName("HypST_prueba23.geo");
124  //fRun->AddModule(Hyp);
125  //--layers C+si+hyppipe
126  //Hyp->SetGeometryFileName("HypST_prueba24pipe.geo");
127  //Hyp->SetGeometryFileName("HypST_newxy3C.geo");
128 
129  TString geoname;
130  switch(geoID){
131  case 904:
132  geoname="SekTarget_open_varAbs4_3Q_HYPbe_1mm.root";
133  break;
134  case 9047:
135  geoname="SekTarget_open_varAbs4_3Q_StartAbs_HYPbe_1mm.root";
136  break;
137  case 904745:
138  geoname="SekTarget_open_varAbs4_3Q_StartAbs_HYPbe_1mm_thick5mm.root";
139  break;
140  case 9047410:
141  geoname="SekTarget_open_varAbs4_3Q_StartAbs_HYPbe_1mm_thick10mm.root";
142  break;
143  case 905:
144  geoname="SekTarget_open_varAbs4Si5_3Q_HYPbe_1mm.root";
145  break;
146  case 201922: // T=20, S=19, Z(Ti)=22, former 2019
147  geoname="TargetSystem_Ti.root";
148  break;
149  case 2019223: // T=20, S=19, Z(Ti)=22, Corners=3, former 20193
150  geoname="TargetSystem_Ti_filledCorners.root";
151  break;
152  case 2019223765: // T=20, S=19, Z(Ti)=22, Corners=3, Vertexposition -76.5
153  geoname="TargetSystem_Ti_filledCorners_Vertex-765.root";
154  break;
155  case 20192212: // T=20, S=19, Z(Ti)=22, long version +20.0: l = 12
156  geoname="TargetSystem_Ti_z_elongated.root";
157  break;
158  case 201922701: // T=20, S=19, Z(Ti)=22, Getauschte Lagen G=7
159  geoname="TargetSystem_Ti_StartAbs_1mm.root";
160  break;
161  case 201922702: // T=20, S=19, Z(Ti)=22, Getauschte Lagen G=7
162  geoname="TargetSystem_Ti_StartAbs_2mm.root";
163  break;
164  case 201922705: // T=20, S=19, Z(Ti)=22, Getauschte Lagen G=7
165  geoname="TargetSystem_Ti_StartAbs_5mm.root";
166  break;
167  case 2019223701: // T=20, S=19, Z(Ti)=22, Getauschte Lagen G=7
168  geoname="TargetSystem_Ti_StartAbs_1mm_filledCorners.root";
169  break;
170  case 2019223702: // T=20, S=19, Z(Ti)=22, Getauschte Lagen G=7
171  geoname="TargetSystem_Ti_StartAbs_2mm_filledCorners.root";
172  break;
173  case 2019223705: // T=20, S=19, Z(Ti)=22, Getauschte Lagen G=7
174  geoname="TargetSystem_Ti_StartAbs_5mm_filledCorners.root";
175  break;
176  case 16100: // P=16
177  geoname="TargetSystem_Ti_pureAbsorberblock_100.root";
178  break;
179  case 16500: // P=16
180  geoname="TargetSystem_Ti_pureAbsorberblock_500.root";
181  break;
182  case 201925: // T=20, S=19, Z(AlMg)=13+12=25
183  geoname="TargetSystem_AlMg200.root";
184  break;
185  case 2019253: // T=20, S=19, Z(AlMg)=13+12=25, Corners=3
186  geoname="TargetSystem_AlMg200_filledCorners.root";
187  break;
188  case 201925100: // T=20, S=19, Z(AlMg)=13+12=25, +100µm to default thickness
189  geoname="TargetSystem_AlMg300.root";
190  break;
191  }
192 
193  // --- root geometry ------
194  // xxxxx Alicia's detector geo xxxx
195  if(vers=="standard"){
196 
197  Hyp->SetAbsorberVol("stglAb"); // absorber layer
198  Hyp->SetSensorVol("stglSi"); // silicon sensor
199  Hyp->SetGeoVersion("List");
200  Hyp->SetListMat("HYPdiamond");
201  Hyp->SetListMat("HYPcarbon");
202  //Hyp->SetGeometryFileName("HYPST_assexy3C5Lay.root");
203  Hyp->SetGeometryFileName("HYPST_assexy3C5Lay_mvd.root");//HYPST_assexy3C5Lay_test.root");
204 
205  }
206 
207  // xxxxxxxx Sebastian asymmetric geo root xxxxxxxxxxx
208  if(vers=="current"){
209  Hyp->SetAbsorberVol("Absorber"); // absorber layer
210  Hyp->SetSensorVol("Sensor"); // silicon sensor
211  Hyp->SetGeometryFileName(geoname);
212  }
213 
214  // ---------------------------------
215 
216  if(HYP_File){ //first step -->bup / pionic decay products -->root output
217  Hyp->SetTreeFName(path+"/hypBupV1T_Decay.root");
218  Hyp->SetHypSDtoFile(true,HYP_File);
219  }
220 
221  Hyp->SetStartEvID(runNr);
222 
223 
224  fRun->AddModule(Hyp);
225 
226  //gROOT->LoadMacro("$VMCWORKDIR/gconfig/SetFragments.C");
227  //FragConfig(fRun);
228 
229  //fRun->SetUserDecay(kTRUE);
230 
231  // MVD outer structure
232  //--------------------
233 
234  /* FairDetector *Mvd = new PndMvdDetector("MVD", kTRUE);
235  Mvd->SetGeometryFileName("Mvd-2.2_Simplified_onlyStrip5_z-verschoben550.root"); // only sensors, update follows
236  Mvd->SetVerboseLevel(verboseLevel);
237  fRun->AddModule(Mvd);*/
238 
239  // Create and Set Event Generator
240  //-------------------------------
241 
242  FairPrimaryGenerator* primGen = new FairPrimaryGenerator();
243  fRun->SetGenerator(primGen);
244 
245 
246  // Box Generator:
247  if(Decfile=="box"){
248  PndBoxGenerator* boxGen = new PndBoxGenerator(3312, 1); // 13 = muon; 1 = multipl. // 211 = pi+
249  // first number: PDG particle code: 2nd number: particle multiplicity per event
250 
251  boxGen->SetPRange(.1,.5); // GeV/c
252  // boxGen->SetPtRange(1.,1.); // GeV/c
253  boxGen->SetPhiRange(0., 360.); // Azimuth angle range [degree] 90
254  boxGen->SetThetaRange(0., 180.); // Polar angle in lab system range [degree] 70
255 
256  boxGen->SetXYZ(0., 0., -55.0); // vertex coordinates [cm]
257  primGen->AddGenerator(boxGen);
258  }
259 
260 
261 
262  // *** Signal events GiBUU + TH2F(correlated dist in P (theta)) ***first step
263  if(Decfile=="hist"){
264  PndCorrDistGenerator* GiBGen = new PndCorrDistGenerator(inFile);
265 
266  primGen->SetTarget(-55.5,0.);
267  primGen->AddGenerator(GiBGen);
268 
269  }
270  // *** Signal events GiBUU + Param from TH2F(correlated dist in P (theta)) ***first step
271  if(Decfile=="param"){
272  PndCorrDistGenerator* GiBGen = new PndCorrDistGenerator(inFile);
273  GiBGen->SetParam(); //setting parametrization to be be done.
274  GiBGen->SetThetaRange(90.,120.); // low momentum Xi minus
275  primGen->SetTarget(-55., 0.);
276  primGen->AddGenerator(GiBGen);
277 
278  }
279  // *** SIGNAL events UrqmdSmm ***first step
280  if(Decfile=="giBUU"){
281 
283 
284  primGen->SetTarget(-55.5,0.);
285  primGen->AddGenerator(AsciiGen);
286  }
287 
288  // *** with Ascii inFile ***first step
289  //FairAsciiGenerator* AsciiGen = new FairAsciiGenerator(inFile);
290  // primGen->SetTarget(-55.5,0.);
291  //primGen->AddGenerator(AsciiGen);
292 
293  // *** with root inFile ***second step
294  if(Decfile=="hypbup"){
296  primGen->AddGenerator(partGen);
297  }
298 
299 
300 
301 
303  fMagField->SetField(0, 0 ,10. ); // values are in kG
304  // MinX=-75, MinY=-40,MinZ=-12 ,MaxX=75, MaxY=40 ,MaxZ=124 ); // values are in cm
305  fMagField->SetFieldRegion(-50, 50,-50, 50, -200, 200);
306  fRun->SetField(fMagField);
307 
308 
309  /*PndMultiField *fField= new PndMultiField();
310  PndTransMap *map= new PndTransMap("TransMap", "R");
311  PndDipoleMap *map1= new PndDipoleMap("DipoleMap", "R");
312  PndSolenoidMap *map2= new PndSolenoidMap("SolenoidMap", "R");
313  fField->AddField(map);
314  fField->AddField(map1);
315  fField->AddField(map2);
316  fRun->SetField(fField);*/
317  if(nEvents<101)
318  fRun->SetStoreTraj(kTRUE); // to store particle trajectories
319  else
320  fRun->SetStoreTraj(kFALSE);
321 
322  fRun->Init();
323 
324  /*FairTrajFilter* trajFilter = FairTrajFilter::Instance();
325  trajFilter->SetStepSizeCut(0.001); // 1 cm
326  // trajFilter->SetVertexCut(-2000., -2000., 4., 2000., 2000., 100.);
327  // trajFilter->SetMomentumCutP(10e-3); // p_lab > 10 MeV
328  // trajFilter->SetEnergyCut(0., 1.02); // 0 < Etot < 1.04 GeV
329  trajFilter->SetStorePrimaries(kTRUE);
330  trajFilter->SetStoreSecondaries(kTRUE);*/ // not used for the others.????
331 
332 
333 
334  // Fill the Parameter containers for this run
335  //-------------------------------------------
336  // cout<<" gGeoManager "<<gGeoManager<<endl;
337  FairRuntimeDb *rtdb=fRun->GetRuntimeDb();
338 
339  // PndMultiFieldPar* fieldPar = (PndMultiFieldPar*) rtdb->getContainer("PndMultiFieldPar");
340  // if ( fField ) { fieldPar->SetParameters(fField); }
341  // fieldPar->setInputVersion(fRun->GetRunId(),1);
342  // fieldPar->setChanged();
343 
344  PndConstPar* fieldPar = (PndConstPar*) rtdb->getContainer("PndConstPar");
345  if ( fMagField ) { fieldPar->SetParameters(fMagField); }
346  fieldPar->setInputVersion(fRun->GetRunId(),1);
347  fieldPar->setChanged();
348 
349  Bool_t kParameterMerged=kTRUE;
350  FairParRootFileIo* output=new FairParRootFileIo(kParameterMerged);
351  //output->open("simparams.root");
352  if(Decfile=="param") output->open(path+"/pidparams.root");//Sim_hypFS1TG4Xm_SebGeoparams.root");
353  //output->open("Bup_hypFS1TG4XXbparams.root");
354  if(Decfile=="hypbup") output->open(path+"/Bup_hypFS1TG4Xmparams.root");
355  rtdb->setOutput(output);
356  rtdb->saveOutput();
357  rtdb->print();
358 
359  // Transport nEvents
360  // -----------------
361  // Set the number of events
362  //Int_t nEvents =31;//50505;
363 
364  fRun->Run(nEvents);
365 
366  timer.Stop();
367 
368  Double_t rtime = timer.RealTime();
369  Double_t ctime = timer.CpuTime();
370  printf("RealTime=%f seconds, CpuTime=%f seconds\n",rtime,ctime);
371  delete fRun;
372  //exit(0);
373 }
374 
printf("RealTime=%f seconds, CpuTime=%f seconds\n", rtime, ctime)
void SetThetaRange(Double32_t thetamin=0, Double32_t thetamax=90)
void SetListMat(TString mat="carbon")
Definition: PndHyp.h:222
Definition: PndHyp.h:30
Bool_t kParameterMerged
Definition: sim_emc_apd.C:113
TString outFile
Definition: hit_dirc.C:17
void sim_pid_runSimHF_GiB_DC(int nEvents=10, int seed=17, int runNr=0, TString name="sim_pidC", TString path="data", int geoID=201922, TString Decfile="param", TString vers="current", Bool_t HYP_File=true)
void SetXYZ(Double32_t x=0, Double32_t y=0, Double32_t z=0)
PndHyp * Hyp
Definition: runSimHF_ptr.C:73
PndUrqmdSmmGenerator * AsciiGen
Definition: sim_ftof.C:62
PndHypBupGenerator * partGen
Definition: runSimHF_ptr.C:144
FairParRootFileIo * output
Definition: sim_emc_apd.C:120
void SetFieldRegion(Double_t xMin, Double_t xMax, Double_t yMin, Double_t yMax, Double_t zMin, Double_t zMax)
FairPrimaryGenerator * primGen
Definition: sim_emc_apd.C:81
void SetSensorVol(TString VolSi)
Definition: PndHyp.h:195
FairRunAna * fRun
Definition: hit_dirc.C:58
TString inFile
Definition: hit_dirc.C:8
PndConstField * fMagField
Definition: runSimHF_ptr.C:154
void SetHypSDtoFile(bool onf, bool val)
Definition: PndHyp.h:177
Double_t
FairModule * Cave
Definition: sim_emc_apd.C:32
void SetField(Double_t bX, Double_t bY, Double_t bZ)
Int_t nEvents
Definition: hit_dirc.C:11
PndMultiFieldPar * fieldPar
Definition: sim_ftof.C:102
unsigned int seed
TStopwatch timer
Definition: hit_dirc.C:51
void SetAbsorberVol(TString VolAb)
Definition: PndHyp.h:199
void SetParameters(FairField *field)
Definition: PndConstPar.cxx:54
FairRuntimeDb * rtdb
Definition: hit_dirc.C:66
void SetTreeFName(const Char_t *Name)
Definition: PndHyp.h:193
gDebug
Definition: sim_emc_apd.C:6
void SetThetaRange(Double_t thetLow=0., Double_t thetHigh=0.)
TString name
Double_t ctime
Definition: hit_dirc.C:114
FairBoxGenerator * boxGen
Definition: sim_emc_apd.C:85
void SetStartEvID(Int_t EvID=0)
Definition: PndHyp.h:204
void SetGeoVersion(TString vers="standard")
Definition: PndHyp.h:210
void SetPRange(Double32_t pmin=0, Double32_t pmax=10)
Double_t rtime
Definition: hit_dirc.C:113
void SetPhiRange(Double32_t phimin=0, Double32_t phimax=360)
Definition: PndCave.h:8