FairRoot/PandaRoot
Functions
runOnlineDisplay.C File Reference
#include "basefunctions.hxx"

Go to the source code of this file.

Functions

int runOnlineDisplay ()
 

Function Documentation

int runOnlineDisplay ( )

PndGeoSttPar* fSttParameters = (PndGeoSttPar*) rtdb->getContainer("PndGeoSttPar");

/// works around the "geometry not supported by map" error /// HACK

PndSttTrackFinderReal* sttTrackFinder = new PndSttTrackFinderReal(0);
PndSttFindTracks* sttFindTracks = new PndSttFindTracks("Track Finder", "FairTask", sttTrackFinder, iVerbose);
sttFindTracks->AddHitCollectionName("STTHit", "STTPoint");
sttFindTracks->SetPersistence(kFALSE);
fRun->AddTask(sttFindTracks);

fRun->Init();

/////////////////////////////////////////////////////////

Definition at line 3 of file runOnlineDisplay.C.

References c1, ctime, Double_t, DrawIsochrones(), filedigi(), filereco(), fRun, iVerbose, kDCH, kDRC, kDSK, kEMC, kFTS, kGEM, kHYP, kHYPG, kLUMI, kMDT, kMVD, kRPC, kSTT, kTOF, kTPC, rootlogon(), rtdb, rtime, timer, treedigi, and TString.

3  {
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->ClearTracks();
116  online->LoadHits( delta_t );
117  //online->LoadHits( current_time );
118  online->Process();
119  //online->Clear();
120  current_time += delta_t;
121 
122 
123  //Draw the results
124  c1->Clear();
125  c1->cd();
126  DrawDetector();
127  cout << " Drawing stuff " << endl;
128 
129  online_fairhits_stt = online->GetFairHitObjectList(kSTT);
130  online_tracks = online->GetTrackObjectList();
131  online_fairhits_mvd = online->GetFairHitObjectList(kMVD);
132 
133  DrawIsochrones(current_time-stthitlifetime, online_fairhits_stt, tubearray);
134  // triplet location
135  DrawOnlineTrackVertices(current_time-stthitlifetime, online_tracks);
136  // tracks through triplets
137  //DrawOnlineTrackHack(current_time-stthitlifetime, online_tracks);
138  DrawOnlineTrackHackHitCheck(current_time-stthitlifetime, online_tracks, online_fairhits_stt, tubearray);
139  //DrawOnlineTrackMomentum(current_time-stthitlifetime, online_tracks);
140  DrawFairHits(current_time-stthitlifetime, online_fairhits_mvd, 20);
141  //DrawFairHits(drawstackstriphits);
142  //DrawFairHits(drawstackpixelhits);
143  //DrawTripletTracks(innertriplets, midtriplets, 10);
144  //DrawTripletTracks(innertriplets, outertriplets, 45);
145  //DrawTripletTracks(midtriplets, outertriplets, 25);
146 
147  //draw in rz projection
148  rzcanvas->Clear();
149  rzcanvas->cd();
150  DrawDetectorRZ();
151  DrawFairHitsRZ(current_time-stthitlifetime, online_fairhits_mvd, 20);
152  DrawOnlineTrackVerticesRZ(current_time-stthitlifetime, online_tracks);
153  mytext->DrawText(-54, -42, TString::Format("%d ns",current_time));
154  rzcanvas->Update();
155  rzcanvas->Print("hitdisplayrz.gif+20");
156 
157  c1->cd();
158  mytext->DrawText(-42, -42, TString::Format("%d ns",current_time));
159  c1->Update();
160  //c1->Print("hitdisplay.png");
161  c1->Print("hitdisplay.gif+20");
162 
163  delete online_fairhits_stt;
164  delete online_tracks;
165  delete online_fairhits_mvd;
166 
167 
168  // now print out the triplets
169  //online->PrintTracks();
170  //TObjArray *tracks = online->GetTrackObjectList();
171  //for(int i=0; i<tracks->GetEntriesFast(); ++i) {
172  //PndOnlineTrack *trk_ptr = (PndOnlineTrack *)(tracks->At(i));
173  //cout << " triplet cms; "; trk_ptr->Vertex().Print();
174  //}
175 
176 
177  //online->GetTrackList().clear();
178 
179  }
180 
181 c1->Print("hitdisplay.gif++");
182 rzcanvas->Print("hitdisplayrz.gif++");
183 
184  // ----- Finish -------------------------------------------------------
185  timer.Stop();
186  Double_t rtime = timer.RealTime();
187  Double_t ctime = timer.CpuTime();
188  cout << endl << endl;
189  cout << "Macro finished succesfully." << endl;
190  cout << "Real time " << rtime << " s, CPU time " << ctime << " s" << endl;
191  cout << endl;
192  // ------------------------------------------------------------------------
193 
194  return 0;
195 
196 }
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")
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