FairRoot/PandaRoot
Functions
anaclust.C File Reference
#include <map>
#include <vector>

Go to the source code of this file.

Functions

int anaclust ()
 

Function Documentation

int anaclust ( )

Definition at line 4 of file anaclust.C.

References a, all, b, BetterStatBox(), can1, detname, digiFile, digiPixel_array, digiStrip_array, Double_t, DrawNice2DHisto(), f, fGeoH, geoMan, PndSdsHit::GetBotIndex(), PndSdsCluster::GetClusterSize(), PndFileNameCreator::GetDigiFileName(), PndSdsCluster::GetDigiIndex(), PndSdsHit::GetEloss(), PndSdsDigi::GetIndex(), PndSdsHit::GetNDigiHits(), PndGeoHandling::GetPath(), PndSdsMCPoint::GetPosition(), PndSdsMCPoint::GetPositionOut(), PndFileNameCreator::GetRecoFileName(), PndFileNameCreator::GetSimFileName(), hisde, hisDiffRZ, hisDiffX, hisDiffXY, hisDiffY, hisDiffZ, hisLocalXY, hisrz, hisxy, hit, i, inFile, LoadPandaStyle(), mc_array, mommc, mypad, name, namecreator, nbins, nEvents, Pi, picture, pixelClust_array, pixelHit_array, point, range, recoFile, stripClust_array, stripHit_array, t, TString, vecdiff, vecmc, vecs, and verbose.

