FairRoot/PandaRoot
Functions
runOnlineDisplayProduction.C File Reference
#include "drawhelpers.hxx"

Go to the source code of this file.

Functions

int runOnlineDisplayProduction ()
 

Function Documentation

int runOnlineDisplayProduction ( )

Definition at line 3 of file runOnlineDisplayProduction.C.

References allDigiFile, c1, ctime, digiFile, Double_t, DrawIsochrones(), filedigi(), filereco(), fRun, iVerbose, kSTT, parInput1, parIo1, 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 {
9  // kDCH,kDRC,kDSK,kEMC,kGEM,kLUMI,kMDT,kMVD,kRPC,kSTT,kTPC,kTOF,kFTS,kHYPG,kHYP};
10 
11  TStopwatch timer;
12  timer.Start();
13  gROOT->LoadMacro("$VMCWORKDIR/gconfig/rootlogon.C");
14  rootlogon();
15 
16  // Reco Parameters
17  Double_t stthitlifetime = 245;
18 
19  TString simFileName = "Sim_Dpm_500.root";
20  TString parFileName = "Sim_Dpm_500_params.root";
21  TString digiFileName = "Sim_Dpm_500_digi.root";
22  TString recoFileName = "Sim_Dpm_500_reco.root";
23  TString outFileName = "Sim_Dpm_500_streamdisplay.root";
24 
25  TString digiFile = "all.par";
26  TString allDigiFile = gSystem->Getenv("VMCWORKDIR");
27  allDigiFile += "/macro/params/";
28  allDigiFile += digiFile;
29 
30  TFile filedigi(digiFileName.Data());
31  TFile filereco(recoFileName.Data());
32  TFile filerecopixel(recoFileName.Data());
33 
34  TTree *treedigi = (TTree*) filedigi.Get("pndsim");
35  TTree *recotree = (TTree*) filereco.Get("pndsim");
36 
37  FairRunAna *fRun = new FairRunAna();
38  fRun->SetInputFile(simFileName.Data());
39  fRun->AddFriend(digiFileName.Data());
40  fRun->AddFriend(recoFileName.Data());
41  fRun->SetOutputFile(outFileName.Data());
42 
43  FairRuntimeDb* rtdb = fRun->GetRuntimeDb();
44  FairParRootFileIo* parInput1 = new FairParRootFileIo();
45  parInput1->open(parFileName.Data());
46  FairParAsciiFileIo* parIo1 = new FairParAsciiFileIo();
47  parIo1->open(allDigiFile.Data(),"in");
48  rtdb->setFirstInput(parInput1);
49  rtdb->setSecondInput(parIo1);
50  rtdb->print();
51 
52  fRun->Init();
53 
54  PndOnlineGeometryManager *online_geometry = new PndOnlineGeometryManager(rtdb, parFileName.Data());
55 
56  PndOnlineManager *online = new PndOnlineManager();
57  online->AddGeometryManager(online_geometry);
58  online->LoadStream(PndOnline::kSTT,"STTSortedHits",stthitlifetime);
59  online->LoadStream(PndOnline::kMVDPixel,"MVDHitsPixel",stthitlifetime);
60  online->LoadStream(PndOnline::kMVDStrip,"MVDHitsStrip",stthitlifetime);
61 
62  TClonesArray* tubearray = online_geometry->GetDetectorGeometry(PndOnline::kSTT);
63 
64  // load task
65  PndOnlineSttTripletFinder *triplet_finder = new PndOnlineSttTripletFinder(online, tubearray);
66  online->AddTask((FairTask*)triplet_finder);
67 
68  // initialize display
69  TCanvas* c1 = new TCanvas("c1");
70  c1->Range(-42,-42,42,42);
71  c1->SetCanvasSize(1200, 1200);
72  TText* mytext = new TText();
73 
74  // event loop!
75  int current_time = 0;
76  int drawtime = 0;
77  int delta_t = 2050;
78  int drawdeltat = 2;
79  int final_time = 500;
80 
81  online->SetHESRRevolutionDuration(delta_t);
82 
83  online->Init();
84 
85  TObjArray* online_fairhits_stt = 0;
86  TObjArray* online_tracks = 0;
87  TObjArray* online_tracks2 = 0;
88  TObjArray* online_fairhits_mvdpixel = 0;
89  TObjArray* online_fairhits_mvdstrip = 0;
90 
91  for (current_time = 0; current_time < final_time; current_time += delta_t) {
92  //online->LoadHits( PndOnlineManager::kHESRRevolution );
93  online->ClearTracks();
94  online->LoadHits( delta_t );
95  //online->LoadHits( current_time );
96  online->Process();
97  //online->Clear();
98 
99  //Draw the results
100 
101  for (drawtime = current_time; drawtime < (current_time + delta_t) && (drawtime < final_time); drawtime += drawdeltat) {
102  c1->Clear();
103  c1->cd();
104  DrawDetector();
105  //cout << " Drawing stuff " << endl;
106 
107  //online_fairhits_stt = online->GetFairHitObjectList(kSTT);
108  //online_tracks = online->GetTrackObjectList();
109  //online_fairhits_mvd = online->GetFairHitObjectList(kMVD);
110 
111  online_fairhits_stt = online->GetFairHitObjectTimedList(PndOnline::kSTT, drawtime-stthitlifetime-20, stthitlifetime+20);
112  online_tracks = online->GetTrackObjectTimedList(drawtime-stthitlifetime-stthitlifetime, stthitlifetime);
113  online_fairhits_mvdpixel = online->GetFairHitObjectTimedList(PndOnline::kMVDPixel, drawtime-stthitlifetime-20, 40);
114  online_fairhits_mvdstrip = online->GetFairHitObjectTimedList(PndOnline::kMVDStrip, drawtime-stthitlifetime-20, 40);
115 
116  // isochrones
117  DrawIsochrones(drawtime-stthitlifetime, online_fairhits_stt, tubearray);
118  // triplet location
119  DrawOnlineTrackVertices(drawtime-stthitlifetime, online_tracks);
120  // tracks through triplets
121  DrawOnlineTrackHackHitCheck(drawtime-stthitlifetime, online_tracks, online_fairhits_stt, tubearray);
122  // mvd hits
123  DrawFairHits(drawtime-stthitlifetime, online_fairhits_mvdpixel, 20);
124  DrawFairHits(drawtime-stthitlifetime, online_fairhits_mvdstrip, 20);
125 
126  c1->cd();
127  mytext->DrawText(-42, -42, TString::Format("%d ns",drawtime));
128  c1->Update();
129  c1->Print("hitdisplay.gif+20");
130 
131  delete online_fairhits_stt;
132  delete online_tracks;
133  delete online_fairhits_mvdpixel;
134  delete online_fairhits_mvdstrip;
135  }
136 
137  }
138 
139  c1->Print("hitdisplay.gif++");
140 
141  // ----- Finish -------------------------------------------------------
142  timer.Stop();
143  Double_t rtime = timer.RealTime();
144  Double_t ctime = timer.CpuTime();
145  cout << endl << endl;
146  cout << "Macro finished succesfully." << endl;
147  cout << "Real time " << rtime << " s, CPU time " << ctime << " s" << endl;
148  cout << endl;
149  // ------------------------------------------------------------------------
150  return 0;
151 }
TFile filereco("MvdStt_Test_reco.root")
TString digiFile
Definition: bump_emc.C:20
TString allDigiFile
Definition: hit_muo.C:36
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
FairParRootFileIo * parInput1
Definition: hit_dirc.C:67
Double_t ctime
Definition: hit_dirc.C:114
FairParAsciiFileIo * parIo1
Definition: bump_emc.C:53
Int_t iVerbose
Double_t rtime
Definition: hit_dirc.C:113