FairRoot/PandaRoot
sim_hyp.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->Macro("$VMCWORKDIR/gconfig/rootlogon.C");
10 
11  /*
12  gROOT->LoadMacro("$VMCWORKDIR/gconfig/basiclibs.C");
13  basiclibs();
14  // Load this example libraries
15  gSystem->Load("libGeoBase");
16  gSystem->Load("libParBase");
17  gSystem->Load("libBase");
18  gSystem->Load("libPndData");
19  gSystem->Load("libField");
20  gSystem->Load("libPassive"); // add other detector's lib if you need them
21  gSystem->Load("libGen");
22  gSystem->Load("libDpmEvtGen");
23  gSystem->Load("libPGen");
24  gSystem->Load("libgenfit");
25  gSystem->Load("libtrackrep");
26  gSystem->Load("libtpc");
27  gSystem->Load("libtpcreco");
28  gSystem->Load("librecotasks");
29  */
30  gSystem->Load("libHyp");
31  FairRunSim *fRun = new FairRunSim();
32 
33 
34 
35  //--Second xi minus momentum solution.
36  //TString inFile= "/d/panda01/asanchez/PANDA/ximinAscii.dat";
37 
38 // set the MC version used
39  // ------------------------
40 
41  fRun->SetName("TGeant4");
42 
43  fRun->SetOutputFile("./sim_hypgeantcheck.root");
44 
45 
46  // Set Material file Name
47  //-----------------------
48 
49  //fRun->SetMaterials("media_pnd_hyp.geo");
50  //new media for hyp
51  fRun->SetMaterials("media_pnd.geo");
52 
53  // Create and add detectors
54  //-------------------------
55 
56  FairModule *Cave= new PndCave("CAVE");
57  Cave->SetGeometryFileName("pndcave.geo");
58  fRun->AddModule(Cave);
59  /*
60  FairModule *Magnet= new CbmMagnet("MAGNET");
61  Magnet->SetGeometryFileName("magnet.geo");
62  fRun->AddModule(Magnet);
63  */
64 
65  FairDetector *Hyp = new PndHyp("HYP",kTRUE);
66  //Hyp->SetGeometryFileName("HypST_block.geo");
67  //fRun->AddModule(Hyp);
68  //--blocks
69  //---Layers (si+abs)
70  //Hyp->SetGeometryFileName("HypST_prueba2.geo");
71  //fRun->AddModule(Hyp);
72  //--layers C+Si
73  // Hyp->SetGeometryFileName("HypST_prueba23.geo");
74  //fRun->AddModule(Hyp);
75  //--layers C+si+hyppipe
76  //Hyp->SetGeometryFileName("HypST_prueba24pipe.geo");
77  Hyp->SetGeometryFileName("HypST_newxy3C.geo");
78 
79  fRun->AddModule(Hyp);
80 
81  // Create and Set Event Generator
82  //-------------------------------
83 
84  FairPrimaryGenerator* primGen = new FairPrimaryGenerator();
85  fRun->SetGenerator(primGen);
86 
87 
88  // Box Generator:
89  PndBoxGenerator* boxGen = new PndBoxGenerator(3312, 1); // 13 = muon; 1 = multipl. // 211 = pi+
90  // first number: PDG particle code: 2nd number: particle multiplicity per event
91 
92 
93  boxGen->SetPRange(.1,0.7); // GeV/c
94  // boxGen->SetPtRange(1.,1.); // GeV/c
95  boxGen->SetPhiRange(0., 360.); // Azimuth angle range [degree]
96  boxGen->SetThetaRange(20., 180.); // Polar angle in lab system range [degree]
97  boxGen->SetCosTheta(); // Set uniform ditribution in cos(theta)
98  boxGen->SetXYZ(0., 0., -76.); // vertex coordinates [cm]
99  primGen->AddGenerator(boxGen);
100 
101 
102 
103  //FairParticleGenerator* partGen = new FairParticleGenerator(3312, 1, -0.3,0.3,0.3, 0., 0., -76);
104  //primGen->AddGenerator(partGen);
105 
106  // *** with Ascii inFile ***
107  // FairAsciiGenerator* AsciiGen = new FairAsciiGenerator(inFile);
108  //primGen->AddGenerator(AsciiGen);
109 
110 
111  /*
112  PndConstField *fMagField=new PndConstField();
113  fMagField->SetField(0, 0 ,20. ); // values are in kG
114  // MinX=-75, MinY=-40,MinZ=-12 ,MaxX=75, MaxY=40 ,MaxZ=124 ); // values are in cm
115  fMagField->SetFieldRegion(-50, 50,-50, 50, -200, 200);
116  fRun->SetField(fMagField);
117  */
118 
120  PndTransMap *map= new PndTransMap("TransMap", "R");
121  PndDipoleMap *map1= new PndDipoleMap("DipoleMap", "R");
122  PndSolenoidMap *map2= new PndSolenoidMap("SolenoidMap", "R");
123  fField->AddField(map);
124  fField->AddField(map1);
125  fField->AddField(map2);
126  fRun->SetField(fField);
127 
128  fRun->SetStoreTraj(kTRUE); // to store particle trajectories
129 
130 
131  fRun->Init();
132 
133  /*FairTrajFilter* trajFilter = FairTrajFilter::Instance();
134  trajFilter->SetStepSizeCut(0.001); // 1 cm
135  // trajFilter->SetVertexCut(-2000., -2000., 4., 2000., 2000., 100.);
136  // trajFilter->SetMomentumCutP(10e-3); // p_lab > 10 MeV
137  // trajFilter->SetEnergyCut(0., 1.02); // 0 < Etot < 1.04 GeV
138  trajFilter->SetStorePrimaries(kTRUE);
139  trajFilter->SetStoreSecondaries(kTRUE);*/ // not used for the others.????
140 
141 
142 
143  // Fill the Parameter containers for this run
144  //-------------------------------------------
145 
146  FairRuntimeDb *rtdb=fRun->GetRuntimeDb();
147 
148  PndMultiFieldPar* fieldPar = (PndMultiFieldPar*) rtdb->getContainer("PndMultiFieldPar");
149  if ( fField ) { fieldPar->SetParameters(fField); }
150  fieldPar->setInputVersion(fRun->GetRunId(),1);
151  fieldPar->setChanged();
152 
154  FairParRootFileIo* output=new FairParRootFileIo(kParameterMerged);
155  output->open("simparams.root");
156  rtdb->setOutput(output);
157  rtdb->saveOutput();
158  rtdb->print();
159 
160  // Transport nEvents
161  // -----------------
162  // Set the number of events
163  Int_t nEvents =50;
164 
165  fRun->Run(nEvents);
166 
167  timer.Stop();
168 
169  Double_t rtime = timer.RealTime();
170  Double_t ctime = timer.CpuTime();
171  printf("RealTime=%f seconds, CpuTime=%f seconds\n",rtime,ctime);
172 
173 }
174 
PndMultiField * fField
Definition: sim_emc_apd.C:97
printf("RealTime=%f seconds, CpuTime=%f seconds\n", rtime, ctime)
PndSolenoidMap * map2
Definition: sim_emc_apd.C:101
void SetThetaRange(Double32_t thetamin=0, Double32_t thetamax=90)
Definition: PndHyp.h:30
Bool_t kParameterMerged
Definition: sim_emc_apd.C:113
void SetParameters(FairField *field)
PndTransMap * map
Definition: sim_emc_apd.C:99
void SetXYZ(Double32_t x=0, Double32_t y=0, Double32_t z=0)
PndHyp * Hyp
Definition: runSimHF_ptr.C:73
FairParRootFileIo * output
Definition: sim_emc_apd.C:120
FairPrimaryGenerator * primGen
Definition: sim_emc_apd.C:81
FairRunAna * fRun
Definition: hit_dirc.C:58
Double_t
FairModule * Cave
Definition: sim_emc_apd.C:32
Int_t nEvents
Definition: hit_dirc.C:11
PndMultiFieldPar * fieldPar
Definition: sim_ftof.C:102
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
PndDipoleMap * map1
Definition: sim_emc_apd.C:100
void SetPRange(Double32_t pmin=0, Double32_t pmax=10)
void AddField(FairField *field)
Double_t rtime
Definition: hit_dirc.C:113
void SetPhiRange(Double32_t phimin=0, Double32_t phimax=360)
Definition: PndCave.h:8