5 {
6  int nEvents = 100;
7  bool verbose = false;
8 
9  // ----- Load libraries ------------------------------------------------
10  gSystem->Load("../Helper_C.so");
11  gROOT->Macro("$VMCWORKDIR/gconfig/rootlogon.C");
12  gROOT->LoadMacro("../Tools.C");
13  TString detFilter = "";// "","Trap","Rect"
15 
16  // ----- Timer --------------------------------------------------------
17 // TStopwatch timer;
18 // timer.Start();
19  // ------------------------------------------------------------------------
20 
21 
22  TString name = "../data/mvddpm6GeV.root";
23 // TString name = "../data/mvdStrip.root";
24  PndFileNameCreator namecreator(name.Data());
25  std::string inFile = namecreator.GetSimFileName(false);
26  std::string digiFile = namecreator.GetDigiFileName(false);
27  std::string recoFile = namecreator.GetRecoFileName(false);
29  picture.ReplaceAll(".root",".ps");
30 
31  TFile* f = new TFile(inFile.c_str()); // the sim file you want to analyse
32  TTree* t=(TTree*)f->Get("pndsim");
33  t->AddFriend("pndsim",digiFile.c_str()); // the digi file
34  t->AddFriend("pndsim",recoFile.c_str()); // the reco file you want to analyse
35 
36  TClonesArray* mc_array=new TClonesArray("PndSdsMCPoint");
37  t->SetBranchAddress("MVDPoint",&mc_array);//Branch names
38 
39  TClonesArray* digiPixel_array=new TClonesArray("PndSdsDigiPixel");
40  t->SetBranchAddress("MVDPixelDigis",&digiPixel_array);//Branch names
41 
42  TClonesArray* digiStrip_array=new TClonesArray("PndSdsDigiStrip");
43  t->SetBranchAddress("MVDStripDigis",&digiStrip_array);//Branch names
44 
45  TClonesArray* stripClust_array=new TClonesArray("PndSdsClusterStrip");
46  t->SetBranchAddress("MVDStripClusterCand",&stripClust_array);//Branch names
47 
48  TClonesArray* pixelClust_array=new TClonesArray("PndSdsClusterPixel");
49  t->SetBranchAddress("MVDPixelClusterCand",&pixelClust_array);//Branch names
50 
51  TClonesArray* stripHit_array=new TClonesArray("PndSdsHit");
52  t->SetBranchAddress("MVDHitsStrip",&stripHit_array);//Branch names
53 
54  TClonesArray* pixelHit_array=new TClonesArray("PndSdsHit");
55  t->SetBranchAddress("MVDHitsPixel",&pixelHit_array);//Branch names
56 
57 
58  TGeoManager *geoMan = (TGeoManager*) gDirectory->Get("FAIRGeom");
60 
61  Int_t nbins = 120; //200
62  Double_t rim = 22.5;
63  TH2D* hisxymc = new TH2D("xymc","MVD MC Points, xy view;x / cm;y / cm",nbins,-rim,rim,nbins,-rim,rim);
64  TH2D* hisrzmc = new TH2D("rzmc","MVD MC Points, rz view;z / cm;r/ cm",nbins,-rim,rim,nbins,-rim,rim);
65  TH1D* hisde = new TH1D("de","MVD MC Points, Energyloss;E / GeV;",nbins,0.,0.002);
66  TH2D* hisLocalXYMC = new TH2D("LocalxyMC","Local MC Point XY;x_{L} / cm;y_{L} / cm",nbins,-5.,5.,nbins,-5.,5.);
67  TH1D* hisLocalZMC = new TH1D("LocalzMC","Local MC Point Z;Z_{L} / cm;",nbins,-5.,5.);//-0.02,0.02);
68 
69  TH2D* hisxy = new TH2D("xy","MVD reco Hit, xy view;x / cm;y / cm",nbins,-rim,rim,nbins,-rim,rim);
70  TH2D* hisrz = new TH2D("rz","MVD reco Hit, rz view;z / cm;r/ cm",nbins,-rim,rim,nbins,-rim,rim);
71  TH2D* hisLocalXY = new TH2D("Localxy","MVD Local reco Hit XY;x_{L} / cm;y_{L} / cm",nbins,-5.,5.,nbins,-5.,5.);
72  TH1D* hisrecoeloss = new TH1D("derec","MVD reco Hit energy deposit;E / GeV;",nbins,0.,0.002);
73 
74  TH2D* hisnomatchxy = new TH2D("nomatchxy","MVD reco Hit nomatch, xy view;x / cm;y / cm",nbins,-rim,rim,nbins,-rim,rim);
75  TH2D* hisnomatchrz = new TH2D("nomatchrz","MVD reco Hit nomatch, rz view;z / cm;r/ cm",nbins,-rim,rim,nbins,-rim,rim);
76  TH1D* hisnomatcheloss = new TH1D("denom","MVD blind Hit energy deposit;E / GeV;",nbins,0.,0.002);
77  TH2D* hisLocalXYnom = new TH2D("LocalxyMCnom","Local nomatch MC Point XY;x_{L} / cm;y_{L} / cm",nbins,-5.,5.,nbins,-5.,5.);
78 
79 
80  TH2D* hisDiffXY = new TH2D("diffxy","",nbins,-0.01,0.01,nbins,-0.04,0.04);
81  hisDiffXY->SetTitle("(MC - RECO) Hit coordinates xy view;#Deltax / cm;#Deltay / cm");
82  TH2D* hisDiffRZ = new TH2D("diffrz","",5*nbins,-0.025,0.025,nbins,-0.00,0.04);
83  hisDiffRZ->SetTitle("(MC - RECO) Hit coordinates rz view;#Deltaz / cm;#Deltar / cm");
84  TH2D* hisCZ = new TH2D("Cz","",nbins,-0.025,0.025,nbins,0.,1000000);
85  hisCZ->SetTitle("Charge - zdeviation ;#Deltaz / cm;#Q / e-");
86 
87  Double_t range = 0.01;
88  Double_t zed = 0.01;
89  Int_t bins = 100;
90 
91  TH1D* hisDiffX = new TH1D("diffx","(MC - RECO) Hit coordinate x;#Deltax / cm;",bins,-range,range);
92  TH1D* hisDiffY = new TH1D("diffy","(MC - RECO) Hit coordinate y;#Deltay / cm;",bins,-range,range);
93  TH1D* hisDiffZ = new TH1D("diffz","(MC - RECO) Hit coordinate z;#Deltaz / cm;",bins,-range,range);
94  TH1D* hisDiffM = new TH1D("diffm","(MC - RECO) residual;#R / cm;",bins,0.,5.);
95 
96  double angmax = 0.02;
97  TH1D* hisDiffTheta = new TH1D("DiffTheta","#Theta resolution;#Delta#Theta/mrad;",100,-angmax,angmax);
98  TH1D* hisDiffThetaDisk = new TH1D("DiffThetaDisk","",100,-angmax,angmax);
99  TH1D* hisDiffThetaSide = new TH1D("DiffThetaSide","",100,-angmax,angmax);
100  TH1D* hisDiffThetaOne = new TH1D("DiffThetaOne" ,"",100,-angmax,angmax);
101  TH1D* hisDiffThetaMore = new TH1D("DiffThetaMore","",100,-angmax,angmax);
102 
103  TH1D* hisDiffPhi = new TH1D("DiffPhi","#Phi resolution;#Delta#Phi/mrad;",100,-angmax,angmax);
104  TH1D* hisDiffPhiDisk = new TH1D("DiffPhiDisk","",100,-angmax,angmax);
105  TH1D* hisDiffPhiSide = new TH1D("DiffPhiSide","",100,-angmax,angmax);
106  TH1D* hisDiffPhiOne = new TH1D("DiffPhiOne" ,"",100,-angmax,angmax);
107  TH1D* hisDiffPhiMore = new TH1D("DiffPhiMore","",100,-angmax,angmax);
108 
109  TH1I* hisClustSize = new TH1I("ClustSize","Cluster size",10,0,10);
110  hisClustSize->SetTitle("Cluster size;n_{cl};");
111  TH1I* hisClustSizeDisk = new TH1I("ClustSizeDisk","Cluster size",10,0,10);
112  TH1I* hisClustSizeSide = new TH1I("ClustSizeSize","Cluster size",10,0,10);
113  TH1I* hisClustSizeTop = new TH1I("ClustSizetop","Cluster size",10,0,10);
114  TH1I* hisClustSizeBot = new TH1I("ClustSizebot","Cluster size",10,0,10);
115 
116  TH1I* hisDigiCounts = new TH1I("DigiCounts","Digis used n times in clusters;n;",10,0,10);
117  TH1I* hisPointEff = new TH1I("pointeff","Reconstructed Hits per MC Point;n;",10,0,10);
118 
119  TVector3 vecsloc, vecmcloc, vecs, vecmc, vecdiff, mommc, sensorDim;
121  Double_t difftheta, diffphi;
122 
123  for (Int_t j=0; j<nEvents && j<t->GetEntriesFast(); j++)
124  {
125  t->GetEntry(j);
126  if(verbose) cout<<"Event No "<<j<<endl;
127  else if (!(j%20)) cout <<"Event No "<<j<<endl;
128  if(verbose) std::cout<<"Check sanity of the arrays:"<<std::endl;
129  if(mc_array){
130  if(verbose) std::cout<<"mc_array ok with "<<mc_array->GetEntriesFast()<<" entries"<<std::endl;
131  }
132  else std::cout<<"*** mc_array broken - check your file! ."<<std::endl;
133  if(digiPixel_array){
134  if(verbose) std::cout<<"digiPixel_array ok with "<<digiStrip_array->GetEntriesFast()<<" entries"<<std::endl;
135  }
136  else std::cout<<"*** digiPixel_array broken - check your file! ."<<std::endl;
137  if(digiStrip_array){
138  if(verbose) std::cout<<"digiStrip_array ok with "<<digiStrip_array->GetEntriesFast()<<" entries"<<std::endl;
139  }
140  else std::cout<<"*** digiStrip_array broken - check your file! ."<<std::endl;
141  if(stripClust_array){
142  if(verbose) std::cout<<"stripClust_array ok with "<<stripClust_array->GetEntriesFast()<<" entries"<<std::endl;
143  }
144  else std::cout<<"*** stripClust_array broken - check your file! ."<<std::endl;
145  if(stripHit_array){
146  if(verbose) std::cout<<"stripHit_array ok with "<<stripHit_array->GetEntriesFast()<<" entries"<<std::endl;
147  }
148  else std::cout<<"*** stripHit_array broken - check your file! ."<<std::endl;
149 
150 // // ----- Strip Clusters -----
151 // // efficiency stuff
152 // std::map<int,std::vector<int> > digirec;
153 // for (int k=0;k<stripClust_array->GetEntriesFast();k++)
154 // {
155 // PndSdsClusterStrip* aclust = (PndSdsClusterStrip*)stripClust_array->At(k);
156 // for(int m=0;m<aclust->GetClusterSize();m++)
157 // {
158 // digirec[aclust->GetDigiIndex(m)].push_back(k);
159 // }
160 // }
161 // cout<<digiStrip_array->GetEntriesFast()<<endl;
162 // for (int l=0;l<digiStrip_array->GetEntriesFast();l++)
163 // {
164 // hisDigiCounts->Fill(digirec[l].size());
165 // }
166 
167  std::map<int,std::vector<int> > matchmap;
168 
169  // ----- Strip HITS -----
170  for (Int_t i=0; i<stripHit_array->GetEntriesFast(); i++)
171  {
172  //hit info
173  if(verbose) cout<<"Hit No "<<i;//<<endl;
174  if(verbose) cout<< " | ";
175  PndSdsHit *hit=(PndSdsHit*)stripHit_array->At(i);
176  if( detFilter!="" &&
177  fGeoH->GetPath(hit->GetDetName()).Contains(detFilter))
178  continue;
179 // if(fGeoH->GetPath(hit->GetDetName()).Contains("Rect")) continue;
180  vecs.SetXYZ(hit->GetX(), hit->GetY(), hit->GetZ());
181  hisxy->Fill(vecs.x(),vecs.y());
182  hisrz->Fill(vecs.z(),((vecs.y()>0.)?1.:-1.)*vecs.Perp());
183  hisrecoeloss->Fill(hit->GetEloss());
184  vecsloc = fGeoH->MasterToLocalId(vecs, hit->GetDetName());
185  hisLocalXY->Fill(vecsloc.x(),vecsloc.y());
186 
187  //cluster info
188  int topclustid = hit->GetRefIndex();
189  int botclustid = hit->GetBotIndex();
190  if(verbose) cout<<"top/bot cluster index "<< topclustid<<"/"<<botclustid<<" ";
191  if(verbose) cout<< " | ";
192  PndSdsClusterStrip *clust = (PndSdsClusterStrip*)stripClust_array->At(topclustid);
193  if(verbose) cout<< topclustid<<" "<<clust<<" ";
194  Int_t clsize = clust->GetClusterSize();
195  if(verbose) cout<<clsize <<" ";
196  int hclsize = hit->GetNDigiHits();
197  if (hclsize < clsize) cout<<"Strange cluster sizes - this shall not happen!"<<endl;
198  int bclsize =-1;
199  if(botclustid>=0){
200  if(verbose) cout<< " | "<<botclustid <<" ";
201  PndSdsClusterStrip *botcl = (PndSdsClusterStrip*)stripClust_array->At(botclustid);
202  bclsize = botcl->GetClusterSize();
203  if(verbose) cout<< botcl <<" "<<bclsize<<" | ";
204  }
205  hisClustSize->Fill(clsize);
206  if(bclsize>0) hisClustSize->Fill(bclsize);
207  hisClustSizeTop->Fill(clsize);
208  if(bclsize>0) hisClustSizeBot->Fill(bclsize);
209 
210  //digis info (getting point ID)
211  Int_t sid = clust->GetDigiIndex(0);
212  if(verbose) cout<< "sid="<<sid<<" | ";
213  if(sid>digiStrip_array->GetEntriesFast()) cout<<"Exceeding digi array size"<<endl;
214  PndSdsDigiStrip *astripdigi = (PndSdsDigiStrip*)digiStrip_array->At(sid);
215  if(0==astripdigi)cout<<"no strip digi found"<<endl;
216 
217  //point info
218  int mcid = astripdigi->GetIndex();
219  if(verbose) cout<< "#4# | ";
220  if(mcid<0) continue;
221  PndSdsMCPoint *point=(PndSdsMCPoint*)mc_array->At(mcid);
222  if(point->GetDetName()!=hit->GetDetName())
223  {
224  cout<<"-error- Point and hit detector names don't match!"<<endl;
225  cout<<"point (id) : "<<point->GetDetName()<<endl;
226  cout<<"hit (id) : "<< hit->GetDetName()<<endl;
227  cout<<"point (name): "<<fGeoH->GetPath(point->GetDetName()).Data()<<endl;
228  cout<<"hit (name): "<<fGeoH->GetPath( hit->GetDetName()).Data()<<endl;
229  continue;
230  }
231  vecmc=0.5*(point->GetPosition()+point->GetPositionOut());
232  vecmcloc = fGeoH->MasterToLocalId(vecmc, point->GetDetName());
233  vecdiff = vecmcloc - vecsloc;
234 // vecdiff = vecmc - vecs;
235 /* if(fabs(vecdiff.X()) > 0.1)
236  { //something is wrong?
237  std::cout<<"### warning ### large difference to MC info "<<endl;
238  if(verbose) std::cout<< fGeoH->GetPath(hit->GetDetName())<<endl;
239  }*/
240 
241  difftheta = vecmc.Theta() - vecs.Theta();
242  diffphi = vecmc.Phi() - vecs.Phi();
243  //convert deg to mrad
244  difftheta = difftheta*1000.*TMath::Pi()/180.;
245  diffphi= diffphi*1000.*TMath::Pi()/180.;
246 
247  hisxy->Fill(vecs.x(),vecs.y());
248  if(vecs.y() > 0.) hisrz->Fill(vecs.z(),vecs.Perp());
249  else hisrz->Fill(vecs.z(),-1.*vecs.Perp());
250 
251  hisDiffTheta->Fill(difftheta);
252  hisDiffPhi->Fill(diffphi);
253 
254  hisDiffXY->Fill(vecdiff.x(),vecdiff.y());
255  hisDiffRZ->Fill(vecdiff.z(),vecdiff.Perp());
256  hisDiffX->Fill(vecdiff.x());
257  hisDiffY->Fill(vecdiff.y());
258  hisDiffZ->Fill(vecdiff.z());
259  hisDiffM->Fill(vecdiff.Mag());
260 
261  if(verbose) cout<<endl;
262 
263  //efficiency stuff
264  matchmap[mcid].push_back(i);
265  }//end for i (strip hits in event)
266 
267  // ----- MC Points -----
268  for (Int_t i=0; i<mc_array->GetEntriesFast(); i++)
269  {
270  if(verbose) cout<<"Point No "<<i<<endl;
271  PndSdsMCPoint *point=(PndSdsMCPoint*)mc_array->At(i);
272  vecmc=0.5*(point->GetPosition()+point->GetPositionOut());
273  hisxymc->Fill(vecmc.x(),vecmc.y());
274  hisrzmc->Fill(vecmc.z(),((vecmc.y()>0.)?1.:-1.)*vecmc.Perp());
275  hisde->Fill(point->GetEnergyLoss());
276  vecmcloc = fGeoH->MasterToLocalId(vecmc, point->GetDetName());
277  hisLocalXYMC->Fill(vecmcloc.x(),vecmcloc.y());
278  hisLocalZMC->Fill(vecmcloc.z());
279  if(fGeoH->GetPath(point->GetDetName()).Contains("Strip"))
280  {
281  hisPointEff->Fill(matchmap[i].size());
282  if(matchmap[i].size()==0)
283  {
284  hisnomatchxy->Fill(vecmc.x(),vecmc.y());
285  hisnomatchrz->Fill(vecmc.z(),((vecmc.y()>0.)?1.:-1.)*vecmc.Perp());
286  hisnomatcheloss->Fill(point->GetEnergyLoss());
287  hisLocalXYnom->Fill(vecmcloc.x(),vecmcloc.y());
288  }//check where the things are lost...
289  }
290  }
291 
292 
293  }// end for j (events)
294 
295 
296 //-----
297 Int_t pix = 400;
298 Int_t a = 3, b = 2;
299 
300 TCanvas* can1 = new TCanvas("MvdTestPlot","MCHit view in MVD",0,0,a*pix,b*pix);
301 can1->Divide(a,b);
302 TPad* mypad=0;
303 can1->cd(1);
304 mypad=gPad;
305 mypad->Divide(2,2);
306 mypad->cd(1);DrawNice2DHisto(hisxymc);
307 mypad->cd(2);DrawNice2DHisto(hisrzmc);
308 mypad->cd(3);DrawNice2DHisto(hisLocalXYMC);
309 // mypad->cd(4);gPad->SetLogy();hisLocalZMC->DrawCopy();
310 mypad->cd(4);gPad->SetLogy();hisde->DrawCopy();
311 
312 can1->cd(2);
313 mypad=gPad;
314 mypad->Divide(2,2);
315 mypad->cd(1);DrawNice2DHisto(hisxy);
316 mypad->cd(2);DrawNice2DHisto(hisrz);
317 mypad->cd(3);DrawNice2DHisto(hisLocalXY);
318 mypad->cd(4);gPad->SetLogy();hisrecoeloss->DrawCopy();
319 
320 can1->cd(3);
321 mypad=gPad;
322 mypad->Divide(2,2);
323 mypad->cd(1);DrawNice2DHisto(hisDiffXY);
324 mypad->cd(2);DrawNice2DHisto(hisDiffRZ);
325 mypad->cd(3);hisDiffTheta->DrawCopy();
326 mypad->cd(4);hisDiffPhi->DrawCopy();
327 
328 can1->cd(4);
329 hisClustSize->Draw();
330 hisClustSizeBot->SetLineColor(kRed);
331 hisClustSizeTop->SetLineColor(kBlue);
332 hisClustSizeBot->Draw("sames");
333 hisClustSizeTop->Draw("sames");
334 can1->Update();mypad=(TPad*)gPad;BetterStatBox(mypad);
335 
336 can1->cd(5);
337 mypad=gPad;
338 mypad->Divide(2,2);
339 mypad->cd(1);gPad->SetLogy();
340 hisDiffM->DrawCopy();
341 mypad->cd(2);
342 hisPointEff->SetFillColor(kBlue+5);
343 hisPointEff->DrawCopy();
344 mypad->cd(3);
345 mypad->cd(4);
346 
347 can1->cd(6);
348 mypad=gPad;
349 mypad->Divide(2,2);
350 mypad->cd(1);DrawNice2DHisto(hisnomatchxy);
351 mypad->cd(2);DrawNice2DHisto(hisnomatchrz);
352 mypad->cd(3);DrawNice2DHisto(hisLocalXYnom);
353 mypad->cd(4);gPad->SetLogy();
354 hisnomatcheloss->DrawCopy();
355 
356 can1->Print("/home/ralfk/Desktop/tempview.ps");
357 
358 
359 // Plots for talk
360 TCanvas* can5 = new TCanvas("MvdTalkPlot5","MVD clust",200,200,800,400);
361 can5->Divide(2,1);
362 can5->cd(1);
363 hisDiffTheta->DrawCopy();
364 can5->cd(2);
365 hisDiffPhi->DrawCopy();
366 can5->Print("res-clust-thetaphi.png");
367 
368 TCanvas* can6 = new TCanvas("MvdTalkPlot6","MVD clust",250,250,400,400);
369 can6->cd();int off = -3;
370 hisClustSizeTop->SetLineColor(kOrange + off);
371 hisClustSizeBot->SetLineColor(kAzure + off);
372 hisClustSize->DrawCopy("");
373 hisClustSizeTop->DrawCopy("same");
374 hisClustSizeBot->DrawCopy("same");
375 
376 can6->Print("res-clust-clsize.png");
377 
378 TCanvas* can7 = new TCanvas("MvdTalkPlot7","MVD clust",200,200,800,400);
379 can7->Divide(2,1);
380 can7->cd(1);
381 hisPointEff->DrawCopy();
382 can7->cd(2);
383 Double_t zeros = hisPointEff->GetBinContent(hisPointEff->GetBin(1));
384 Double_t ones = hisPointEff->GetBinContent(hisPointEff->GetBin(2));
385 Double_t all = hisPointEff->Integral();
386 Double_t multiples = all - zeros - ones;
387 cout <<zeros<<" zeros, "<<ones<<" ones, "<<multiples<<" multiples"<<endl;
388 cout <<zeros/all<<"% "<<ones/all<<"% "<<multiples/all<<"%"<<endl;
389 can7->Print("res-clust-efiiciencies.png");
390 
391 
392 
393 
394  // ----- Finish -------------------------------------------------------
395 /* timer.Stop();
396  Double_t rtime = timer.RealTime();
397  Double_t ctime = timer.CpuTime();
398  cout << endl << endl;
399  cout << "Macro finished succesfully." << endl;
400  cout << "Real time " << rtime << " s, CPU time " << ctime << " s" << endl;
401  cout << endl;*/
402  // ------------------------------------------------------------------------
403 
404  return 0;
405 }
Int_t GetClusterSize() const
Definition: PndSdsCluster.h:39
double range[]
Definition: evaltrig.C:67
Int_t GetNDigiHits() const
Definition: PndSdsHit.h:92
TH1D * hisde
Definition: anaLmdDigi.C:44
TH2D * hisDiffXY
Definition: anaLmdReco.C:57
Int_t i
Definition: run_full.C:25
TTree * b
PndGeoHandling * fGeoH
Definition: anasim.C:34
TH1F * hisDiffX
Definition: anaLmdReco.C:62
#define verbose
Int_t GetIndex(int i=0) const
Definition: PndSdsDigi.h:63
TGeoManager * geoMan
Class for digitised strip hits.
std::string GetDigiFileName(std::string addon="", bool cut=false)
DrawNice2DHisto(hisxy)
TString digiFile
Definition: bump_emc.C:20
TString detname
Definition: anasim.C:61
TVector3 mommc
Definition: anaLmdDigi.C:64
TClonesArray * mc_array
Definition: anaLmdCluster.C:25
TVector3 GetPositionOut() const
Definition: PndSdsMCPoint.h:91
Double_t GetEloss() const
Definition: PndSdsHit.h:97
TH1F * hisDiffZ
Definition: anaLmdReco.C:66
std::string GetSimFileName(std::string addon="", bool cut=false)
TString GetPath(Int_t shortID)
for a given shortID the path is returned
TVector3 vecs
TString inFile
Definition: hit_dirc.C:8
TH2D * hisDiffRZ
Definition: anaLmdReco.C:59
Class to access the naming information of the MVD.
Int_t a
Definition: anaLmdDigi.C:126
Int_t GetDigiIndex(Int_t i) const
Definition: PndSdsCluster.h:40
std::string GetRecoFileName(std::string addon="", bool cut=false)
A simple class which adds the corresponding file extensions to a given base class.
Double_t
Int_t nEvents
Definition: hit_dirc.C:11
BetterStatBox(mypad)
TClonesArray * stripClust_array
Definition: plot_rk.C:25
TClonesArray * stripHit_array
Definition: plot_rk.C:29
TFile * f
Definition: bump_analys.C:12
int nbins
Definition: full_core_ntp.C:33
TString picture
Definition: anaMvdDigi.C:21
Int_t GetBotIndex() const
Definition: PndSdsHit.h:96
TPad * mypad
TVector3 vecmc
Definition: anaLmdCluster.C:52
TH2D * hisxy
Definition: anaLmdDigi.C:38
PndFileNameCreator namecreator("../data/Lars/MvdDtsSim.root")
TString name
TH2D * hisrz
Definition: anaLmdDigi.C:41
TClonesArray * digiPixel_array
Definition: anaMvdDigi.C:31
TVector3 GetPosition() const
Definition: PndSdsMCPoint.h:90
std::string recoFile
TTree * t
Definition: bump_analys.C:13
TClonesArray * digiStrip_array
Definition: anaLmdDigi.C:32
TH1F * hisDiffY
Definition: anaLmdReco.C:64
PndSdsMCPoint * hit
Definition: anasim.C:70
TClonesArray * pixelClust_array
Definition: plot_rk.C:27
TCanvas * can1
TVector3 vecdiff
Definition: anaLmdReco.C:77
Double_t Pi
LoadPandaStyle()
TH2D * hisLocalXY
Definition: anaplaneclust.C:76
TClonesArray * pixelHit_array
Definition: plot_rk.C:31
PndSdsMCPoint * point
Definition: anaLmdCluster.C:72