1 #include "TStopwatch.h"
4 #include "TClonesArray.h"
5 #include "basefunctions.hxx"
6 #include "basefunctions_skew.hxx"
25 gROOT->LoadMacro(
"$VMCWORKDIR/gconfig/rootlogon.C");
29 TString simFileName =
"Sim_Dpm_500.root";
30 TString parFileName =
"Sim_Dpm_500_params.root";
31 TString digiFileName =
"Sim_Dpm_500_digi.root";
32 TString recoFileName =
"Sim_Dpm_500_reco.root";
33 TString outFileName =
"Sim_Dpm_500_streamdisplay.root";
37 TFile filerecopixel(recoFileName.Data());
40 TClonesArray *sttsortedhits =
new TClonesArray(
"PndSttHit");
41 treedigi->SetBranchAddress(
"STTSortedHits",&sttsortedhits);
43 TTree *mvdstriprecotree = (TTree*)
filereco.Get(
"pndsim");
44 TClonesArray *mvdstripreco =
new TClonesArray(
"PndSdsHit");
45 mvdstriprecotree->SetBranchAddress(
"MVDHitsStrip",&mvdstripreco);
47 TTree *mvdpixelrecotree = (TTree*)
filereco.Get(
"pndsim");
48 TClonesArray *mvdpixelreco =
new TClonesArray(
"PndSdsHit");
49 mvdpixelrecotree->SetBranchAddress(
"MVDHitsPixel",&mvdpixelreco);
51 FairRunAna *
fRun=
new FairRunAna();
52 fRun->SetInputFile(simFileName.Data());
54 fRun->AddFriend(digiFileName.Data());
56 fRun->SetOutputFile(outFileName.Data());
58 FairRuntimeDb*
rtdb = fRun->GetRuntimeDb();
59 FairParRootFileIo*
parInput1 =
new FairParRootFileIo();
60 parInput1->open(parFileName.Data());
61 rtdb->setFirstInput(parInput1);
68 fRun->AddTask(sttFindTracks);
74 TCanvas* rzcanvas =
new TCanvas(
"rzcanvas");
75 rzcanvas->Range(-54,-42,114,42);
76 rzcanvas->SetCanvasSize(1200, 600);
79 TCanvas*
c2 =
new TCanvas(
"c2");
80 c2->Range(-54,-42,114,42);
81 c2->SetCanvasSize(1200, 600);
84 TCanvas*
c1 =
new TCanvas(
"c1");
85 c1->Range(-42, -42, 42, 42);
86 c1->SetCanvasSize(1200, 1200);
90 Int_t timelimit = 2200;
91 Int_t timewindow = 245;
92 Int_t revtimewindow = 10;
93 Int_t mvdtimewindow = 20;
94 Int_t mvdrevtimewindow = 5;
98 Int_t stripnexttime = 0;
100 Int_t stripclonespos = 0;
101 Int_t pixelnexttime = 0;
102 Int_t pixelevpos = 0;
103 Int_t pixelclonespos = 0;
104 TObjArray *drawstackhits =
new TObjArray();
105 drawstackhits->SetName(
"drawstackhits");
106 drawstackhits->SetOwner(kTRUE);
107 TObjArray *drawstackstriphits =
new TObjArray();
108 drawstackstriphits->SetName(
"drawstackstriphits");
109 drawstackstriphits->SetOwner(kTRUE);
110 TObjArray *drawstackpixelhits =
new TObjArray();
111 drawstackpixelhits->SetName(
"drawstackpixelhits");
112 drawstackpixelhits->SetOwner(kTRUE);
114 TObjArray* innertriplets =
new TObjArray();
115 innertriplets->SetName(
"innertriplets");
116 TObjArray* midtriplets =
new TObjArray();
117 midtriplets->SetName(
"midtriplets");
118 TObjArray* outertriplets =
new TObjArray();
119 outertriplets->SetName(
"outertriplets");
120 TObjArray* innerskewlets =
new TObjArray();
121 innerskewlets->SetName(
"innerskewlets");
122 TObjArray* outerskewlets =
new TObjArray();
123 outerskewlets->SetName(
"outerskewlets");
126 TText* mytext =
new TText();
128 treedigi->GetEntry(0);
129 mvdstriprecotree->GetEntry(0);
130 mvdpixelrecotree->GetEntry(0);
132 for (Int_t currenttime = starttime; currenttime < timelimit; currenttime+=5) {
134 GetHitsInTime(currenttime, timewindow, drawstackhits, nexttime, evpos, clonespos, treedigi, sttsortedhits);
135 GetHitsInTime(currenttime, mvdtimewindow, drawstackstriphits, stripnexttime, stripevpos, stripclonespos, mvdstriprecotree, mvdstripreco);
136 GetHitsInTime(currenttime, mvdtimewindow, drawstackpixelhits, pixelnexttime, pixelevpos, pixelclonespos, mvdpixelrecotree, mvdpixelreco);
138 cout <<
"STT Hits active: " << drawstackhits->GetEntriesFast() << endl;
139 cout <<
"MVD Strip Hits active: " << drawstackstriphits->GetEntriesFast() << endl;
140 cout <<
"MVD Pixel Hits active: " << drawstackpixelhits->GetEntriesFast() << endl;
141 if ((drawstackhits->IsEmpty()) && (drawstackstriphits->IsEmpty()) && (drawstackpixelhits->IsEmpty()))
continue;
144 RemoveOldHits(currenttime, revtimewindow, drawstackhits);
145 RemoveOldHits(currenttime, mvdrevtimewindow, drawstackstriphits);
146 RemoveOldHits(currenttime, mvdrevtimewindow, drawstackpixelhits);
149 innertriplets->Clear();
150 midtriplets->Clear();
151 outertriplets->Clear();
152 innerskewlets->Clear();
153 outerskewlets->Clear();
157 FindSkewlets(drawstackhits, tubearray, innerskewlets, 1000, 1395, 1394, 1813);
163 DrawFairHitsYZ(currenttime-mvdrevtimewindow, drawstackstriphits, mvdtimewindow+mvdrevtimewindow);
164 DrawFairHitsYZ(currenttime-mvdrevtimewindow, drawstackpixelhits, mvdtimewindow+mvdrevtimewindow);
165 DrawVector3YZ(innerskewlets);
166 mytext->DrawText(-54, -42, TString::Format(
"%d ns",currenttime));
172 DrawFairHitsRZ(currenttime-mvdrevtimewindow, drawstackstriphits, mvdtimewindow+mvdrevtimewindow);
173 DrawFairHitsRZ(currenttime-mvdrevtimewindow, drawstackpixelhits, mvdtimewindow+mvdrevtimewindow);
174 DrawVector3RZ(innerskewlets);
175 mytext->DrawText(-54, -42, TString::Format(
"%d ns",currenttime));
182 cout <<
" Drawing stuff " << endl;
184 DrawFairHits(currenttime-mvdrevtimewindow, drawstackstriphits, mvdtimewindow+mvdrevtimewindow);
185 DrawFairHits(currenttime-mvdrevtimewindow, drawstackpixelhits, mvdtimewindow+mvdrevtimewindow);
186 DrawTripletTracks(innertriplets, midtriplets, 10);
187 DrawTripletTracks(innertriplets, outertriplets, 45);
188 DrawTripletTracks(midtriplets, outertriplets, 25);
189 DrawVector3(innerskewlets);
191 mytext->DrawText(-42, -42, TString::Format(
"%d ns",currenttime));
194 c2->Print(
"hitstreamyz.gif+15");
196 rzcanvas->Print(
"hitstreamrz.gif+15");
TFile filereco("MvdStt_Test_reco.root")
PndSttTrackFinderReal * sttTrackFinder
void DrawIsochrones(Int_t currenttime, TObjArray *stthits, TObjArray *stttubes, Int_t *timeviolationcount)
TFile filedigi("testdigi.root")
PndSttFindTracks * sttFindTracks
TClonesArray * FillTubeArray()
FairParRootFileIo * parInput1
void AddHitCollectionName(char *hitCollectionName, char *pointCollectionName)