FairRoot/PandaRoot
runEventInfo.C
Go to the documentation of this file.
1 #include "basefunctions.hxx"
2 
3 int runEventInfo() {
4  gROOT->Reset();
5  // Verbosity level (0=quiet, 1=event level, 2=track level, 3=debug)
6  Int_t iVerbose = 0;
7 
8  enum DetectorId {
10 
11 
12  TStopwatch timer;
13  timer.Start();
14  gROOT->LoadMacro("$VMCWORKDIR/gconfig/rootlogon.C");
15  rootlogon();
16 
17  // Reco Parameters
18  Double_t stthitlifetime = 200;
19 
20  TString simFileName = "Sim_Dpm_500.root";
21  TString parFileName = "Sim_Dpm_500_params.root";
22  TString digiFileName = "Sim_Dpm_500_digi.root";
23  TString recoFileName = "Sim_Dpm_500_reco.root";
24  TString outFileName = "Sim_Dpm_500_streamdisplay.root";
25 
26  TFile filedigi(digiFileName.Data());
27  TFile filereco(recoFileName.Data());
28  TFile filerecopixel(recoFileName.Data());
29 
30  TTree *treedigi = (TTree*) filedigi.Get("pndsim");
31  //TClonesArray *sttsortedhits = new TClonesArray("PndSttHit");
32  //treedigi->SetBranchAddress("STTSortedHits",&sttsortedhits);
33 
34  TTree *recotree = (TTree*) filereco.Get("pndsim");
35  //TClonesArray *mvdstripreco = new TClonesArray("PndSdsHit");
36  //recotree->SetBranchAddress("MVDHitsStrip",&mvdstripreco);
37  //TClonesArray *mvdpixelreco = new TClonesArray("PndSdsHit");
38  //recotree->SetBranchAddress("MVDHitsPixel",&mvdpixelreco);
39 
40 
41  FairRunAna *fRun = new FairRunAna();
42  fRun->SetInputFile(simFileName.Data());
43  fRun->AddFriend(recoFileName.Data());
44  fRun->AddFriend(digiFileName.Data());
45  fRun->SetOutputFile(outFileName.Data());
46  fRun->Init();
47  //FairRuntimeDb *rtdb = LoadRuntimeDB(parFileName, fRun);
48  FairRuntimeDb* rtdb = fRun->GetRuntimeDb();
49 
50  // load geometry parameters
52  //PndSttMapCreator* mapper = new PndSttMapCreator(fSttParameters);
53  //TClonesArray* tubearray = mapper->FillTubeArray();
54 
55  PndOnlineGeometryManager *online_geometry = new PndOnlineGeometryManager(rtdb, parFileName.Data());
56 
57 
61 
70 
72  PndOnlineHitProducer *online_hit_producer = new PndOnlineHitProducer();
73  online_hit_producer->LoadStream(kSTT, "STTSortedHits");
74  online_hit_producer->LoadStream(kMVD, "MVDHitsStrip");
75  online_hit_producer->LoadStream(kMVD, "MVDHitsPixel");
76 
77 
78  PndOnlineManager *online = new PndOnlineManager();
79  online->AddHitProducer(online_hit_producer);
80  online->AddGeometryManager(online_geometry);
81  online->SetActiveDetector(kSTT,stthitlifetime);
82  online->SetActiveDetector(kMVD,stthitlifetime);
83 
84  TClonesArray* tubearray = online_geometry->GetDetectorGeometry(kSTT);
85 
86  // load task
87  PndOnlineSttTripletFinder *triplet_finder = new PndOnlineSttTripletFinder(online, tubearray);
88  //triplet_finder->Init();
89  online->AddTask((FairTask*)triplet_finder);
90 
91  // initialize display
92  TCanvas* rzcanvas = new TCanvas("rzcanvas");
93  rzcanvas->Range(-54,-42,114,42);
94  rzcanvas->SetCanvasSize(1200, 600);
95  rzcanvas->cd();
96  TCanvas* c1 = new TCanvas("c1");
97  c1->Range(-42,-42,42,42);
98  c1->SetCanvasSize(1200, 1200);
99  TText* mytext = new TText();
100 
101 
102  // event loop!
103  int current_time = 0;
104  //int delta_t = 5;
105  int delta_t = 5;
106  int final_time = 2205;
107  online->Init();
108 
109  TObjArray* online_fairhits_stt = 0;
110  TObjArray* online_tracks = 0;
111  TObjArray* online_fairhits_mvd = 0;
112 
113  while( current_time < final_time ) {
114  //online->LoadHits( PndOnlineManager::kHESRRevolution );
115  online->LoadHits( delta_t );
116  //online->LoadHits( current_time );
117  online->Process();
118  //online->Clear();
119  current_time += delta_t;
120 
121 
122  //Draw the results
123  c1->Clear();
124  c1->cd();
125  DrawDetector();
126  cout << " Drawing stuff " << endl;
127 
128  online_fairhits_stt = online->GetFairHitObjectList(kSTT);
129  online_tracks = online->GetTrackObjectList();
130  online_fairhits_mvd = online->GetFairHitObjectList(kMVD);
131 
132  DrawIsochrones(current_time-stthitlifetime, online_fairhits_stt, tubearray);
133  // triplet location
134  DrawOnlineTrackVertices(current_time-stthitlifetime, online_tracks);
135  // tracks through triplets
136  //DrawOnlineTrackHack(current_time-stthitlifetime, online_tracks);
137  DrawOnlineTrackHackHitCheck(current_time-stthitlifetime, online_tracks, online_fairhits_stt, tubearray);
138  //DrawOnlineTrackMomentum(current_time-stthitlifetime, online_tracks);
139  DrawFairHits(current_time-stthitlifetime, online_fairhits_mvd, 20);
140  //DrawFairHits(drawstackstriphits);
141  //DrawFairHits(drawstackpixelhits);
142  //DrawTripletTracks(innertriplets, midtriplets, 10);
143  //DrawTripletTracks(innertriplets, outertriplets, 45);
144  //DrawTripletTracks(midtriplets, outertriplets, 25);
145 
146  //draw in rz projection
147  rzcanvas->Clear();
148  rzcanvas->cd();
149  DrawDetectorRZ();
150  DrawFairHitsRZ(current_time-stthitlifetime, online_fairhits_mvd, 20);
151  DrawOnlineTrackVerticesRZ(current_time-stthitlifetime, online_tracks);
152  mytext->DrawText(-54, -42, TString::Format("%d ns",current_time));
153  rzcanvas->Update();
154  rzcanvas->Print("hitdisplayrz.gif+20");
155 
156  c1->cd();
157  mytext->DrawText(-42, -42, TString::Format("%d ns",current_time));
158  c1->Update();
159  //c1->Print("hitdisplay.png");
160  c1->Print("hitdisplay.gif+20");
161 
162  delete online_fairhits_stt;
163  delete online_tracks;
164  delete online_fairhits_mvd;
165 
166 
167  // now print out the triplets
168  //online->PrintTracks();
169  //TObjArray *tracks = online->GetTrackObjectList();
170  //for(int i=0; i<tracks->GetEntriesFast(); ++i) {
171  //PndOnlineTrack *trk_ptr = (PndOnlineTrack *)(tracks->At(i));
172  //cout << " triplet cms; "; trk_ptr->Vertex().Print();
173  //}
174 
175 
176  //online->GetTrackList().clear();
177 
178  }
179 
180 c1->Print("hitdisplay.gif++");
181 rzcanvas->Print("hitdisplayrz.gif++");
182 
183  // ----- Finish -------------------------------------------------------
184  timer.Stop();
185  Double_t rtime = timer.RealTime();
186  Double_t ctime = timer.CpuTime();
187  cout << endl << endl;
188  cout << "Macro finished succesfully." << endl;
189  cout << "Real time " << rtime << " s, CPU time " << ctime << " s" << endl;
190  cout << endl;
191  // ------------------------------------------------------------------------
192 
193 
194  return 0;
195 }
TFile filereco("MvdStt_Test_reco.root")
FairRunAna * fRun
Definition: hit_dirc.C:58
void DrawIsochrones(Int_t currenttime, TObjArray *stthits, TObjArray *stttubes, Int_t *timeviolationcount)
Double_t
TTree * treedigi
TStopwatch timer
Definition: hit_dirc.C:51
TFile filedigi("testdigi.root")
int runEventInfo()
Definition: runEventInfo.C:3
FairRuntimeDb * rtdb
Definition: hit_dirc.C:66
c1
Definition: plot_dirc.C:35
Double_t ctime
Definition: hit_dirc.C:114
Int_t iVerbose
Double_t rtime
Definition: hit_dirc.C:113