ATTPCROOT  0.3.0-alpha
A ROOT-based framework for analyzing data from active target detectors
AtEventDrawTaskS800.cxx
Go to the documentation of this file.
1 
7 #include "AtEventDrawTaskS800.h"
8 // IWYU pragma: no_include <ext/alloc_traits.h>
9 #include "AtEvent.h" // for AtEvent, hitVector
10 #include "AtEventManagerS800.h" // for AtEventManagerS800
11 #include "AtHit.h" // for AtHit
12 #include "AtMap.h" // for AtMap
13 #include "AtPad.h" // for AtPad
14 #include "AtPatternEvent.h" // for AtPatternEvent
15 #include "AtProtoEvent.h" // for AtProtoEvent
16 #include "AtProtoQuadrant.h" // for AtProtoQuadrant
17 #include "AtRawEvent.h" // for AtRawEvent
18 #include "AtTpcMap.h" // for AtTpcMap
19 #include "AtTpcProtoMap.h" // for AtTpcProtoMap
20 #include "AtTrack.h" // for AtTrack, operator<<
21 #include "AtTrackingEventAna.h" // for AtTrackingEventAna
22 
23 #include <FairLogger.h> // for Logger, LOG
24 #include <FairRootManager.h> // for FairRootManager
25 
26 #include <Math/Point3D.h> // for PositionVector3D, Cartesian3D, opera...
27 #include <TAttMarker.h> // for kFullDotMedium
28 #include <TAxis.h> // for TAxis
29 #include <TCanvas.h> // for TCanvas
30 #include <TClonesArray.h> // for TClonesArray
31 #include <TColor.h> // for TColor
32 #include <TEveBoxSet.h> // for TEveBoxSet, TEveBoxSet::kBT_AABox
33 #include <TEveLine.h> // for TEveLine
34 #include <TEveManager.h> // for TEveManager, gEve
35 #include <TEvePointSet.h> // for TEvePointSet
36 #include <TEveTrans.h> // for TEveTrans
37 #include <TEveTreeTools.h> // for TEvePointSelectorConsumer, TEvePoint...
38 #include <TF1.h> // for TF1
39 #include <TGraph.h> // for TGraph
40 #include <TH1.h> // for TH1D, TH1I, TH1F
41 #include <TH2.h> // for TH2F
42 #include <TH2Poly.h> // for TH2Poly
43 #include <TH3.h> // for TH3F
44 #include <TList.h> // for TList
45 #include <TNamed.h> // for TNamed
46 #include <TObject.h> // for TObject
47 #include <TPaletteAxis.h> // for TPaletteAxis
48 #include <TROOT.h> // for TROOT, gROOT
49 #include <TRandom.h> // for TRandom
50 #include <TSeqCollection.h> // for TSeqCollection
51 #include <TString.h> // for TString, Form, operator==, operator<<
52 #include <TStyle.h> // for TStyle, gStyle
53 #include <TVirtualPad.h> // for TVirtualPad, gPad
54 #include <TVirtualX.h> // for TVirtualX
55 
56 #include "S800Calc.h" // for S800Calc, CRDC, MultiHitTOF, IC
57 
58 #include <algorithm> // for max
59 #include <array> // for array
60 #include <cmath> // for isnan, atan
61 #include <cstdio> // for sprintf
62 #include <iostream> // for cout
63 #include <memory> // for allocator_traits<>::value_type
64 #include <vector> // for vector, allocator
65 
66 constexpr auto cRED = "\033[1;31m";
67 constexpr auto cYELLOW = "\033[1;33m";
68 constexpr auto cNORMAL = "\033[0m";
69 constexpr auto cGREEN = "\033[1;32m";
70 constexpr auto cBLUE = "\033[1;34m";
71 
72 using namespace std;
73 
75 
77  : fIs2DPlotRange(kFALSE), fUnpackHough(kFALSE), fHitArray(nullptr),
78  // fHitClusterArray(0),
79  // fRiemannTrackArray(0),
80  // fKalmanArray(0),
81  fEventManager(nullptr), fRawevent(nullptr), fHoughSpaceArray(nullptr), fProtoEventArray(nullptr), fDetmap(nullptr),
82  fThreshold(0), fHitSet(nullptr),
83  // x(0),
84  // hitSphereArray(0),
85  fhitBoxSet(nullptr), fPadPlanePal(nullptr), fHitColor(kPink), fHitSize(1), fHitStyle(kFullDotMedium),
86  // fHitClusterSet(0),
87  // fHitClusterColor(kAzure-5),
88  // fHitClusterColor(kYellow-5),
89  // fHitClusterSize(1),
90  // fHitClusterStyle(kOpenCircle),
91  // fRiemannSetArray(0),
92  // fRiemannColor(kBlue),
93  // fRiemannSize(1.5),
94  // fRiemannStyle(kOpenCircle),
95  fCvsPadPlane(nullptr), fPadPlane(nullptr), fCvsPadWave(nullptr), fPadWave(nullptr), fCvsPadAll(nullptr),
96  fCvsQEvent(nullptr), fQEventHist(nullptr), fQEventHist_H(nullptr), fCvsHoughSpace(nullptr), fHoughSpace(nullptr),
97  fCvsRhoVariance(nullptr), fRhoVariance(nullptr), fCvsPhi(nullptr), fCvsMesh(nullptr), fMesh(nullptr),
98  fCvs3DHist(nullptr), f3DHist(nullptr), fCvsRad(nullptr), fRadVSTb(nullptr), fCvsTheta(nullptr), fTheta(nullptr),
99  fAtMapPtr(nullptr), fMinZ(0), fMaxZ(1344), fMinX(432), fMaxX(-432), f3DHitStyle(0), fMultiHit(0),
100  fSaveTextData(false), f3DThreshold(0), fRANSACAlg(0), fCvsLvsTheta(nullptr), fLvsTheta(nullptr), fCvsPID(nullptr),
101  fPID(nullptr), fCvsPID2(nullptr), fPID2(nullptr)
102 
103 {
104 
105  // fAtMapPtr = new AtTpcMap();
106 
107  Char_t padhistname[256];
108 
109  /*
110  for(Int_t i=0;i<300;i++){ // TODO: Full-scale must be accomodated
111  sprintf(padhistname,"pad_%d",i);
112  fPadAll[i] = new TH1I(padhistname,padhistname,512,0,511);
113 
114  // fPadAll[i] = NULL;
115  }
116  */
117 
118  Char_t phihistname[256];
119 
120  for (Int_t i = 0; i < 5; i++) {
121  sprintf(phihistname, "PhiDistr_%d", i);
122  fPhiDistr[i] = new TH1D(phihistname, phihistname, 180.0, -180.0, 180.0);
123  if (i == 0)
124  fPhiDistr[i]->SetLineColor(kRed);
125  else if (i == 1)
126  fPhiDistr[i]->SetLineColor(kBlue);
127  else if (i == 2)
128  fPhiDistr[i]->SetLineColor(kGreen);
129  else if (i == 3)
130  fPhiDistr[i]->SetLineColor(kCyan);
131  else if (i == 4)
132  fPhiDistr[i]->SetLineColor(kMagenta);
133  fPhiDistr[i]->SetLineWidth(2);
134  fPhiDistr[i]->GetYaxis()->SetRangeUser(0., 20.);
135  }
136 
137  fIsCircularHough = kFALSE;
138  fIsLinearHough = kFALSE;
139  fIsRawData = kFALSE;
140 
142  new TF1("HoughLinearFit", " ( (-TMath::Cos([0])/TMath::Sin([0]))*x ) + [1]/TMath::Sin([0])", 0, 500);
143  fRansacLinearFit = new TF1("RansacLinearFit", "x", 0, 500);
144  fIniHit = new AtHit();
145  fIniHitRansac = new AtHit();
146  fLineNum = 0;
147  fTrackNum = 0;
148 }
149 
151 {
152 
153  // TODO Destroy pointers
154  // for(Int_t i=0;i<hitSphereArray.size();i++) delete hitSphereArray[i];
155  // delete x;
156  // hitSphereArray.clear();
157  delete fHoughLinearFit;
158  delete fRansacLinearFit;
159 }
160 
162 {
163 
164  TString option = fGeoOption;
165  std::cout << " ===== AtEventDrawTaskS800::Init =====" << std::endl;
166  std::cout << " ===== Current detector : " << option.Data() << std::endl;
167  gROOT->Reset();
168  FairRootManager *ioMan = FairRootManager::Instance();
170 
171  if (option == "Prototype") {
172 
173  fDetmap = new AtTpcProtoMap();
174  // TString fMap = "/Users/yassidayyad/fair_install/AtTPCROOT_v2_06042015/scripts/proto.map"; //TODO Put it as
175  // input of the run macro
176  dynamic_cast<AtTpcProtoMap *>(fDetmap)->SetProtoMap(fMap.Data());
177  } else {
178  fDetmap = new AtTpcMap();
179  }
180 
181  fDetmap->SetName("fMap");
182  gROOT->GetListOfSpecials()->Add(fDetmap);
183 
184  fHitArray = dynamic_cast<TClonesArray *>(
185  ioMan->GetObject("AtEventH")); // TODO: Why this confusing name? It should be fEventArray
186  if (fHitArray)
187  LOG(INFO) << cGREEN << "Hit Array Found." << cNORMAL;
188 
189  /*
190  fRawEventArray = (TClonesArray*) ioMan->GetObject("AtRawEvent");
191  if(fRawEventArray){
192  LOG(INFO)<<cGREEN<<"Raw Event Array Found."<<cNORMAL<<FairLogger::endl;
193  fIsRawData=kTRUE;
194  }
195  */
196  fHoughSpaceArray = dynamic_cast<TClonesArray *>(ioMan->GetObject("AtHough"));
197  if (fHoughSpaceArray)
198  LOG(INFO) << cGREEN << "Hough Array Found." << cNORMAL;
199 
200  fProtoEventArray = dynamic_cast<TClonesArray *>(ioMan->GetObject("AtProtoEvent"));
201  if (fProtoEventArray)
202  LOG(INFO) << cGREEN << "Prototype Event Array Found." << cNORMAL;
203 
204  fRansacArray = dynamic_cast<TClonesArray *>(ioMan->GetObject("AtRansac"));
205  if (fRansacArray)
206  LOG(INFO) << cGREEN << "RANSAC Array Found." << cNORMAL;
207 
208  // fTrackFinderHCArray = (TClonesArray*) ioMan->GetObject("AtTrackFinderHC");
209  // if(fTrackFinderHCArray) LOG(INFO)<<cGREEN<<"Track Finder Hierarchical Clustering Array
210  // Found."<<cNORMAL<<FairLogger::endl;
211 
212  fPatternEventArray = dynamic_cast<TClonesArray *>(ioMan->GetObject("AtPatternEvent"));
213  if (fPatternEventArray)
214  LOG(INFO) << cGREEN << "Pattern Event Array Found." << cNORMAL;
215 
216  fTrackingEventAnaArray = dynamic_cast<TClonesArray *>(ioMan->GetObject("AtTrackingEventAna"));
218  LOG(INFO) << cGREEN << "Tracking Event Analysis Array Found." << cNORMAL;
219 
220  fS800Calc = dynamic_cast<S800Calc *>(ioMan->GetObject("s800cal"));
221  if (fS800Calc)
222  LOG(INFO) << cGREEN << "S800Calc Found." << cNORMAL;
223  // fS800CalcArray = (TClonesArray*) ioMan->GetObject("s800cal");
224  // if(fS800CalcArray) LOG(INFO)<<cGREEN<<"S800Calc Array Found."<<cNORMAL<<FairLogger::endl;
225 
226  // gROOT->GetListOfSpecials()->Add(fRawEventArray);
227  // fRawEventArray->SetName("AtRawEvent");
228 
229  gStyle->SetPalette(55);
230  // fPhiDistr=NULL;
231  // fCvsPadWave = fEventManager->GetCvsPadWave();
232  // fCvsPadWave->SetName("fCvsPadWave");
233  // gROOT->GetListOfSpecials()->Add(fCvsPadWave);
234  // DrawPadWave();
236  DrawMesh();
237  fCvsPadPlane = fEventManager->GetCvsPadPlane(); // There is a problem if the pad plane is drawn first
238  DrawPadPlane();
239  // fCvsPadPlane -> ToggleEventStatus();
240  // fCvsPadPlane->AddExec("ex","AtEventDrawTaskS800::SelectPad(\"fRawEvent\")");
241  // DrawPadPlane();
242  // fCvsPadAll = fEventManager->GetCvsPadAll();
243  // DrawPadAll();
244  // fCvs3DHist = new TCanvas("glcvs3dhist");
245  // fCvs3DHist = fEventManager->GetCvs3DHist();
246  // Draw3DHist();
247  // fCvsQEvent = new TCanvas("fCvsQEvent","fCvsQEvent");
248  // DrawQEvent();
249  // fCvsRhoVariance = new TCanvas("fCvsRhoVariance","fCvsRhoVariance");
250  // DrawRhoVariance();
251  // fCvsPhi = fEventManager->GetCvsPhi();
252  // DrawPhiReco();
253 
254  // fCvsRad = fEventManager->GetCvsRad();
255  // DrawRad();
257  DrawLvsTheta();
259  DrawPID();
260  // DrawTEST();
262  DrawPID2();
263 
264  // fCvsThetaxPhi = fEventManager->GetCvsThetaxPhi();
265  // DrawThetaxPhi();
266  // fCvsMC_XY = fEventManager->GetCvsMC_XY();
267  // fCvsMC_Z = fEventManager->GetCvsMC_Z();
268  // DrawMC();
269  /*fCvsQuadrant1 = fEventManager->GetCvsQuadrant1();
270  fCvsQuadrant2 = fEventManager->GetCvsQuadrant2();
271  fCvsQuadrant3 = fEventManager->GetCvsQuadrant3();
272  fCvsQuadrant4 = fEventManager->GetCvsQuadrant4();
273  DrawHoughSpaceProto();*/
274 
275  //******* NO CALLS TO TCANVAS BELOW THIS ONE
277  DrawHoughSpace();
278 
279  return kSUCCESS;
280 }
281 
282 void AtEventDrawTaskS800::Exec(Option_t *option)
283 {
284  Reset();
285  // ResetPadAll();
286  ResetPhiDistr();
287 
288  if (fHitArray) {
289  DrawHitPoints();
290  DrawMeshSpace();
291  }
292  if (fProtoEventArray)
293  DrawProtoSpace();
295  DrawHSpace();
296  if (fS800Calc) {
297  DrawS800();
298  }
299 
300  gEve->Redraw3D(kFALSE);
301 
303  // UpdateCvsPadWave();
304  // UpdateCvsPadAll();
305  // UpdateCvsQEvent();
306  // UpdateCvsRhoVariance();
307  // UpdateCvsPhi();
308  UpdateCvsMesh();
309  // UpdateCvs3DHist();
312  // UpdateCvsRad();
313  // UpdateCvsTheta();
314  // UpdateCvsThetaxPhi();
315  // UpdateCvsMC();
316  // UpdateCvsQuadrants();
317  }
318 }
319 
321 {
322 
323  // std::cout<<"draw func "<<fS800Calc->GetIC()->GetSum()<<std::endl;
324 
325  // fS800Calc = dynamic_cast<S800Calc*> (fS800CalcArray->At(0));
326  if (fS800Calc->GetIsInCut()) {
327  Double_t x0_corr_tof = 0.;
328  Double_t afp_corr_tof = 0.;
329  Double_t afp_corr_dE = 0.;
330  Double_t x0_corr_dE = 0.;
331  Double_t rf_offset = 0.0;
332  Double_t corrGainE1up = 1;
333  Double_t corrGainE1down = 1;
334  Double_t ObjCorr1C1 = 100.; // 70
335  Double_t ObjCorr1C2 = 0.021; // 0.0085
336 
337  // Double_t S800_timeRf = fS800Calc->GetMultiHitTOF()->GetFirstRfHit();
338  // Double_t S800_timeE1up = fS800Calc->GetMultiHitTOF()->GetFirstE1UpHit();
339  // Double_t S800_timeE1down = fS800Calc->GetMultiHitTOF()->GetFirstE1DownHit();
340  // Double_t S800_timeE1 = sqrt( (corrGainE1up*S800_timeE1up) * (corrGainE1down*S800_timeE1down) );
341  // Double_t S800_timeXf = fS800Calc->GetMultiHitTOF()->GetFirstXfHit();
342  // Double_t S800_timeObj = fS800Calc->GetMultiHitTOF()->GetFirstObjHit();
343 
344  //----------- New 10/01 -------------------------------------
345  Int_t CondMTDCXfObj = 0;
346  vector<Float_t> S800_timeMTDCObj = fS800Calc->GetMultiHitTOF()->GetMTDCObj();
347  vector<Float_t> S800_timeMTDCXf = fS800Calc->GetMultiHitTOF()->GetMTDCXf();
348  Float_t S800_timeObjSelect = -999;
349  Float_t S800_timeXfSelect = -999;
350  Float_t ObjCorr = -999;
351 
352  for (float k : S800_timeMTDCXf) {
353  if (k > 140 && k < 230)
354  S800_timeXfSelect = k;
355  }
356  for (float k : S800_timeMTDCObj) {
357  if (k > -115 && k < -20)
358  S800_timeObjSelect = k;
359  }
360 
361  Double_t XfObj_tof = S800_timeXfSelect - S800_timeObjSelect;
362  if (S800_timeXfSelect != -999 && S800_timeObjSelect != -999) {
363  XfObj_tof = S800_timeXfSelect - S800_timeObjSelect;
364  CondMTDCXfObj = 1;
365  }
366  Double_t S800_ICSum = fS800Calc->GetIC()->GetSum();
367  //----------- New 10/01 -------------------------------------
368 
369  Double_t S800_x0 = fS800Calc->GetCRDC(0)->GetX();
370  Double_t S800_x1 = fS800Calc->GetCRDC(1)->GetX();
371  // Double_t S800_y0 = fS800Calc->GetCRDC(0)->GetY();
372  // Double_t S800_y1 = fS800Calc->GetCRDC(1)->GetY();
373 
374  // Double_t S800_E1up = fS800Calc->GetSCINT(0)->GetDEup();
375  // Double_t S800_E1down = fS800Calc->GetSCINT(0)->GetDEdown();
376 
377  // Double_t S800_tof = S800_timeObj - S800_timeE1;
378 
379  Double_t S800_afp = atan((S800_x1 - S800_x0) / 1073.);
380  // Double_t S800_bfp = atan( (S800_y1-S800_y0)/1073. );
381  // Double_t S800_tofCorr = S800_tof + x0_corr_tof*S800_x0 + afp_corr_tof*S800_afp;// - rf_offset;
382  // Double_t S800_dE = fS800Calc->GetSCINT(0)->GetDE();//check if is this scint (0)
383  // Double_t S800_dE = sqrt( (corrGainE1up*S800_E1up) * (corrGainE1down* S800_E1down ) );
384  // Double_t S800_dECorr = S800_dE + afp_corr_dE*S800_afp + x0_corr_dE*fabs(S800_x0);
385 
386  if (CondMTDCXfObj && std::isnan(S800_ICSum) == 0 && std::isnan(S800_afp) == 0 && std::isnan(S800_x0) == 0)
387  ObjCorr = S800_timeObjSelect + ObjCorr1C1 * S800_afp + ObjCorr1C2 * S800_x0;
388 
389  // std::cout<<"draw func in cut "<<S800_timeObjSelect<<" "<<XfObj_tof<<" "<<S800_ICSum<<std::endl;
390 
391  if (ObjCorr != -999)
392  fPID->Fill(ObjCorr, XfObj_tof);
393  if (ObjCorr != -999)
394  fPID2->Fill(ObjCorr, S800_ICSum);
395  }
396 }
397 
399 {
400 
401  // std::cout<<"draw hit Points "<<fHitArray->At(0)<<std::endl;
402 
403  fMesh->Reset(nullptr);
404  // f3DHist->Reset(0);
405  TRandom r(0);
406 
407  std::ofstream dumpEvent;
408  dumpEvent.open("event.dat");
409 
410  std::vector<Double_t> fPosXMin;
411  std::vector<Double_t> fPosYMin;
412  std::vector<Double_t> fPosZMin;
413 
414  // fQEventHist_H->Reset(0);
415  auto *event = dynamic_cast<AtEvent *>(fHitArray->At(0)); // TODO: Why this confusing name? It should be fEventArray
416  // event->SortHitArray(); // Works surprisingly well
417  // Double_t Qevent=event->GetEventCharge();
418  // Double_t RhoVariance=event->GetRhoVariance();
419  auto MeshArray = event->GetMesh();
420  Int_t eventID = event->GetEventID();
421  // std::ofstream dumpEvent;
422  // dumpEvent.open ("event.dat");
423  TString TSevt = " Event ID : ";
424  TString TSpad = " Pad ID : ";
425  dumpEvent << TSevt << eventID << std::endl;
426 
427  if (fEventManager->GetEraseQEvent()) {
428  // fQEventHist->Reset();
429  // fRhoVariance->Reset();
430  }
431 
432  // fQEventHist->Fill(Qevent);
433  // fQEventHist_H->Fill(Qevent);
434  // fRhoVariance->Fill(RhoVariance);
435 
436  for (Int_t i = 0; i < 512; i++) {
437 
438  fMesh->SetBinContent(i, MeshArray[i]);
439  }
440 
441  if (fIsRawData) {
442  fRawevent = dynamic_cast<AtRawEvent *>(fRawEventArray->At(0));
443  fRawevent->SetName("fRawEvent");
444  gROOT->GetListOfSpecials()->Add(fRawevent);
445  }
446 
447  // std::cout<<std::endl;
448  // std::cout<<" AtHit Event ID : "<<event->GetEventID()<<std::endl;
449  // std::cout<<" AtRawEvent Event ID : "<<rawevent->GetEventID()<<std::endl;
450  // if(event->GetEventID()!=rawevent->GetEventID()) std::cout<<" = AtEventDrawTaskS800::DrawHitPoints : Warning,
451  // EventID mismatch."<<std::endl;
452  Int_t nHits = event->GetNumHits();
453  fHitSet = new TEvePointSet("Hit", nHits, TEvePointSelectorConsumer::kTVT_XYZ);
454  fHitSet->SetOwnIds(kTRUE);
455  fHitSet->SetMarkerColor(fHitColor);
456  fHitSet->SetMarkerSize(fHitSize);
457  fHitSet->SetMarkerStyle(fHitStyle);
458  std::cout << cBLUE << " Number of hits : " << nHits << cNORMAL << std::endl;
459 
460  // 3D visualization of the Minimized data
461 
462  Int_t nHitsMin = 0; // Initialization of the variable to ensure a non-NULL pointer
463  fHitSetMin = new TEvePointSet();
464 
466 
467  // if(fIsLinearHough){
468  // fLineArray.clear();
469  for (auto &i : fLineArray)
470  i = new TEveLine();
471  int n = 100;
472  double t0 = 0;
473  double dt = 2000;
474  std::vector<AtTrack> TrackCand;
475 
476  if (fRansacArray) {
477 
478  } else if (fPatternEventArray) {
479  auto *patternEvent = dynamic_cast<AtPatternEvent *>(fPatternEventArray->At(0));
480  TrackCand = patternEvent->GetTrackCand();
481  for (auto &i : fHitSetTFHC)
482  i = nullptr;
483 
484  if (TrackCand.size() < 10) {
485  for (Int_t i = 0; i < TrackCand.size(); i++) {
486 
487  AtTrack track = TrackCand.at(i);
488  std::vector<AtHit> trackHits = track.GetHitArrayObject();
489 
490  fHitSetTFHC[i] = new TEvePointSet(Form("HitMC_%d", i), nHitsMin, TEvePointSelectorConsumer::kTVT_XYZ);
491  fHitSetTFHC[i]->SetMarkerColor(GetTrackColor(i) + 1);
492  fHitSetTFHC[i]->SetMarkerSize(fHitSize);
493  fHitSetTFHC[i]->SetMarkerStyle(fHitStyle);
494 
495  for (auto &trackHit : trackHits) {
496  auto position = trackHit.GetPosition();
497  fHitSetTFHC[i]->SetNextPoint(position.X() / 10., position.Y() / 10., position.Z() / 10.);
498  }
499  }
500  }
501  }
502 
504 
505  for (auto &i : fHitSetMC)
506  i = nullptr;
507 
509  std::vector<AtTrack> anaTracks = fTrackingEventAna->GetTrackArray();
510  std::cout << cRED << "Calling code for MC Minimization which is depricated!!!" << std::endl;
511  std::cout << cYELLOW << " ==== Tracking analysis ==== " << std::endl;
512  std::cout << " Number of analyzed tracks : " << anaTracks.size() << std::endl;
513  std::cout << " Vertex of reaction : " << fTrackingEventAna->GetVertex() << std::endl;
514 
515  fTrackNum = anaTracks.size();
516 
517  if (anaTracks.size() < 5) { // Limited to 5 tracks
518  for (Int_t i = 0; i < anaTracks.size(); i++) {
519  AtTrack track = anaTracks.at(i);
520  std::cout << track << std::endl;
521  /*
522  fPosXMin = track.GetPosXMin();
523  fPosYMin = track.GetPosYMin();
524  fPosZMin = track.GetPosZMin();
525  nHitsMin = fPosXMin.size();
526  */
527  fHitSetMC[i] = new TEvePointSet(Form("HitMC_%d", i), nHitsMin, TEvePointSelectorConsumer::kTVT_XYZ);
528  fHitSetMC[i]->SetOwnIds(kTRUE);
529  fHitSetMC[i]->SetMarkerColor(kGreen);
530  fHitSetMC[i]->SetMarkerSize(fHitSize);
531  fHitSetMC[i]->SetMarkerStyle(fHitStyle);
532 
533  for (Int_t iHit = 0; iHit < fPosXMin.size(); iHit++)
534  fHitSetMC[i]->SetNextPoint(fPosXMin.at(iHit) / 10., fPosYMin.at(iHit) / 10., fPosZMin.at(iHit) / 10.);
535  }
536  }
537  } // If trackingEventAnaArray
538 
539  fLineNum = TrackCand.size();
540  std::cout << cRED << " Found " << TrackCand.size() << " track candidates " << cNORMAL << std::endl;
541  }
542 
544 
545  fhitBoxSet = new TEveBoxSet("hitBox");
546  fhitBoxSet->Reset(TEveBoxSet::kBT_AABox, kTRUE, 64);
547 
548  for (Int_t iHit = 0; iHit < nHits; iHit++) {
549 
550  AtHit hit = *event->GetHits().at(iHit);
551  Int_t PadNumHit = hit.GetPadNum();
552  Int_t PadMultHit = event->GetHitPadMult(PadNumHit);
553 
554  if (hit.GetCharge() < fThreshold)
555  continue;
556  if (PadMultHit > fMultiHit)
557  continue;
558  auto position = hit.GetPosition();
559 
561  fHitSet->SetMarkerColor(fHitColor);
562  fHitSet->SetNextPoint(position.X() / 10., position.Y() / 10., position.Z() / 10.); // Convert into cm
563  fHitSet->SetPointId(new TNamed(Form("Hit %d", iHit), ""));
564  fPadPlane->Fill(position.X(), position.Y(), hit.GetCharge());
565  }
566 
567  /*std::cout<<" --------------------- "<<std::endl;
568  std::cout<<" Hit : "<<iHit<<" AtHit Pad Number : "<<PadNumHit<<" Pad Hit Mult : "<<PadMultHit<<" Pad Time Bucket
569  : "<<hit.GetTimeStamp()<<" Hit X Position : "<<position.X()<<" Hit Y Position : "<<position.Y()<<" Hit Z Position
570  : "<<position.Z()<<std::endl; std::cout<<" Hit number : "<<iHit<<" - AtHit Pad Number : "<<PadNumHit<<" - Hit
571  Charge : "<<hit.GetCharge()<<" - Hit Base Correction : "<<BaseCorr<<std::endl;*/
572 
573  Bool_t fValidPad;
574 
575  /*
576  if(fIsRawData){
577  AtPad *RawPad = fRawevent->GetPad(PadNumHit,fValidPad);
578  Double_t *adc = RawPad->GetADC();
579  for(Int_t i=0;i<512;i++){
580 
581  f3DThreshold = fEventManager->Get3DThreshold();
582  if(adc[i]>f3DThreshold) f3DHist->Fill(position.X()/10.,position.Y()/10.,i,adc[i]);
583 
584  }
585  }
586  */
587 
588  if (fSaveTextData) {
590  dumpEvent << position.X() << " " << position.Y() << " " << position.Z() << " " << hit.GetTimeStamp() << " "
591  << hit.GetCharge() << std::endl;
592  }
593 
594  // std::cout<<" Hit number : "<<iHit<<" - Position X : "<<position.X()<<" - Position Y : "<<position.Y()<<" -
595  // Position Z : "<<position.Z()<<" - AtHit Pad Number : "<<PadNumHit<<" - Pad bin :"<<Atbin<<" - Hit Charge :
596  // "<<hit.GetCharge()<<std::endl;
597 
598  /* x = new TEveGeoShape(Form("hitShape_%d",iHit));
599  x->SetShape(new TGeoSphere(0, 0.1*hit.GetCharge()/300.));
600  x->RefMainTrans().SetPos(position.X()/10.,
601  position.Y()/10.,
602  position.Z()/10.);
603  hitSphereArray.push_back(x);*/
604 
605  // Float_t HitBoxYDim = TMath::Log(hit.GetCharge())*0.05;
606  // Float_t HitBoxYDim = hit.GetCharge()*0.001;
607  // Float_t HitBoxZDim = 0.05;
608  // Float_t HitBoxXDim = 0.05;
609 
610  // fhitBoxSet->AddBox(position.X()/10. - HitBoxXDim/2.0, position.Y()/10., position.Z()/10. - HitBoxZDim/2.0,
611  // HitBoxXDim,HitBoxYDim,HitBoxZDim); //This coordinates are x,y,z in our system
612 
613  // Float_t xrgb=255,yrgb=0,zrgb=0;
614  /* if(fPadPlanePal){
615 
616  // Int_t cHit = fPadPlanePal->GetValueColor();
617  // Int_t cHit = 100;
618  //TColor *hitBoxColor = gROOT->GetColor(cHit);
619  //hitBoxColor->GetRGB(xrgb,yrgb,zrgb);
620 
621  std::cout<<" xrgb : "<<xrgb<<std::endl;
622  std::cout<<" yrgb : "<<yrgb<<std::endl;
623  std::cout<<" zrgb : "<<zrgb<<std::endl;
624 
625  }*/
626 
627  // fhitBoxSet->DigitColor(xrgb,yrgb,zrgb, 0);
628  }
629 
631  std::cout << cGREEN << " Number of simulated points " << fPosXMin.size() << cNORMAL << std::endl;
632  for (Int_t iHit = 0; iHit < fPosXMin.size(); iHit++) {
634  if (fIsCircularHough) {
635  fHitSetMin->SetNextPoint(fPosXMin.at(iHit) / 10., fPosYMin.at(iHit) / 10.,
636  fPosZMin.at(iHit) / 10.); // Convert into ccm
637  }
638  }
639  }
640 
642 
643  fPadPlane->Draw("zcol");
644  gPad->Update();
645  fPadPlanePal = dynamic_cast<TPaletteAxis *>(fPadPlane->GetListOfFunctions()->FindObject("palette"));
646 
647  for (Int_t iHit = 0; iHit < nHits; iHit++) {
648 
649  AtHit hit = *event->GetHits().at(iHit);
650  auto position = hit.GetPosition();
651 
652  if (f3DHitStyle == 0) {
653 
654  Float_t HitBoxYDim = hit.GetCharge() * 0.001;
655  Float_t HitBoxZDim = 0.05;
656  Float_t HitBoxXDim = 0.05;
657 
659  fhitBoxSet->AddBox(position.X() / 10. - HitBoxXDim / 2.0, position.Y() / 10.,
660  position.Z() / 10. - HitBoxZDim / 2.0, HitBoxXDim, HitBoxYDim,
661  HitBoxZDim); // This coordinates are x,y,z in our system
662  }
663 
664  } else if (f3DHitStyle == 1) {
665 
666  Float_t HitBoxYDim = hit.GetCharge() * 0.0002;
667  Float_t HitBoxZDim = hit.GetCharge() * 0.0002;
668  Float_t HitBoxXDim = hit.GetCharge() * 0.0002;
669 
671  fhitBoxSet->AddBox(position.X() / 10. - HitBoxXDim / 2.0, position.Y() / 10. - HitBoxYDim / 2.0,
672  position.Z() / 10. - HitBoxZDim / 2.0, HitBoxXDim, HitBoxYDim,
673  HitBoxZDim); // This coordinates are x,y,z in our system
674  }
675  }
676 
677  Float_t xrgb = 255, yrgb = 0, zrgb = 0;
678  if (fPadPlanePal) {
679 
680  Int_t cHit = fPadPlanePal->GetValueColor(hit.GetCharge());
681  TColor *hitBoxColor = gROOT->GetColor(cHit);
682  hitBoxColor->GetRGB(xrgb, yrgb, zrgb);
683 
684  // std::cout<<" xrgb : "<<xrgb<<std::endl;
685  // std::cout<<" yrgb : "<<yrgb<<std::endl;
686  // std::cout<<" zrgb : "<<zrgb<<std::endl;
687  // std::cout<<fPadPlanePal<<std::endl;
688  }
689 
690  fhitBoxSet->DigitColor(xrgb * 255, yrgb * 255, zrgb * 255, 0);
691  }
692 
694 
695  fhitBoxSet->RefitPlex();
696  TEveTrans &tHitBoxPos = fhitBoxSet->RefMainTrans();
697  tHitBoxPos.SetPos(0.0, 0.0, 0.0);
698 
699  // for(Int_t i=0;i<hitSphereArray.size();i++) gEve->AddElement(hitSphereArray[i]);
700 
701  if (fIsRawData) {
702  Int_t nPads = fRawevent->GetNumPads();
703  std::cout << "Num of pads : " << nPads << std::endl;
704 
705  if (fEventManager->GetDrawAllPad()) {
706 
707  for (Int_t iPad = 0; iPad < nPads; iPad++) {
708 
709  AtPad *fPad = fRawevent->GetPad(iPad);
710  // std::cout<<"Pad num : "<<iPad<<" Is Valid? : "<<fPad->GetValidPad()<<" Pad num in pad object
711  // :"<<fPad->GetPadNum()<<std::endl;
712  auto rawadc = fPad->GetRawADC();
713  auto adc = fPad->GetADC();
714  // dumpEvent<<TSpad<<fPad->GetPadNum()<<std::endl;
715 
716  for (Int_t j = 0; j < 512; j++) { // TODO: This is limited to 256 pads only. Increment the size of the array
717  // and put another option for AtTPC
718 
719  if (fPad->GetValidPad() && iPad < 256) {
720 
721  fPadAll[iPad]->SetBinContent(j, adc[j]);
722  // if(fSaveTextData) dumpEvent<<adc[j]<<" "<<j<<" "<<fPad->GetPadNum()<<std::endl;
723  }
724  }
725 
726  // delete fPad;
727  // fPad= NULL;
728  }
729  }
730  }
731 
732  // Adding raw data points
734 
735  gEve->AddElement(fHitSet);
736  gEve->AddElement(fhitBoxSet);
737 
738  // Adding pattern rec. and tracking algorithm results
739  } else if (fEventManager->GetDrawHoughSpace()) {
740 
741  if (fIsCircularHough)
742  gEve->AddElement(fHitSetMin);
743 
744  if (fIsLinearHough || fRansacArray) {
745  if (fLineNum > 0)
746  for (Int_t i = 0; i < fLineNum; i++)
747  gEve->AddElement(fLineArray[i]);
748  // Lines plot together with data points
749  gEve->AddElement(fHitSet);
750  gEve->AddElement(fhitBoxSet);
751  for (auto &w : fVVertex)
752  gEve->AddElement(w);
753  // if(fVertex) gEve -> AddElement(fVertex);
754  }
755 
756  if (fPatternEventArray)
757  if (fLineNum > 0)
758  for (Int_t i = 0; i < fLineNum; i++)
759  gEve->AddElement(fHitSetTFHC[i]);
760 
762  if (fTrackNum > 0 && fTrackNum < 5)
763  for (Int_t i = 0; i < fTrackNum; i++)
764  gEve->AddElement(fHitSetMC[i]);
765  }
766 
767  dumpEvent.close();
768 
769  // gEve -> AddElement(fLine);
770  // if(fLineArray.size()>0) gEve -> AddElement(fLineArray.at(0));
771 }
772 
774 
776 {
777  auto *protoevent = dynamic_cast<AtProtoEvent *>(fProtoEventArray->At(0));
778  Int_t nQuads = protoevent->GetNumQuadrants();
779  std::vector<AtProtoQuadrant> quadrant;
780 
781  if (nQuads < 5) {
782  for (Int_t iQ = 0; iQ < nQuads; iQ++) {
783 
784  // AtProtoQuadrant quadrant = protoevent->GetQuadrantArray()->at(iQ);
785  quadrant.push_back(protoevent->GetQuadrantArray()->at(iQ));
786  std::vector<Double_t> *PhiArray = quadrant[iQ].GetPhiArray();
787  for (double pval : *PhiArray) {
788  fPhiDistr[iQ]->Fill(pval);
789  }
790  PhiArray->clear();
791  }
792  }
793 }
794 
796 
798 {
799  if (fHitSet) {
800  fHitSet->Reset();
801  gEve->RemoveElement(fHitSet, fEventManager);
802  }
803 
804  if (fhitBoxSet) {
805  fhitBoxSet->Reset();
806  gEve->RemoveElement(fhitBoxSet, fEventManager);
807  }
808 
810 
811  if (fIsCircularHough) {
812  if (fHitSetMin) {
813  fHitSetMin->Reset();
814  gEve->RemoveElement(fHitSetMin, fEventManager);
815  }
816  }
817 
818  else if (fIsLinearHough || fRansacArray) {
819 
820  /*if(fLine){
821  fLine->Reset();
822  gEve -> RemoveElement(fLine,fEventManager);
823  }*/
824  // one vertex
825  /*if(fVertex)
826  {
827  //fVertex->Reset();
828  gEve -> RemoveElement(fVertex, fEventManager);
829  fVertex = nullptr;
830  }*/
831  // multiple vertex
832  if (fVVertex.size() > 0) {
833  // fVertex->Reset();
834  for (auto &w : fVVertex)
835  gEve->RemoveElement(w, fEventManager);
836  fVertex = nullptr;
837  fVVertex.clear();
838  }
839 
840  if (fLineNum > 0) {
841  for (Int_t i = 0; i < fLineNum; i++) {
842  if (fLineArray[i]) {
843  gEve->RemoveElement(fLineArray[i], fEventManager);
844  }
845  }
846  }
847  }
848 
849  if (fPatternEventArray) {
850 
851  if (fLineNum > 0) {
852  for (Int_t i = 0; i < fLineNum; i++) {
853  if (fHitSetMC[i]) {
854  gEve->RemoveElement(fHitSetTFHC[i], fEventManager);
855  }
856  }
857  }
858  }
859 
861 
862  for (Int_t i = 0; i < fTrackNum; i++) {
863  if (fHitSetMC[i]) {
864  fHitSetMC[i]->Reset();
865  gEve->RemoveElement(fHitSetMC[i], fEventManager);
866  }
867  }
868  }
869 
870  } // Draw Minimization
871 
872  /* TEveGeoShape* hitShape;
873  if(hitSphereArray.size()>0)
874  for(Int_t i=0;i<hitSphereArray.size();i++){
875  hitShape = hitSphereArray[i];
876  gEve->RemoveElement(hitShape,fEventManager);
877  }*/
878 
879  // hitSphereArray.clear();
880 
881  /*if(fHitClusterSet) {
882  fHitClusterSet->Reset();
883  gEve->RemoveElement(fHitClusterSet, fEventManager);
884  }*/
885 
886  /* Int_t nRiemannTracks = fRiemannSetArray.size();
887  TEvePointSet* pointSet;
888  if(nRiemannTracks!=0) {
889  for(Int_t i=0; i<nRiemannTracks; i++){
890  pointSet = fRiemannSetArray[i];
891  gEve->RemoveElement(pointSet, fEventManager);
892  }
893  fRiemannSetArray.clear();
894  }*/
895 
896  if (fPadPlane != nullptr)
897  fPadPlane->Reset(nullptr);
898 }
899 
900 /*void
901  AtEventDrawTaskS800::Set2DPlotRange(Int_t uaIdx)
902  {
903  if(uaIdx%100<0 || uaIdx%100>11 || uaIdx/100<0 || uaIdx/100>3)
904  {
905  fLogger->Error(MESSAGE_ORIGIN,
906  "2DPlotRange should be ABB ( A = [0, 3], BB = [00, 11] )!");
907  return;
908  }
909 
910  fMinZ = (uaIdx/100)*12*7*4;
911  fMaxZ = (uaIdx/100 + 1)*12*7*4;
912  fMinX = (uaIdx%100)*8*9 - 432;
913  fMaxX = (uaIdx%100 + 1)*8*9 - 432;
914 
915  fIs2DPlotRange = kTRUE;
916  }*/
917 
919 {
920  fAtMapPtr = new AtTpcMap();
921  if (fPadPlane) {
922  fPadPlane->Reset(nullptr);
923  return;
924  }
925 
926  dynamic_cast<AtTpcMap *>(fAtMapPtr)->GeneratePadPlane();
927  // fAtMapPtr->SetGUIMode();// This method does not need to be called since it generates the Canvas we do not want
929  fCvsPadPlane->cd();
930  // fPadPlane -> Draw("COLZ L0"); //0 == bin lines adre not drawn
931  fPadPlane->Draw("COL L0");
932  fPadPlane->SetMinimum(1.0);
933  gStyle->SetOptStat(0);
934  gStyle->SetPalette(103);
935  gPad->Update();
936 
937  /* fPadPlanePal
938  = (TPaletteAxis *) fPadPlane->GetListOfFunctions()->FindObject("palette");
939 
940 
941 
942 
943  if(fPadPlanePal){
944 
945  Int_t cHit = fPadPlanePal->GetValueColor(30.0);
946  TColor *hitBoxColor = gROOT->GetColor(cHit);
947  Float_t xrgb,yrgb,zrgb;
948  std::cout<<" xrgb : "<<xrgb<<std::endl;
949  hitBoxColor->GetRGB(xrgb,yrgb,zrgb);
950 
951 
952  }*/
953 }
954 
956 {
957 
958  /* if(fPadWave)
959  {
960  fPadWave->Reset(0);
961  return;
962  }
963  **/
964  fPadWave = new TH1I("fPadWave", "fPadWave", 512, 0, 511);
965  gROOT->GetListOfSpecials()->Add(fPadWave);
966  fCvsPadWave->cd();
967  fPadWave->Draw();
968 }
969 
971 {
972 
973  fCvsPadAll->cd();
974  TString option = fGeoOption;
975 
976  for (Int_t i = 0; i < 300; i++) {
977  // fPadAll[i]->Reset(0);
978  // fPadAll[i] = new TH1I("fPadAll","fPadAll",512,0,511);
979  fPadAll[i]->GetYaxis()->SetRangeUser(0, 2500);
980  // TODO: make it pad number independent / retrieve the quadrant info
981  if (option == "Prototype") {
982  if (i < 64)
983  fPadAll[i]->SetLineColor(kPink - 3); // Q1, pink
984  else if (i >= 64 && i < 127)
985  fPadAll[i]->SetLineColor(kGreen + 2); // Q2, green
986  else if (i >= 127 && i < 190)
987  fPadAll[i]->SetLineColor(kBlue + 1); // Q3, blue
988  else if (i >= 190 && i < 253)
989  fPadAll[i]->SetLineColor(kOrange - 3); // Q4, orange
990  else
991  fPadAll[i]->SetLineColor(0); // white for non physical pads
992  }
993  fPadAll[i]->Draw("SAME");
994  }
995 }
996 
998 {
999 
1000  fQEventHist = new TH1D("fQEventHist", "fQEventHist", 300, 0., 2000000.);
1001  fQEventHist_H = new TH1D("fQEventHist_H", "fQEventHist_H", 300, 0., 2000000.);
1002  fQEventHist_H->SetLineColor(kRed);
1003  fQEventHist_H->SetFillStyle(1);
1004  fCvsQEvent->cd();
1005  fQEventHist->Draw();
1006  fQEventHist_H->Draw("SAMES");
1007 }
1008 
1010 {
1011 
1012  fCvsRhoVariance->cd();
1013  fRhoVariance = new TH1D("fRhoVariance", "fRhoVariance", 4000, 0., 1000000.);
1014  fRhoVariance->Draw();
1015  fRhoVariance->SetLineColor(kRed);
1016 }
1017 
1019 {
1020  fCvsHoughSpace->cd();
1021  fHoughSpace = new TH2F("HistHoughXY", "HistHoughXY", 100, 0, 3.15, 500, -1000, 1000);
1022  fHoughSpace->Draw("colz");
1023 }
1024 
1026 {
1027  // if(fIsLinearHough){ //
1028  fCvsQuadrant1->cd();
1029  fQuadrant1 = new TH2F("fQuadrant1", "fQuadrant1", 100, 0, 3.15, 500, -1000, 1000);
1030  fQuadrant1->Draw("zcol");
1031  fCvsQuadrant2->cd();
1032  fQuadrant2 = new TH2F("fQuadrant2", "fQuadrant2", 100, 0, 3.15, 500, -1000, 1000);
1033  fQuadrant2->Draw("zcol");
1034  fCvsQuadrant3->cd();
1035  fQuadrant3 = new TH2F("fQuadrant3", "fQuadrant3", 100, 0, 3.15, 500, -1000, 1000);
1036  fQuadrant3->Draw("zcol");
1037  fCvsQuadrant4->cd();
1038  fQuadrant4 = new TH2F("fQuadrant4", "fQuadrant4", 100, 0, 3.15, 500, -1000, 1000);
1039  fQuadrant4->Draw("zcol");
1040  //}
1041 }
1042 
1044 {
1045  fCvsPhi->cd();
1046  // fPhiDistr = new TH1D("PhiDist","PhiDist",90.0,0.0,90.0);
1047  for (auto &i : fPhiDistr) {
1048  i->Draw("SAME");
1049  }
1050 }
1051 
1053 {
1054 
1055  fCvsMesh->cd();
1056  fMesh = new TH1F("Mesh", "Mesh", 512, 0, 511);
1057  fMesh->Draw();
1058 }
1059 
1061 {
1062 
1063  fCvs3DHist->cd();
1064  f3DHist = new TH3F("gl3DHist", "gl3DHist", 50, -25.0, 25.0, 50, -25.0, 25.0, 50, 0, 512);
1065  gStyle->SetPalette(55);
1066  // gStyle->SetCanvasPreferGL(kTRUE);
1067 
1068  f3DHist->SetFillColor(2);
1069  f3DHist->Draw("box");
1070  // f3DHist -> Draw("glbox3");
1071  // f3DHist -> Draw("glcol"); //TODO: Not working, strange behavior
1072 }
1073 
1075 {
1076 
1077  fCvsRad->cd();
1078  fRadVSTb = new TH2F("RadVSTb", "RadVSTb", 100, 0, 512, 100, 0, 250);
1079  fRadVSTb->SetMarkerStyle(22);
1080  fRadVSTb->SetMarkerColor(kRed);
1081  fRadVSTb->Draw();
1082 }
1083 
1085 {
1086 
1087  fCvsTheta->cd();
1088  // fTheta = new TH1F("Theta","Theta",512,0,511);
1089  fTheta = new TH2F("Theta", "Theta", 512, 0, 511, 500, 0, 2.0);
1090  fTheta->SetMarkerStyle(22);
1091  fTheta->SetMarkerColor(kRed);
1092  // gStyle->SetErrorX(0);
1093  fTheta->Draw("");
1094 }
1095 
1097 {
1098 
1099  fCvsLvsTheta->cd();
1100  fLvsTheta = new TH2F("LvsTheta", "LvsTheta", 180, 0, 180, 500, 0, 1030);
1101  // fLvsTheta->SetMarkerStyle(22);
1102  // fLvsTheta->SetMarkerColor(kRed);
1103  fLvsTheta->Draw("colz");
1104 }
1105 
1107 {
1108 
1109  fCvsPID->cd();
1110  // fPID = new TH2F("PID","PID",3000,-250,500,2000,0,500);
1111  fPID = new TH2F("PID", "PID", 500, -150, 50, 300, 230, 260);
1112  // fLvsTheta->SetMarkerStyle(22);
1113  // fLvsTheta->SetMarkerColor(kRed);
1114  fPID->Draw("colz");
1115 }
1116 
1118 {
1119 
1120  fCvsPID2->cd();
1121  // fPID2 = new TH2F("PID2","PID2",3000,-250,500,2000,0,500);
1122  fPID2 = new TH2F("PID2", "PID2", 500, -150, 50, 1000, 1400, 2200);
1123  // fLvsTheta->SetMarkerStyle(22);
1124  // fLvsTheta->SetMarkerColor(kRed);
1125  fPID2->Draw("colz");
1126 }
1127 
1129 {
1130 
1131  fCvsThetaxPhi->cd();
1132  fThetaxPhi = new TH2F("ThetaxPhi", "ThetaxPhi", 512, 0, 511, 100, -1000, 1000);
1133  fThetaxPhi->SetMarkerStyle(22);
1134  fThetaxPhi->SetMarkerColor(kRed);
1135 
1136  fThetaxPhi_Ini_RANSAC = new TH2F("ThetaxPhi_Ini_RANSAC", "ThetaxPhi_Ini_RANSAC", 512, 0, 511, 100, -1000, 1000);
1137  fThetaxPhi_Ini_RANSAC->SetMarkerStyle(20);
1138  fThetaxPhi_Ini_RANSAC->SetMarkerColor(kGreen);
1139 
1140  fThetaxPhi_Ini = new TH2F("ThetaxPhi_Ini", "ThetaxPhi_Ini", 512, 0, 511, 100, -1000, 1000);
1141  fThetaxPhi_Ini->SetMarkerStyle(23);
1142  fThetaxPhi_Ini->SetMarkerColor(kBlue);
1143  fThetaxPhi_Ini->SetMarkerSize(1.0);
1144 
1145  fThetaxPhi->Draw("");
1146  fThetaxPhi_Ini->Draw("SAMES");
1147  fThetaxPhi_Ini_RANSAC->Draw("SAMES");
1148 
1149  fHoughLinearFit->Draw("SAMES");
1150 }
1151 
1153 {
1154 
1155  fCvsMC_XY->cd();
1156 
1157  fMC_XY_exp = new TGraph();
1158  fMC_XY_exp->SetPoint(1, 0, 0);
1159  fMC_XY_exp->SetMarkerStyle(20);
1160  fMC_XY_exp->SetMarkerSize(1.0);
1161  fMC_XY_exp->SetMarkerColor(kBlack);
1162  fMC_XY_exp->Draw("AP");
1163 
1164  fMC_XY = new TGraph();
1165  fMC_XY->SetPoint(1, 0, 0);
1166  fMC_XY->SetMarkerStyle(20);
1167  fMC_XY->SetMarkerSize(1.0);
1168  fMC_XY->SetMarkerColor(kRed);
1169  fMC_XY->Draw("P");
1170 
1171  fMC_XY_back = new TGraph();
1172  fMC_XY_back->SetPoint(1, 0, 0);
1173  fMC_XY_back->SetMarkerStyle(22);
1174  fMC_XY_back->SetMarkerSize(1.0);
1175  fMC_XY_back->SetMarkerColor(6);
1176  fMC_XY_back->Draw("P");
1177 
1178  fMC_XY_int = new TGraph();
1179  fMC_XY_int->SetPoint(1, 0, 0);
1180  fMC_XY_int->SetMarkerStyle(22);
1181  fMC_XY_int->SetMarkerSize(1.0);
1182  fMC_XY_int->SetMarkerColor(8);
1183  fMC_XY_int->Draw("P");
1184 
1185  fCvsMC_Z->cd();
1186 
1187  fMC_ZX = new TGraph();
1188  fMC_ZX->SetPoint(1, 0, 0);
1189  fMC_ZX->SetMarkerStyle(20);
1190  fMC_ZX->SetMarkerSize(1.0);
1191  fMC_ZX->SetMarkerColor(kRed);
1192  fMC_ZX->Draw("AP");
1193 
1194  fMC_ZY = new TGraph();
1195  fMC_ZY->SetPoint(1, 0, 0);
1196  fMC_ZY->SetMarkerStyle(20);
1197  fMC_ZY->SetMarkerSize(1.0);
1198  fMC_ZY->SetMarkerColor(kBlack);
1199  fMC_ZY->Draw("P");
1200 
1201  fMC_ZX_back = new TGraph();
1202  fMC_ZX_back->SetPoint(1, 0, 0);
1203  fMC_ZX_back->SetMarkerStyle(22);
1204  fMC_ZX_back->SetMarkerSize(1.0);
1205  fMC_ZX_back->SetMarkerColor(6);
1206  fMC_ZX_back->Draw("P");
1207 
1208  fMC_ZY_back = new TGraph();
1209  fMC_ZY_back->SetPoint(1, 0, 0);
1210  fMC_ZY_back->SetMarkerStyle(22);
1211  fMC_ZY_back->SetMarkerSize(1.0);
1212  fMC_ZY_back->SetMarkerColor(6);
1213  fMC_ZY_back->Draw("P");
1214 
1215  fMC_ZX_int = new TGraph();
1216  fMC_ZX_int->SetPoint(1, 0, 0);
1217  fMC_ZX_int->SetMarkerStyle(22);
1218  fMC_ZX_int->SetMarkerSize(1.0);
1219  fMC_ZX_int->SetMarkerColor(kRed);
1220  fMC_ZX_int->Draw("P");
1221 
1222  fMC_ZY_int = new TGraph();
1223  fMC_ZY_int->SetPoint(1, 0, 0);
1224  fMC_ZY_int->SetMarkerStyle(22);
1225  fMC_ZY_int->SetMarkerSize(1.0);
1226  fMC_ZY_int->SetMarkerColor(kBlack);
1227  fMC_ZY_int->Draw("P");
1228 }
1229 
1231 {
1232  fHoughSpace->Draw("colz");
1233  fCvsPadPlane->Modified();
1234  fCvsPadPlane->Update();
1235 
1236  /*if (paxis) {
1237  if(fIs2DPlotRange) {
1238  paxis -> SetX1NDC(0.940);
1239  paxis -> SetX2NDC(0.955);
1240  paxis -> SetLabelSize(0.08);
1241  paxis -> GetAxis() -> SetTickSize(0.01);
1242  } else {
1243  paxis -> SetX1NDC(0.905);
1244  paxis -> SetX2NDC(0.94);
1245  }
1246 
1247  fCvsPadPlane -> Modified();
1248  fCvsPadPlane -> Update();
1249  }*/
1250 }
1251 
1253 {
1254  fCvsPadWave->Modified();
1255  fCvsPadWave->Update();
1256 
1257  // TPaletteAxis *paxis
1258  // = (TPaletteAxis *) fPadPlane->GetListOfFunctions()->FindObject("palette");
1259 }
1260 
1262 {
1263  fCvsPadAll->Modified();
1264  fCvsPadAll->Update();
1265 
1266  // TPaletteAxis *paxis
1267  // = (TPaletteAxis *) fPadPlane->GetListOfFunctions()->FindObject("palette");
1268 }
1269 
1271 {
1272  fCvsQEvent->Modified();
1273  fCvsQEvent->Update();
1274 }
1275 
1277 {
1278  fCvsRhoVariance->Modified();
1279  fCvsRhoVariance->Update();
1280 }
1281 
1283 {
1284  fCvsHoughSpace->Modified();
1285  fCvsHoughSpace->Update();
1286 }
1287 
1289 {
1290  // if(fPhiDistr!=NULL)fPhiDistr->Draw();
1291  fCvsPhi->Modified();
1292  fCvsPhi->Update();
1293 }
1294 
1296 {
1297 
1298  fCvsMesh->Modified();
1299  fCvsMesh->Update();
1300 }
1301 
1303 {
1304 
1305  fCvs3DHist->Modified();
1306  fCvs3DHist->Update();
1307 }
1308 
1310 {
1311 
1312  fCvsRad->Modified();
1313  fCvsRad->Update();
1314 }
1315 
1317 {
1318 
1319  fCvsTheta->Modified();
1320  fCvsTheta->Update();
1321 }
1322 
1324 {
1325 
1326  fCvsLvsTheta->Modified();
1327  fCvsLvsTheta->Update();
1328 }
1329 
1331 {
1332 
1333  fCvsPID->Modified();
1334  fCvsPID->Update();
1335 }
1336 
1338 {
1339 
1340  fCvsPID2->Modified();
1341  fCvsPID2->Update();
1342 }
1343 
1345 {
1346 
1347  fCvsThetaxPhi->Modified();
1348  fCvsThetaxPhi->Update();
1349 }
1350 
1352 {
1353  fCvsQuadrant1->Modified();
1354  fCvsQuadrant1->Update();
1355  fCvsQuadrant2->Modified();
1356  fCvsQuadrant2->Update();
1357  fCvsQuadrant3->Modified();
1358  fCvsQuadrant3->Update();
1359  fCvsQuadrant4->Modified();
1360  fCvsQuadrant4->Update();
1361 }
1362 
1364 {
1365  fMC_XY_exp->GetXaxis()->SetRangeUser(-300.0, 300);
1366  fMC_XY_exp->GetYaxis()->SetRangeUser(-300.0, 300);
1367  fMC_XY->GetXaxis()->SetRangeUser(-300.0, 300);
1368  fMC_XY->GetYaxis()->SetRangeUser(-300.0, 300);
1369  fMC_XY_int->GetXaxis()->SetRangeUser(-300.0, 300);
1370  fMC_XY_int->GetYaxis()->SetRangeUser(-300.0, 300);
1371  fMC_XY_back->GetXaxis()->SetRangeUser(-300.0, 300);
1372  fMC_XY_back->GetYaxis()->SetRangeUser(-300.0, 300);
1373  fCvsMC_XY->Modified();
1374  fCvsMC_XY->Update();
1375 
1376  fMC_ZX_int->GetXaxis()->SetRangeUser(0, 1000);
1377  fMC_ZX_int->GetYaxis()->SetRangeUser(-300.0, 300);
1378  fMC_ZY_int->GetXaxis()->SetRangeUser(0, 1000);
1379  fMC_ZY_int->GetYaxis()->SetRangeUser(-300.0, 300);
1380  fMC_ZX->GetXaxis()->SetRangeUser(0, 1000);
1381  fMC_ZX->GetYaxis()->SetRangeUser(-300.0, 300);
1382  fMC_ZY->GetXaxis()->SetRangeUser(0, 1000);
1383  fMC_ZY->GetYaxis()->SetRangeUser(-300.0, 300);
1384  fMC_ZX_back->GetXaxis()->SetRangeUser(0, 1000);
1385  fMC_ZX_back->GetYaxis()->SetRangeUser(-300.0, 300);
1386  fMC_ZY_back->GetXaxis()->SetRangeUser(0, 1000);
1387  fMC_ZY_back->GetYaxis()->SetRangeUser(-300.0, 300);
1388  fCvsMC_Z->Modified();
1389  fCvsMC_Z->Update();
1390 }
1391 
1392 void AtEventDrawTaskS800::SetHitAttributes(Color_t color, Size_t size, Style_t style)
1393 {
1394  fHitColor = color;
1395  fHitSize = size;
1396  fHitStyle = style;
1397 }
1398 
1399 /*void
1400  AtEventDrawTaskS800::SetHitClusterAttributes(Color_t color, Size_t size, Style_t style)
1401  {
1402  fHitClusterColor = color;
1403  fHitClusterSize = size;
1404  fHitClusterStyle = style;
1405  }*/
1406 
1407 /*void
1408  AtEventDrawTaskS800::SetRiemannAttributes(Color_t color, Size_t size, Style_t style)
1409  {
1410  fRiemannColor = color;
1411  fRiemannSize = size;
1412  fRiemannStyle = style;
1413  }*/
1414 
1415 void AtEventDrawTaskS800::SelectPad(const char *rawevt)
1416 {
1417  int event = gPad->GetEvent();
1418  if (event != 11)
1419  return; // may be comment this line
1420  TObject *select = gPad->GetSelected();
1421  if (!select)
1422  return;
1423  if (select->InheritsFrom(TH2Poly::Class())) {
1424  auto *h = dynamic_cast<TH2Poly *>(select);
1425  gPad->GetCanvas()->FeedbackMode(kTRUE);
1426  AtRawEvent *tRawEvent = nullptr;
1427  tRawEvent = dynamic_cast<AtRawEvent *>(gROOT->GetListOfSpecials()->FindObject(rawevt));
1428  if (tRawEvent == nullptr) {
1429  std::cout << " = AtEventDrawTaskS800::SelectPad NULL pointer for the AtRawEvent! Please select an event first "
1430  << std::endl;
1431  return;
1432  }
1433 
1434  int pyold = gPad->GetUniqueID();
1435  int px = gPad->GetEventX();
1436  int py = gPad->GetEventY();
1437  float uxmin = gPad->GetUxmin();
1438  float uxmax = gPad->GetUxmax();
1439  int pxmin = gPad->XtoAbsPixel(uxmin);
1440  int pxmax = gPad->XtoAbsPixel(uxmax);
1441  if (pyold)
1442  TVirtualX::Instance()->DrawLine(pxmin, pyold, pxmax, pyold);
1443  TVirtualX::Instance()->DrawLine(pxmin, py, pxmax, py);
1444  gPad->SetUniqueID(py);
1445  Float_t upx = gPad->AbsPixeltoX(px);
1446  Float_t upy = gPad->AbsPixeltoY(py);
1447  Double_t x = gPad->PadtoX(upx);
1448  Double_t y = gPad->PadtoY(upy);
1449  Int_t bin = h->FindBin(x, y);
1450  const char *bin_name = h->GetBinName(bin);
1451  // std::cout<<" X : "<<x<<" Y: "<<y<<std::endl;
1452  // std::cout<<bin_name<<std::endl;
1453  std::cout << " ==========================" << std::endl;
1454  std::cout << " Bin number selected : " << bin << " Bin name :" << bin_name << std::endl;
1455 
1456  AtMap *tmap = nullptr;
1457  tmap = dynamic_cast<AtMap *>(gROOT->GetListOfSpecials()->FindObject("fMap"));
1458  // new AtTpcProtoMap();
1459  // TString map = "/Users/yassidayyad/fair_install/AtTPCROOT_v2_06042015/scripts/proto.map";
1460  // tmap->SetProtoMap(map.Data());
1461  Int_t tPadNum = tmap->BinToPad(bin);
1462  std::cout << " Bin : " << bin << " to Pad : " << tPadNum << std::endl;
1463  AtPad *tPad = tRawEvent->GetPad(tPadNum);
1464  if (tPad == nullptr)
1465  return;
1466 
1467  std::cout << " Event ID (Select Pad) : " << tRawEvent->GetEventID() << std::endl;
1468  std::cout << " Raw Event Pad Num " << tPad->GetPadNum() << std::endl;
1469  std::cout << std::endl;
1470  // TH1D* tPadWaveSub = NULL;
1471  // tPadWaveSub = new TH1D("tPadWaveSub","tPadWaveSub",512.0,0.0,511.0);
1472  // tPadWaveSub->SetLineColor(kRed);
1473  TH1I *tPadWave = nullptr;
1474  tPadWave = dynamic_cast<TH1I *>(gROOT->GetListOfSpecials()->FindObject("fPadWave"));
1475  auto rawadc = tPad->GetRawADC();
1476  auto adc = tPad->GetADC();
1477  if (tPadWave == nullptr) {
1478  std::cout << " = AtEventDrawTaskS800::SelectPad NULL pointer for the TH1I! Please enable SetPersistance for "
1479  "Unpacking task or select an event first "
1480  << std::endl;
1481  return;
1482  }
1483  tPadWave->Reset();
1484  // tPadWaveSub->Reset();
1485  for (Int_t i = 0; i < 512; i++) {
1486 
1487  // tPadWave->SetBinContent(i,rawadc[i]);
1488  tPadWave->SetBinContent(i, adc[i]);
1489  // tPadWaveSub->SetBinContent(i,adc[i]);
1490  }
1491 
1492  TCanvas *tCvsPadWave = nullptr;
1493  tCvsPadWave = dynamic_cast<TCanvas *>(gROOT->GetListOfSpecials()->FindObject("fCvsPadWave"));
1494  if (tCvsPadWave == nullptr) {
1495  std::cout << " = AtEventDrawTaskS800::SelectPad NULL pointer for the TCanvas! Please select an event first "
1496  << std::endl;
1497  return;
1498  }
1499  tCvsPadWave->cd();
1500  tPadWave->Draw();
1501  // tPadWaveSub->Draw("SAME");
1502  tCvsPadWave->Update();
1503  }
1504 }
1505 
1507 {
1508 
1509  // Bool_t IsValid=kFALSE;
1510  // AtPad *pad = fRawevent->GetPad(0);
1511  // AtPad *pad= fRawevent->GetPad(PadNum,IsValid);
1512  // std::cout<<" Raw Event Pad Num "<<pad->GetPadNum()<<" Is Valid? : "<<IsValidPad<<std::endl;
1513 }
1514 
1516 {
1517 
1518  for (auto &i : fPadAll) {
1519  i->Reset(nullptr);
1520  }
1521 }
1522 
1524 {
1525 
1526  for (auto &i : fPhiDistr) {
1527  i->Reset(nullptr);
1528  }
1529 }
1530 
1532 {
1533  f3DHitStyle = 0;
1534 }
1535 
1537 {
1538  f3DHitStyle = 1;
1539 }
1540 
1542 {
1543  fMultiHit = hitMax;
1544 }
1545 
1547 {
1548  fSaveTextData = kTRUE;
1549 }
1550 
1551 void AtEventDrawTaskS800::SetLine(double t, std::vector<Double_t> p, double &x, double &y, double &z)
1552 {
1553  // a parameteric line is define from 6 parameters but 4 are independent
1554  // x0,y0,z0,z1,y1,z1 which are the coordinates of two points on the line
1555  // can choose z0 = 0 if line not parallel to x-y plane and z1 = 1;
1556  x = (p[0] + p[1] * t) / 10.0;
1557  y = (p[2] + p[3] * t) / 10.0;
1558  z = t / 10.0;
1559 }
1560 
1561 void AtEventDrawTaskS800::SetLine6(double t, std::vector<Double_t> p, double &x, double &y, double &z)
1562 {
1563  // a parameteric line is define from 6 parameters but 4 are independent
1564  // x0,y0,z0,z1,y1,z1 which are the coordinates of two points on the line
1565  // can choose z0 = 0 if line not parallel to x-y plane and z1 = 1;
1566  x = (p[0] + p[1] * t) / 10.0;
1567  y = (p[2] + p[3] * t) / 10.0;
1568  z = (p[4] + p[5] * t) / 10.0;
1569 }
1570 
1572 {
1573  std::vector<EColor> colors = {kAzure, kOrange, kViolet, kTeal, kMagenta, kBlue, kViolet, kYellow, kCyan, kAzure};
1574  if (i < 10) {
1575  return colors.at(i);
1576  } else
1577  return kAzure;
1578 }
AtMap
Definition: AtMap.h:33
AtEventDrawTaskS800::UpdateCvsPadAll
void UpdateCvsPadAll()
Definition: AtEventDrawTaskS800.cxx:1261
AtEventManagerS800::GetCvsLvsTheta
TCanvas * GetCvsLvsTheta()
Definition: AtEventManagerS800.h:67
AtEventDrawTaskS800::fIsCircularHough
Bool_t fIsCircularHough
Definition: AtEventDrawTaskS800.h:135
AtEventDrawTaskS800::DrawPID
virtual void DrawPID()
Definition: AtEventDrawTaskS800.cxx:1106
AtPad.h
AtEventDrawTaskS800::UpdateCvsMC
void UpdateCvsMC()
Definition: AtEventDrawTaskS800.cxx:1363
AtEventDrawTaskS800::Init
virtual InitStatus Init()
Definition: AtEventDrawTaskS800.cxx:161
AtEventDrawTaskS800::fRadVSTb
TH2F * fRadVSTb
Definition: AtEventDrawTaskS800.h:213
AtRawEvent.h
AtEventDrawTaskS800::fIniHitRansac
AtHit const * fIniHitRansac
Definition: AtEventDrawTaskS800.h:267
AtEventDrawTaskS800::fCvsPhi
TCanvas * fCvsPhi
Definition: AtEventDrawTaskS800.h:206
CRDC::GetX
Float_t GetX()
Definition: S800Calc.h:105
AtEventDrawTaskS800::UpdateCvsThetaxPhi
void UpdateCvsThetaxPhi()
Definition: AtEventDrawTaskS800.cxx:1344
S800Calc::GetIC
IC * GetIC()
Definition: S800Calc.h:493
AtEventDrawTaskS800::fCvsQuadrant4
TCanvas * fCvsQuadrant4
Definition: AtEventDrawTaskS800.h:224
AtEventDrawTaskS800::fIniHit
AtHit const * fIniHit
Definition: AtEventDrawTaskS800.h:266
AtPatternEvent
Definition: AtPatternEvent.h:19
AtEventDrawTaskS800::fHitArray
TClonesArray * fHitArray
Definition: AtEventDrawTaskS800.h:138
AtEventDrawTaskS800::UpdateCvsPhi
void UpdateCvsPhi()
Definition: AtEventDrawTaskS800.cxx:1288
AtMap::GetPadPlane
TH2Poly * GetPadPlane()
Definition: AtMap.cxx:70
AtEvent.h
AtEventDrawTaskS800::fThetaxPhi_Ini_RANSAC
TH2F * fThetaxPhi_Ini_RANSAC
Definition: AtEventDrawTaskS800.h:235
AtEventManagerS800::Instance
static AtEventManagerS800 * Instance()
Definition: AtEventManagerS800.cxx:59
AtRawEvent::GetPad
AtPad * GetPad(Int_t padNum)
Definition: AtRawEvent.h:124
AtEventDrawTaskS800::SetHitAttributes
void SetHitAttributes(Color_t, Size_t, Style_t)
Definition: AtEventDrawTaskS800.cxx:1392
AtEventDrawTaskS800::ResetPhiDistr
void ResetPhiDistr()
Definition: AtEventDrawTaskS800.cxx:1523
ClassImp
ClassImp(AtEventDrawTaskS800)
AtEventDrawTaskS800::fQuadrant1
TH2F * fQuadrant1
Definition: AtEventDrawTaskS800.h:219
AtEventDrawTaskS800::SetLine
void SetLine(double t, std::vector< Double_t > p, double &x, double &y, double &z)
Definition: AtEventDrawTaskS800.cxx:1551
AtEventDrawTaskS800::DrawRhoVariance
virtual void DrawRhoVariance()
Definition: AtEventDrawTaskS800.cxx:1009
AtEventDrawTaskS800::fRawEventArray
TClonesArray * fRawEventArray
Definition: AtEventDrawTaskS800.h:139
AtEventManagerS800::GetToggleCorrData
Bool_t GetToggleCorrData()
Definition: AtEventManagerS800.h:80
AtEventManagerS800::GetCvsPID
TCanvas * GetCvsPID()
Definition: AtEventManagerS800.h:68
AtEventDrawTaskS800::UpdateCvs3DHist
void UpdateCvs3DHist()
Definition: AtEventDrawTaskS800.cxx:1302
AtEventDrawTaskS800::fPadWave
TH1I * fPadWave
Definition: AtEventDrawTaskS800.h:196
AtEventDrawTaskS800::UpdateCvsTheta
void UpdateCvsTheta()
Definition: AtEventDrawTaskS800.cxx:1316
AtEventDrawTaskS800::fRhoVariance
TH1D * fRhoVariance
Definition: AtEventDrawTaskS800.h:205
AtEventDrawTaskS800::fHitSize
Size_t fHitSize
Definition: AtEventDrawTaskS800.h:180
AtPad::GetValidPad
Bool_t GetValidPad() const
Definition: AtPad.h:97
AtEventDrawTaskS800::fHitSetTFHC
TEvePointSet * fHitSetTFHC[10]
Definition: AtEventDrawTaskS800.h:170
AtEventDrawTaskS800::UpdateCvsRhoVariance
void UpdateCvsRhoVariance()
Definition: AtEventDrawTaskS800.cxx:1276
AtEventDrawTaskS800::fHitColor
Color_t fHitColor
Definition: AtEventDrawTaskS800.h:179
S800Calc
Definition: S800Calc.h:455
AtEventDrawTaskS800::fHitStyle
Style_t fHitStyle
Definition: AtEventDrawTaskS800.h:181
AtEventDrawTaskS800::UpdateCvsRad
void UpdateCvsRad()
Definition: AtEventDrawTaskS800.cxx:1309
AtEventDrawTaskS800::DrawPadWave
virtual void DrawPadWave()
Definition: AtEventDrawTaskS800.cxx:955
AtEventDrawTaskS800::fCvsQuadrant1
TCanvas * fCvsQuadrant1
Definition: AtEventDrawTaskS800.h:218
S800Calc::GetIsInCut
Bool_t GetIsInCut()
Definition: S800Calc.h:487
AtEventDrawTaskS800.h
AtEventDrawTaskS800::Reset
void Reset()
Definition: AtEventDrawTaskS800.cxx:797
AtEventDrawTaskS800::fCvsLvsTheta
TCanvas * fCvsLvsTheta
Definition: AtEventDrawTaskS800.h:226
AtEventDrawTaskS800::fMC_ZX_back
TGraph * fMC_ZX_back
Definition: AtEventDrawTaskS800.h:245
AtEventDrawTaskS800::UpdateCvsPadWave
void UpdateCvsPadWave()
Definition: AtEventDrawTaskS800.cxx:1252
AtEventDrawTaskS800::fLineArray
TEveLine * fLineArray[5]
Definition: AtEventDrawTaskS800.h:270
MultiHitTOF::GetMTDCXf
vector< Float_t > GetMTDCXf()
Definition: S800Calc.h:266
AtEventDrawTaskS800::DrawLvsTheta
virtual void DrawLvsTheta()
Definition: AtEventDrawTaskS800.cxx:1096
AtEventDrawTaskS800::fLineNum
Int_t fLineNum
Definition: AtEventDrawTaskS800.h:273
AtTpcProtoMap
Definition: AtTpcProtoMap.h:26
AtTrack::GetHitArrayObject
std::vector< AtHit > GetHitArrayObject()
Definition: AtTrack.h:82
S800Calc::GetMultiHitTOF
MultiHitTOF * GetMultiHitTOF()
Definition: S800Calc.h:495
AtEventDrawTaskS800::DrawHitPoints
void DrawHitPoints()
Definition: AtEventDrawTaskS800.cxx:398
AtEventDrawTaskS800::fMultiHit
Int_t fMultiHit
Definition: AtEventDrawTaskS800.h:258
AtEventDrawTaskS800::UpdateCvsPID
void UpdateCvsPID()
Definition: AtEventDrawTaskS800.cxx:1330
AtEvent
Definition: AtEvent.h:22
AtEventDrawTaskS800::fAtMapPtr
AtMap * fAtMapPtr
Definition: AtEventDrawTaskS800.h:101
AtEventDrawTaskS800::fPadPlanePal
TPaletteAxis * fPadPlanePal
Definition: AtEventDrawTaskS800.h:177
AtEventDrawTaskS800::fMesh
TH1F * fMesh
Definition: AtEventDrawTaskS800.h:209
AtEventDrawTaskS800::UpdateCvsPadPlane
void UpdateCvsPadPlane()
Definition: AtEventDrawTaskS800.cxx:1230
AtEventDrawTaskS800::fCvsQuadrant3
TCanvas * fCvsQuadrant3
Definition: AtEventDrawTaskS800.h:222
AtEventDrawTaskS800::DrawS800
void DrawS800()
Definition: AtEventDrawTaskS800.cxx:320
AtRawEvent
Definition: AtRawEvent.h:34
AtEventDrawTaskS800::SetSaveTextData
void SetSaveTextData()
Definition: AtEventDrawTaskS800.cxx:1546
AtEventDrawTaskS800::fTheta
TH2F * fTheta
Definition: AtEventDrawTaskS800.h:215
AtProtoEvent.h
AtEventDrawTaskS800::DrawPadAll
virtual void DrawPadAll()
Definition: AtEventDrawTaskS800.cxx:970
AtEventDrawTaskS800::fIsLinearHough
Bool_t fIsLinearHough
Definition: AtEventDrawTaskS800.h:136
AtEventDrawTaskS800::fMC_XY
TGraph * fMC_XY
Definition: AtEventDrawTaskS800.h:238
AtEventDrawTaskS800::fCvsHoughSpace
TCanvas * fCvsHoughSpace
Definition: AtEventDrawTaskS800.h:202
AtEventDrawTaskS800::fPID
TH2F * fPID
Definition: AtEventDrawTaskS800.h:229
AtEventDrawTaskS800::fHitSetMin
TEvePointSet * fHitSetMin
Definition: AtEventDrawTaskS800.h:167
AtEventDrawTaskS800::fThetaxPhi_Ini
TH2F * fThetaxPhi_Ini
Definition: AtEventDrawTaskS800.h:234
AtEventDrawTaskS800::DrawHoughSpaceProto
virtual void DrawHoughSpaceProto()
Definition: AtEventDrawTaskS800.cxx:1025
AtEventDrawTaskS800::fPadPlane
TH2Poly * fPadPlane
Definition: AtEventDrawTaskS800.h:194
AtEventDrawTaskS800::fTrackingEventAna
AtTrackingEventAna * fTrackingEventAna
Definition: AtEventDrawTaskS800.h:152
AtEventDrawTaskS800::UpdateCvsMesh
void UpdateCvsMesh()
Definition: AtEventDrawTaskS800.cxx:1295
AtEventDrawTaskS800::fS800Calc
S800Calc * fS800Calc
Definition: AtEventDrawTaskS800.h:155
AtEventDrawTaskS800::fMC_ZY_int
TGraph * fMC_ZY_int
Definition: AtEventDrawTaskS800.h:247
cNORMAL
constexpr auto cNORMAL
Definition: AtEventDrawTaskS800.cxx:68
AtEventDrawTaskS800::fCvsMC_XY
TCanvas * fCvsMC_XY
Definition: AtEventDrawTaskS800.h:237
AtEventDrawTaskS800::ResetPadAll
void ResetPadAll()
Definition: AtEventDrawTaskS800.cxx:1515
AtEventDrawTaskS800::SetProtoMap
void SetProtoMap(TString map)
Definition: AtEventDrawTaskS800.h:76
AtEventDrawTaskS800::fPhiDistr
TH1D * fPhiDistr[5]
Definition: AtEventDrawTaskS800.h:207
AtEventDrawTaskS800::fSaveTextData
Bool_t fSaveTextData
Definition: AtEventDrawTaskS800.h:259
AtTpcMap
Definition: AtTpcMap.h:19
AtEventDrawTaskS800::fCvsPadWave
TCanvas * fCvsPadWave
Definition: AtEventDrawTaskS800.h:195
AtEventDrawTaskS800::fPID2
TH2F * fPID2
Definition: AtEventDrawTaskS800.h:232
AtEventDrawTaskS800::fCvsPadPlane
TCanvas * fCvsPadPlane
Definition: AtEventDrawTaskS800.h:193
AtEventDrawTaskS800::fMC_XY_back
TGraph * fMC_XY_back
Definition: AtEventDrawTaskS800.h:241
AtEventDrawTaskS800::fCvsMC_Z
TCanvas * fCvsMC_Z
Definition: AtEventDrawTaskS800.h:242
AtEventDrawTaskS800::fMC_ZX
TGraph * fMC_ZX
Definition: AtEventDrawTaskS800.h:243
AtEventDrawTaskS800::fUnpackHough
Bool_t fUnpackHough
Definition: AtEventDrawTaskS800.h:134
AtHit::GetTimeStamp
Int_t GetTimeStamp() const
Definition: AtHit.h:86
AtEventDrawTaskS800::fHitSet
TEvePointSet * fHitSet
Definition: AtEventDrawTaskS800.h:166
AtEventDrawTaskS800::fVertex
TEvePointSet * fVertex
Definition: AtEventDrawTaskS800.h:271
AtEventDrawTaskS800::Set3DHitStyleBox
void Set3DHitStyleBox()
Definition: AtEventDrawTaskS800.cxx:1536
AtEventDrawTaskS800::f3DHist
TH3F * f3DHist
Definition: AtEventDrawTaskS800.h:211
AtHit::GetPosition
const XYZPoint & GetPosition() const
Definition: AtHit.h:79
AtHit.h
AtEventDrawTaskS800::DrawTheta
virtual void DrawTheta()
Definition: AtEventDrawTaskS800.cxx:1084
AtEventDrawTaskS800::fQuadrant4
TH2F * fQuadrant4
Definition: AtEventDrawTaskS800.h:225
AtEventDrawTaskS800::fhitBoxSet
TEveBoxSet * fhitBoxSet
Definition: AtEventDrawTaskS800.h:175
AtEventDrawTaskS800::DrawProtoSpace
void DrawProtoSpace()
Definition: AtEventDrawTaskS800.cxx:775
cYELLOW
constexpr auto cYELLOW
Definition: AtEventDrawTaskS800.cxx:67
AtEventDrawTaskS800::fHoughSpaceArray
TClonesArray * fHoughSpaceArray
Definition: AtEventDrawTaskS800.h:140
y
const double * y
Definition: lmcurve.cxx:20
AtTrack
Definition: AtTrack.h:25
MultiHitTOF::GetMTDCObj
vector< Float_t > GetMTDCObj()
Definition: S800Calc.h:268
AtEventDrawTaskS800::SelectPad
static void SelectPad(const char *rawevt)
Definition: AtEventDrawTaskS800.cxx:1415
AtEventManagerS800::GetCvsPID2
TCanvas * GetCvsPID2()
Definition: AtEventManagerS800.h:69
S800Calc.h
AtEventDrawTaskS800::fDetmap
AtMap * fDetmap
Definition: AtEventDrawTaskS800.h:160
AtEventDrawTaskS800::fLvsTheta
TH2F * fLvsTheta
Definition: AtEventDrawTaskS800.h:227
AtEventDrawTaskS800::fQEventHist_H
TH1D * fQEventHist_H
Definition: AtEventDrawTaskS800.h:201
AtTrack.h
AtEventManagerS800::GetDrawHoughSpace
Bool_t GetDrawHoughSpace()
Definition: AtEventManagerS800.h:72
AtEventDrawTaskS800::SetLine6
void SetLine6(double t, std::vector< Double_t > p, double &x, double &y, double &z)
Definition: AtEventDrawTaskS800.cxx:1561
AtEventManagerS800::GetCvsPadPlane
TCanvas * GetCvsPadPlane()
Definition: AtEventManagerS800.h:50
AtEventDrawTaskS800::fMC_ZY_back
TGraph * fMC_ZY_back
Definition: AtEventDrawTaskS800.h:248
AtPatternEvent.h
AtEventDrawTaskS800::DrawMeshSpace
void DrawMeshSpace()
Definition: AtEventDrawTaskS800.cxx:795
AtEventDrawTaskS800::fThreshold
Int_t fThreshold
Definition: AtEventDrawTaskS800.h:162
AtEventDrawTaskS800::UpdateCvsQEvent
void UpdateCvsQEvent()
Definition: AtEventDrawTaskS800.cxx:1270
AtEventDrawTaskS800::DrawHSpace
void DrawHSpace()
Definition: AtEventDrawTaskS800.cxx:773
AtEventDrawTaskS800::fPadAll
TH1I * fPadAll[300]
Definition: AtEventDrawTaskS800.h:198
AtEventDrawTaskS800::DrawQEvent
virtual void DrawQEvent()
Definition: AtEventDrawTaskS800.cxx:997
AtEventDrawTaskS800::fVVertex
std::vector< TEvePointSet * > fVVertex
Definition: AtEventDrawTaskS800.h:272
AtEventDrawTaskS800::fMap
TString fMap
Definition: AtEventDrawTaskS800.h:164
AtEventDrawTaskS800::DrawThetaxPhi
virtual void DrawThetaxPhi()
Definition: AtEventDrawTaskS800.cxx:1128
AtEventDrawTaskS800::DrawWave
void DrawWave(Int_t PadNum)
Definition: AtEventDrawTaskS800.cxx:1506
AtEventDrawTaskS800::SetMultiHit
void SetMultiHit(Int_t hitMax)
Definition: AtEventDrawTaskS800.cxx:1541
AtEventDrawTaskS800::fHoughLinearFit
TF1 * fHoughLinearFit
Definition: AtEventDrawTaskS800.h:264
AtEventDrawTaskS800::fCvs3DHist
TCanvas * fCvs3DHist
Definition: AtEventDrawTaskS800.h:210
AtEventDrawTaskS800::UpdateCvsQuadrants
void UpdateCvsQuadrants()
Definition: AtEventDrawTaskS800.cxx:1351
AtEvent::GetMesh
const TraceArray & GetMesh() const
Definition: AtEvent.h:111
cGREEN
constexpr auto cGREEN
Definition: AtEventDrawTaskS800.cxx:69
AtEventDrawTaskS800::fRawevent
AtRawEvent * fRawevent
Definition: AtEventDrawTaskS800.h:158
AtEventDrawTaskS800
Definition: AtEventDrawTaskS800.h:48
AtEventDrawTaskS800::fHoughSpace
TH2F * fHoughSpace
Definition: AtEventDrawTaskS800.h:203
AtEventDrawTaskS800::fMC_ZX_int
TGraph * fMC_ZX_int
Definition: AtEventDrawTaskS800.h:244
S800Calc::GetCRDC
CRDC * GetCRDC(int id)
Definition: S800Calc.h:489
AtEventDrawTaskS800::AtEventDrawTaskS800
AtEventDrawTaskS800()
Definition: AtEventDrawTaskS800.cxx:76
AtPad::GetPadNum
Int_t GetPadNum() const
Definition: AtPad.h:96
AtEventDrawTaskS800::fGeoOption
Option_t * fGeoOption
Definition: AtEventDrawTaskS800.h:163
AtEventDrawTaskS800::DrawPhiReco
virtual void DrawPhiReco()
Definition: AtEventDrawTaskS800.cxx:1043
AtPad::GetADC
const trace & GetADC() const
Definition: AtPad.cxx:97
AtEventDrawTaskS800::fMC_ZY
TGraph * fMC_ZY
Definition: AtEventDrawTaskS800.h:246
AtProtoEvent
Definition: AtProtoEvent.h:16
AtProtoQuadrant.h
AtBaseEvent::GetEventID
ULong_t GetEventID() const
Definition: AtBaseEvent.h:67
AtEventDrawTaskS800::fQuadrant3
TH2F * fQuadrant3
Definition: AtEventDrawTaskS800.h:223
AtEventDrawTaskS800::fThetaxPhi
TH2F * fThetaxPhi
Definition: AtEventDrawTaskS800.h:217
AtEventDrawTaskS800::DrawPID2
virtual void DrawPID2()
Definition: AtEventDrawTaskS800.cxx:1117
cBLUE
constexpr auto cBLUE
Definition: AtEventDrawTaskS800.cxx:70
AtTrackingEventAna.h
AtEventDrawTaskS800::fCvsMesh
TCanvas * fCvsMesh
Definition: AtEventDrawTaskS800.h:208
AtEventDrawTaskS800::DrawRad
virtual void DrawRad()
Definition: AtEventDrawTaskS800.cxx:1074
AtEventDrawTaskS800::DrawMesh
virtual void DrawMesh()
Definition: AtEventDrawTaskS800.cxx:1052
AtProtoEvent::GetNumQuadrants
std::size_t GetNumQuadrants()
Definition: AtProtoEvent.cxx:27
AtEventDrawTaskS800::UpdateCvsPID2
void UpdateCvsPID2()
Definition: AtEventDrawTaskS800.cxx:1337
AtMap.h
AtRawEvent::GetNumPads
Int_t GetNumPads() const
Definition: AtRawEvent.h:122
AtEventDrawTaskS800::f3DHitStyle
Int_t f3DHitStyle
Definition: AtEventDrawTaskS800.h:257
AtEventDrawTaskS800::Draw3DHist
virtual void Draw3DHist()
Definition: AtEventDrawTaskS800.cxx:1060
AtEventDrawTaskS800::fTrackingEventAnaArray
TClonesArray * fTrackingEventAnaArray
Definition: AtEventDrawTaskS800.h:144
AtEventDrawTaskS800::fIsRawData
Bool_t fIsRawData
Definition: AtEventDrawTaskS800.h:261
AtEventDrawTaskS800::DrawMC
virtual void DrawMC()
Definition: AtEventDrawTaskS800.cxx:1152
AtTrackingEventAna::GetTrackArray
std::vector< AtTrack > GetTrackArray()
Definition: AtTrackingEventAna.cxx:35
AtMap::BinToPad
virtual Int_t BinToPad(Int_t binval)=0
cRED
constexpr auto cRED
Event display task.
Definition: AtEventDrawTaskS800.cxx:66
AtPad
Container class for AtPadBase objects.
Definition: AtPad.h:38
AtTrackingEventAna
Definition: AtTrackingEventAna.h:16
AtEventDrawTaskS800::fHitSetMC
TEvePointSet * fHitSetMC[5]
Definition: AtEventDrawTaskS800.h:169
AtEventDrawTaskS800::fCvsQEvent
TCanvas * fCvsQEvent
Definition: AtEventDrawTaskS800.h:199
AtEventDrawTaskS800::fCvsQuadrant2
TCanvas * fCvsQuadrant2
Definition: AtEventDrawTaskS800.h:220
AtEventManagerS800::GetCvsHoughSpace
TCanvas * GetCvsHoughSpace()
Definition: AtEventManagerS800.h:54
AtEventManagerS800.h
IC::GetSum
Float_t GetSum()
Definition: S800Calc.h:380
AtEventDrawTaskS800::fQuadrant2
TH2F * fQuadrant2
Definition: AtEventDrawTaskS800.h:221
AtEventDrawTaskS800::fMC_XY_exp
TGraph * fMC_XY_exp
Definition: AtEventDrawTaskS800.h:239
AtEventDrawTaskS800::UpdateCvsLvsTheta
void UpdateCvsLvsTheta()
Definition: AtEventDrawTaskS800.cxx:1323
AtHit::GetPadNum
Int_t GetPadNum() const
Definition: AtHit.h:83
AtEventDrawTaskS800::Exec
virtual void Exec(Option_t *option)
Definition: AtEventDrawTaskS800.cxx:282
AtTpcProtoMap.h
AtEventDrawTaskS800::fPatternEventArray
TClonesArray * fPatternEventArray
Definition: AtEventDrawTaskS800.h:145
AtPad::GetRawADC
const rawTrace & GetRawADC() const
Definition: AtPad.h:104
AtEventDrawTaskS800::fTrackNum
Int_t fTrackNum
Definition: AtEventDrawTaskS800.h:274
AtEventDrawTaskS800::fCvsRad
TCanvas * fCvsRad
Definition: AtEventDrawTaskS800.h:212
AtEventDrawTaskS800::UpdateCvsHoughSpace
void UpdateCvsHoughSpace()
Definition: AtEventDrawTaskS800.cxx:1282
AtEventDrawTaskS800::~AtEventDrawTaskS800
virtual ~AtEventDrawTaskS800()
Definition: AtEventDrawTaskS800.cxx:150
AtEventDrawTaskS800::fQEventHist
TH1D * fQEventHist
Definition: AtEventDrawTaskS800.h:200
AtEventDrawTaskS800::fRansacArray
TClonesArray * fRansacArray
Definition: AtEventDrawTaskS800.h:142
AtEventDrawTaskS800::fCvsPID2
TCanvas * fCvsPID2
Definition: AtEventDrawTaskS800.h:231
AtEventManagerS800::GetDrawAllPad
Bool_t GetDrawAllPad()
Definition: AtEventManagerS800.h:71
AtEventDrawTaskS800::fCvsPadAll
TCanvas * fCvsPadAll
Definition: AtEventDrawTaskS800.h:197
AtEventDrawTaskS800::fCvsPID
TCanvas * fCvsPID
Definition: AtEventDrawTaskS800.h:228
AtEventManagerS800::GetCvsMesh
TCanvas * GetCvsMesh()
Definition: AtEventManagerS800.h:56
AtTrackingEventAna::GetVertex
Double_t GetVertex()
Definition: AtTrackingEventAna.cxx:39
AtEventDrawTaskS800::fCvsThetaxPhi
TCanvas * fCvsThetaxPhi
Definition: AtEventDrawTaskS800.h:216
AtEventDrawTaskS800::fRansacLinearFit
TF1 * fRansacLinearFit
Definition: AtEventDrawTaskS800.h:265
AtEventDrawTaskS800::DrawPadPlane
virtual void DrawPadPlane()
Definition: AtEventDrawTaskS800.cxx:918
AtEventDrawTaskS800::fMC_XY_int
TGraph * fMC_XY_int
Definition: AtEventDrawTaskS800.h:240
AtTpcMap.h
AtEventDrawTaskS800::Set3DHitStyleBar
void Set3DHitStyleBar()
Definition: AtEventDrawTaskS800.cxx:1531
AtEventDrawTaskS800::GetTrackColor
EColor GetTrackColor(int i)
Definition: AtEventDrawTaskS800.cxx:1571
AtEventManagerS800::GetEraseQEvent
Bool_t GetEraseQEvent()
Definition: AtEventManagerS800.h:73
AtHit::GetCharge
Double_t GetCharge() const
Definition: AtHit.h:82
AtEventDrawTaskS800::fCvsRhoVariance
TCanvas * fCvsRhoVariance
Definition: AtEventDrawTaskS800.h:204
AtEventDrawTaskS800::fEventManager
AtEventManagerS800 * fEventManager
Definition: AtEventDrawTaskS800.h:157
AtHit
Point in space with charge.
Definition: AtHit.h:27
AtEventDrawTaskS800::fCvsTheta
TCanvas * fCvsTheta
Definition: AtEventDrawTaskS800.h:214
AtEventDrawTaskS800::DrawHoughSpace
virtual void DrawHoughSpace()
Definition: AtEventDrawTaskS800.cxx:1018
AtEventDrawTaskS800::fProtoEventArray
TClonesArray * fProtoEventArray
Definition: AtEventDrawTaskS800.h:141