StRoot  1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
StFgtClusterPlotter.cxx
1 #include "StFgtClusterPlotter.h"
3 #include "StRoot/StEvent/StFgtCollection.h"
4 #include "StRoot/StEvent/StFgtHitCollection.h"
5 #include "StRoot/StEvent/StFgtHit.h"
6 #include "StRoot/StFgtUtil/geometry/StFgtGeom.h"
7 #include "StRoot/StEvent/StEvent.h"
8 #include "StRoot/StEvent/StEventInfo.h"
9 #include <TH2D.h>
10 #include <TROOT.h>
11 #include <TStyle.h>
12 #include <TCanvas.h>
13 
14 
18 /*Bool_t checkPulse(StFgtHit* pClus)
19 {
20  int N=7;
21  stripWeightMap_t strips=pClus->getStripWeightMap();
22  for(stripWeightMap_t::iterator it=strips.begin();it!=strips.end();it++)
23  {
24  Float_t peakAdc=leadEdgeBin=-9999;
25  Float_t sumAdc=0;
26  }
27  for(int i=0;i<N;i++)
28  {
29  sumAdc+=it->getAdc(i);
30  if(leadEdgeBin<0 && it->getAdc(i)>...
31  }
32 
33 }*/
34 
35 
40 {
41 
42  StEvent* eventPtr = 0;
43  eventPtr = (StEvent*)GetInputDS("StEvent");
44  (*outTxtFileP) <<endl<<endl<<" ------new event: " << eventPtr->info()->id() << "----------------------" << " running nr: " << runningEvtNr << "------" << endl;
45  (*outTxtFileR) <<endl<<endl<<" ------new event: " << eventPtr->info()->id() << "----------------------" << " running nr: " << runningEvtNr << "------" << endl;
46 
47 
48  Int_t ierr = StFgtQaMaker::Make();
49  cout <<"in plotter make " << endl;
50  Float_t x;
51  Float_t y;
52  Int_t prvGeoId=-1;
53  for(int iDx=0;iDx<kFgtNumDiscs;iDx++)
54  {
55  vector<float> vPhi[4];
56  vector<float> vR[4];
57 
58  vector<float> vPhiCharge[4];
59  vector<float> vRCharge[4];
60 
61  StFgtStripCollection& strips=*(mFgtCollectionPtr->getStripCollection( iDx ));
62 
63  for( StSPtrVecFgtStripIterator it=strips.getStripVec().begin();it!=strips.getStripVec().end();++it)
64  {
65  /* cout <<"maxAdc: " << (*it)->getMaxAdc() <<endl;
66  cout <<"hits : ";
67  for(int i=0;i<7;i++)
68  { cout <<" " << (*it)->getAdc(i);}
69  cout <<endl;*/
70 
71  Short_t quad, disc, strip;
72  Char_t layer;
73 
74  Bool_t stripDead=false;
75 
76  StFgtGeom::decodeGeoId((*it)->getGeoId(),disc, quad, layer, strip);
77  if(layer=='R')
78  outTxtFile=outTxtFileR;
79  else
80  outTxtFile=outTxtFileP;
81 
82  if(((*it)->getGeoId()-prvGeoId)>2 && prvGeoId>=0)
83  {
84  (*outTxtFile) <<endl<<endl<<endl;;
85  }
86 
87  prvGeoId=(*it)->getGeoId();
88  switch((*it)->getClusterSeedType())
89  {
90  case kFgtSeedType1:
91  (*outTxtFile) <<"#";
92  break;
93  case kFgtSeedType2:
94  (*outTxtFile) <<"#";
95  break;
96  case kFgtSeedType3:
97  (*outTxtFile) <<"#";
98  break;
99  case kFgtClusterPart:
100  (*outTxtFile) <<"*";
101  break;
102  case kFgtClusterEndUp:
103  (*outTxtFile) <<"*";
104  break;
105  case kFgtClusterEndDown:
106  (*outTxtFile) <<"*";
107  break;
108  case kFgtDeadStrip:
109  if(((it-1))>=strips.getStripVec().begin() && (it+1)<strips.getStripVec().end())
110  {
111  if((*(it-1))->getClusterSeedType()>kFgtDeadStrip&& (*(it+1))->getClusterSeedType()>kFgtDeadStrip)
112  (*outTxtFile) <<"*";
113  else
114  (*outTxtFile) <<"x";
115  }
116  else
117  (*outTxtFile) <<"x";
118  break;
119 
120  default:
121  (*outTxtFile) <<"x";
122  }
123  if((*it)->getClusterSeedType()==kFgtDeadStrip)
124  stripDead=true;
125  else
126  stripDead=false;
127  for( Int_t timebin = 0; timebin < kFgtNumTimeBins-2; ++timebin )
128  {
129  if(stripDead)
130  (*outTxtFile) << setw(4) << " ? "<< " ";
131  else
132  {
133  float numSig=(*it)->getAdc(timebin)/(*it)->getPedErr();
134  if(numSig >1)
135  (*outTxtFile) << setw(4) << (*it)->getAdc(timebin)<< " ";
136  else
137  (*outTxtFile) << setw(4) << " . "<< " ";
138  }
139  }
140  (*outTxtFile) << " : charge: " << (*it)->getCharge()<<" +- " << (*it)->getChargeUncert() <<" location: "<<StFgtGeom::encodeGeoName(disc,quad,layer,strip);
141  (*outTxtFile) <<"/"<<(*it)->getGeoId();
142  (*outTxtFile) << " ped: " << (*it)->getPed() <<" +- " << (*it)->getPedErr();
143  (*outTxtFile) << " run evtNr " << runningEvtNr;
144  // (*outTxtFile) <<" t0: " << (*it)->getFitParamT0() <<" fit chi2/ndf: " << (*it)->getFitChi2();
145  if((*it)->getClusterSeedType()==kFgtSeedType1)
146  {
147  (*outTxtFile) << " ---> seed w/ 3 high strips";
148  }
149  if((*it)->getClusterSeedType()==kFgtSeedType2)
150  (*outTxtFile) << " ---> seed w/ 2 high strips";
151  if((*it)->getClusterSeedType()==kFgtSeedType3)
152  (*outTxtFile) << " ---> seed w/ 1 high strip";
153 
154  if((*it)->getClusterSeedType()==kFgtClusterSeedInSeaOfNoise)
155  (*outTxtFile) <<" ---> seed in too much noise";
156 
157  if((*it)->getClusterSeedType()==kFgtClusterPart)
158  (*outTxtFile) << " ---> Part of cluster";
159  if((*it)->getClusterSeedType()==kFgtDeadStrip)
160  (*outTxtFile) <<" ---> Strip is marked dead";
161  if((*it)->getClusterSeedType()==kFgtClusterEndUp)
162  (*outTxtFile) <<" ---> End of a cluster";
163  if((*it)->getClusterSeedType()==kFgtClusterEndDown)
164  (*outTxtFile) <<" ---> Beginning of a cluster";
165  (*outTxtFile) <<endl;
166  }
167 
168  cout <<"trying to get clusters in disc " << iDx << endl;
169  StFgtHitCollection* clusterCol=mFgtCollectionPtr->getHitCollection(iDx);
170 
171  if(clusterCol)
172  {
173  cout <<"got collection, looking at hits .. " <<endl;
174  const StSPtrVecFgtHit &hitVec=clusterCol->getHitVec();
175  StSPtrVecFgtHitConstIterator hitIter;
176  for(hitIter=hitVec.begin();hitIter != hitVec.end();hitIter++)
177  {
178  Int_t iq=(*hitIter)->getQuad();
179  Float_t phi=(*hitIter)->getPositionPhi();
180  Float_t r=(*hitIter)->getPositionR();
181  Int_t geoId=(*hitIter)->getCentralStripGeoId();
182  Float_t charge=(*hitIter)->charge();
183  Float_t chargeErr=(*hitIter)->getChargeUncert();
184  Int_t numStrips=(*hitIter)->getStripWeightMap().size();
186  Short_t quad, disc, strip;
187  Char_t layer;
188 
189  Bool_t containsSeed=false;
190 
191  for(stripWeightMap_t::iterator it=(*hitIter)->getStripWeightMap().begin();it!=(*hitIter)->getStripWeightMap().end();it++)
192  {
193  // if(it->first->getClusterSeedType()==kFgtSeedType1 || it->first->getClusterSeedType()==kFgtSeedType2 || it->first->getClusterSeedType()==kFgtSeedType3) //require 2 or 3 strips
194  // if(it->first->getClusterSeedType()==kFgtSeedType1 || it->first->getClusterSeedType()==kFgtSeedType2) //require 3 strips
195  if(it->first->getClusterSeedType()==kFgtSeedType1 || it->first->getClusterSeedType()==kFgtSeedType2 ||it->first->getClusterSeedType()==kFgtSeedType3) //require 1,2,3 strips
196  {
197  containsSeed=true;
199  charge=it->first->getCharge();
200  }
201  }
202  if(containsSeed)
203  {
204  // (*outTxtFile) <<" looking at Cluster for geoId: " << (*hitIter)->getCentralStripGeoId() << " layer: " << (*hitIter)->getLayer() <<endl;
205  for(stripWeightMap_t::iterator it=(*hitIter)->getStripWeightMap().begin();it!=(*hitIter)->getStripWeightMap().end();it++)
206  {
207  StFgtGeom::decodeGeoId(it->first->getGeoId(),disc, quad, layer, strip);
208  for( Int_t timebin = 0; timebin < kFgtNumTimeBins-2; ++timebin )
209  {
210  float numSig=it->first->getAdc(timebin)/it->first->getPedErr();
211  // if(numSig >1)
212  // (*outTxtFile) << setw(4) << it->first->getAdc(timebin)<< " ";
213  // else
214  // (*outTxtFile) << setw(4) << " . "<< " ";
215  }
216 
217  // (*outTxtFile) << " ::: charge: " << it->first->getCharge()<<" +- " << it->first->getChargeUncert() <<" location: "<<StFgtGeom::encodeGeoName(disc,quad,layer,strip);
218  // (*outTxtFile) << " ped: " << it->first->getPed() <<" +- " << it->first->getPedErr();
219  // (*outTxtFile) << " running evtNo " << runningEvtNr;
220  // (*outTxtFile) <<" t0: " << it->first->getFitParamT0() <<" fit chi2/ndf: " << it->first->getFitChi2();
221  if(it->first->getClusterSeedType()==kFgtSeedType1)
222  {
223  // (*outTxtFile) << " ---> seed with 3 high strips";
224  }
225  /* if(it->first->getClusterSeedType()==kFgtSeedType2)
226  (*outTxtFile) << " ---> seed with 2 high strips";
227  if(it->first->getClusterSeedType()==kFgtSeedType3)
228  (*outTxtFile) << " ---> seed with 1 high strip";
229 
230  if(it->first->getClusterSeedType()==kFgtClusterPart)
231  (*outTxtFile) << " ---> part of cluster";
232  (*outTxtFile) <<endl;*/
233  }
234  // (*outTxtFile) <<" -----------------------cluster charge: " << charge<<" -----------------------" <<endl;
235  // (*outTxtFile) <<" -----------------------end of cluster -----------------------" <<endl;
236 
237  if(!containsSeed)
238  {
239  // (*outTxtFile) << " no seed pulse " << endl;
240  continue;
241  }
242 
243  // (*outTxtFile) <<" found seed" <<endl;
244 
245  if((*hitIter)->getLayer()=='R')
246  {
247  vR[iq].push_back((*hitIter)->getPositionR());
248  vRCharge[iq].push_back(charge);
249  }
250  else
251  {
252  vPhi[iq].push_back((*hitIter)->getPositionPhi());
253  vPhiCharge[iq].push_back(charge);
254  }
255 
256  Short_t tDisc, tQuad,tStrip;
257  Char_t tLayer;
258  //get strip id from the geo id
259  StFgtGeom::decodeGeoId(geoId,tDisc,tQuad,tLayer,tStrip);
260  // cout <<"filling charge with phi: " << phi << " r : " << r << " charge: " << charge <<" numStrips: " << numStrips<< " strip nr: " << tStrip<<endl;
261  // cout<<"disc nr: " << iDx <<" quad: " << iq << " numquads: " << kFgtNumQuads <<endl;
262  hCChargePosSpacePhi[iDx*kFgtNumQuads+iq]->Fill(phi,charge);
263  hCChargePosSpaceR[iDx*kFgtNumQuads+iq]->Fill(r,charge);
264  hClusSizePhi[iDx*kFgtNumQuads+iq]->Fill(phi,numStrips);
265  hClusSizePhi[iDx*kFgtNumQuads+iq]->Fill(phi,numStrips);
266  hClusSizeR[iDx*kFgtNumQuads+iq]->Fill(r,numStrips);
267  hCChargeElecSpace[iDx*kFgtNumQuads+iq]->Fill(tStrip,charge);
268  hClusSizeElecSpace[iDx*kFgtNumQuads+iq]->Fill(tStrip,numStrips);
269  }
270  }
271 
272  for(int iQ=0;iQ<4;iQ++)
273  {
274 
275  for(vector<float>::iterator itR=vR[iQ].begin();itR!=vR[iQ].end();itR++)
276  {
277  for(vector<float>::iterator itP=vPhi[iQ].begin();itP!=vPhi[iQ].end();itP++)
278  {
279  x=(*itR)*cos(*itP);
280  y=(*itR)*sin(*itP);
281  radioPlots[iDx]->Fill(x,y);
282  }
283  }
284  for(vector<float>::iterator itR=vRCharge[iQ].begin();itR!=vRCharge[iQ].end();itR++)
285  {
286  for(vector<float>::iterator itP=vPhiCharge[iQ].begin();itP!=vPhiCharge[iQ].end();itP++)
287  {
288  corrPlots[iDx*kFgtNumQuads+iQ]->Fill(*itR,*itP);
289  }
290  }
291 
292  vPhi[iQ].clear();
293  vR[iQ].clear();
294  vPhiCharge[iQ].clear();
295  vRCharge[iQ].clear();
296  }
297 
298  }
299  }
300 
301  runningEvtNr++;
302  return ierr;
303 };
304 
305  StFgtClusterPlotter::StFgtClusterPlotter( const Char_t* name):runningEvtNr(0)
306 {
307  StFgtQaMaker( name, 0,0, "qName" );
308 
309 };
310 
311 StFgtClusterPlotter::~StFgtClusterPlotter()
312 {
313  //delete histogram arrays
314 };
315 
316 
318  outTxtFile->close();
319  gStyle->SetPalette(1);
320  cout <<"cluster plotter finish funciton " <<endl;
321  Int_t ierr = kStOk;
322  TCanvas* cChargePhi=new TCanvas("chargePhi","chargePhi",850,1100);
323  TCanvas* cChargePhiBig=new TCanvas("chargePhiBig","chargePhiBig",850,1100);
324  cChargePhi->SetLogz();
325  cChargePhi->Divide(kFgtNumDiscs,kFgtNumQuads);
326  TCanvas* cChargeR=new TCanvas("chargeR","chargeR",850,1100);
327  TCanvas* cChargeRBig=new TCanvas("chargeRBig","chargeRBig",850,1100);
328  cChargeR->SetLogz();
329  cChargeR->Divide(kFgtNumDiscs,kFgtNumQuads);
330  TCanvas* cClusSizePhi=new TCanvas("clusSizePhi","clusSizePhi",850,1100);
331  TCanvas* cClusSizePhiBig=new TCanvas("clusSizePhiBig","clusSizePhiBig",850,1100);
332  cClusSizePhi->Divide(kFgtNumDiscs,kFgtNumQuads);
333  TCanvas* cClusSizeR=new TCanvas("clusSizeR","clusSizeR",850,1100);
334  TCanvas* cClusSizeRBig=new TCanvas("clusSizeRBig","clusSizeRBig",850,1100);
335  cClusSizeR->Divide(kFgtNumDiscs,kFgtNumQuads);
336  TCanvas* cChargeElecSpace=new TCanvas("cChargeElecSpace","cChargeEledId",850,1100);
337  TCanvas* cChargeElecSpaceBig=new TCanvas("cChargeElecSpaceBig","cChargeEledIdBig",850,1100);
338  cChargeElecSpace->SetLogz();
339  cChargeElecSpace->Divide(kFgtNumDiscs,kFgtNumQuads);
340  TCanvas* cClusSizeElecSpace=new TCanvas("clusSizeElecSpace","clusSizeEledId",850,1100);
341  TCanvas* cClusSizeElecSpaceBig=new TCanvas("clusSizeElecSpaceBig","clusSizeEledIdBig",850,1100);
342  cClusSizeElecSpace->Divide(kFgtNumDiscs,kFgtNumQuads);
343 
344  TCanvas* cRadio=new TCanvas("radioPlots","radioPlot",1000,1500);
345  cRadio->Divide(2,3); //6 discs
346 
347  TCanvas* cCorr=new TCanvas("correlationPlots","correlationPlot",1000,1500);
348  TCanvas* cCorrBig=new TCanvas("correlationPlotsBig","correlationPlotBig",1000,1500);
349  cCorr->Divide(kFgtNumDiscs,kFgtNumQuads);
350 
351  for(Int_t iD=0;iD<kFgtNumDiscs;iD++)
352  {
353  for(Int_t iQ=0;iQ<kFgtNumQuads;iQ++)
354  {
355  cout <<"drawing disc " << iD <<" quad " << iQ <<endl;
356  cChargePhi->cd(iD*kFgtNumQuads+iQ+1)->SetLogz();
357  hCChargePosSpacePhi[iD*kFgtNumQuads+iQ]->Draw("colz");
358  cChargePhiBig->cd()->SetLogz();
359  hCChargePosSpacePhi[iD*kFgtNumQuads+iQ]->Draw("colz");
360  cChargePhiBig->Print("cChargePhiBig.pdf");
361 
362  cChargeR->cd(iD*kFgtNumQuads+iQ+1)->SetLogz();
363  hCChargePosSpaceR[iD*kFgtNumQuads+iQ]->Draw("colz");
364 
365  cChargeRBig->cd()->SetLogz();
366  hCChargePosSpaceR[iD*kFgtNumQuads+iQ]->Draw("colz");
367  cChargeRBig->Print("cChargeRBig.pdf");
368 
369 
370  cClusSizePhi->cd(iD*kFgtNumQuads+iQ+1)->SetLogz();
371  hClusSizePhi[iD*kFgtNumQuads+iQ]->Draw("colz");
372 
373  cClusSizePhiBig->cd()->SetLogz();
374  hClusSizePhi[iD*kFgtNumQuads+iQ]->Draw("colz");
375  cClusSizePhiBig->Print("cClusSizePhiBig.pdf");
376 
377  cClusSizeR->cd(iD*kFgtNumQuads+iQ+1)->SetLogz();
378  hClusSizeR[iD*kFgtNumQuads+iQ]->Draw("colz");
379 
380  cClusSizeRBig->cd()->SetLogz();
381  hClusSizeR[iD*kFgtNumQuads+iQ]->Draw("colz");
382  cClusSizeRBig->Print("cClusSizeRBig.pdf");
383 
384 
385  cChargeElecSpace->cd(iD*kFgtNumQuads+iQ+1)->SetLogz();
386  hCChargeElecSpace[iD*kFgtNumQuads+iQ]->Draw("colz");
387 
388  cChargeElecSpaceBig->cd()->SetLogz();
389  hCChargeElecSpace[iD*kFgtNumQuads+iQ]->Draw("colz");
390  cChargeElecSpaceBig->Print("cChargeElecSpaceBig.pdf");
391 
392 
393  cClusSizeElecSpace->cd(iD*kFgtNumQuads+iQ+1)->SetLogz();
394  hClusSizeElecSpace[iD*kFgtNumQuads+iQ]->Draw("colz");
395 
396 
397  cClusSizeElecSpace->cd()->SetLogz();
398  hClusSizeElecSpace[iD*kFgtNumQuads+iQ]->Draw("colz");
399  cClusSizeElecSpaceBig->Print("cClusSizeElecCooBig.pdf");
400 
401 
402  cCorr->cd(iD*kFgtNumQuads+iQ+1)->SetLogz();
403  corrPlots[iD*kFgtNumQuads+iQ]->Draw("colz");
404 
405  cCorrBig->cd()->SetLogz();
406  corrPlots[iD*kFgtNumQuads+iQ]->Draw("colz");
407  cCorrBig->Print("r_phi_correlationsBig.pdf");
408 
409  }
410  cRadio->cd(iD+1)->SetLogz();
411  radioPlots[iD]->Draw("colz");
412  }
413 
414 
415  cout <<"saving .." <<endl;
416  cChargePhi->SaveAs("cChargePhi.pdf");
417  cChargePhi->SaveAs("cChargePhi.png");
418 
419  cChargeR->SaveAs("cChargeR.pdf");
420  cChargeR->SaveAs("cChargeR.png");
421 
422  cClusSizePhi->SaveAs("cClusSizePhi.pdf");
423  cClusSizePhi->SaveAs("cClusSizePhi.png");
424 
425  cClusSizeR->SaveAs("cClusSizeR.pdf");
426  cClusSizeR->SaveAs("cClusSizeR.png");
427 
428 
429  cChargeElecSpace->SaveAs("cClusSizeElecSpace.pdf");
430  cChargeElecSpace->SaveAs("cClusSizeElecSpace.png");
431 
432  cClusSizeElecSpace->SaveAs("cClusSizeElecSpace.pdf");
433  cClusSizeElecSpace->SaveAs("cClusSizeElecSpace.png");
434 
435  cRadio->SaveAs("radioPlots.png");
436  cRadio->SaveAs("radioPlots.pdf");
437 
438  cCorr->SaveAs("corrPlots.png");
439  cCorr->SaveAs("corrPlots.pdf");
440 
441  myRootFile->Write();
442  myRootFile->Close();
443 
444  return ierr;
445 };
446 
447 
453 
454  myRootFile=new TFile("clusterPlotter.root","RECREATE");
455  // outTxtFile=new ofstream;
456  // outTxtFile->open("clusters.txt");
457 
458  outTxtFileP=new ofstream;
459  outTxtFileP->open("clustersP.txt");
460  outTxtFileR=new ofstream;
461  outTxtFileR->open("clustersR.txt");
462 
463 
464  Int_t ierr = kStOk;
465  hClusterCharge=new TH1D("clusterCharge","clusterCharge",100, 0, 1000);
466  char buffer[100];
467  hCChargePosSpacePhi=new TH2D*[kFgtNumDiscs*kFgtNumQuads];
468  hCChargePosSpaceR=new TH2D*[kFgtNumDiscs*kFgtNumQuads];
469  hClusSizePhi=new TH2D*[kFgtNumDiscs*kFgtNumQuads];
470  hClusSizeR=new TH2D*[kFgtNumDiscs*kFgtNumQuads];
471  hCChargeElecSpace=new TH2D*[kFgtNumDiscs*kFgtNumQuads];
472  hClusSizeElecSpace=new TH2D*[kFgtNumDiscs*kFgtNumQuads];
473 
474  radioPlots=new TH2D*[kFgtNumDiscs];
475  corrPlots=new TH2D*[kFgtNumDiscs*kFgtNumQuads];
476 
477 
478  for(int iD=0;iD<kFgtNumDiscs;iD++)
479  {
480  for(int iQ=0;iQ<kFgtNumQuads;iQ++)
481  {
482  sprintf(buffer,"clusterChargeDisk%d_Quad%d_phi",iD,iQ);
483  hCChargePosSpacePhi[iD*kFgtNumQuads+iQ]=new TH2D(buffer,buffer,200,-4,4, 200, 0, 2000);
484  sprintf(buffer,"clusterChargeDisk%d_Quad%d_R",iD,iQ);
485  hCChargePosSpaceR[iD*kFgtNumQuads+iQ]=new TH2D(buffer,buffer,200,10,35, 200, 0, 2000);
486  sprintf(buffer,"clusterSizeDisk%d_Quad%d_phi",iD,iQ);
487  hClusSizePhi[iD*kFgtNumQuads+iQ]=new TH2D(buffer,buffer,1000,-4,4, 20, 0, 20);
488  sprintf(buffer,"clusterSizeDisk%d_Quad%d_R",iD,iQ);
489  hClusSizeR[iD*kFgtNumQuads+iQ]=new TH2D(buffer,buffer,1000,10,35, 20, 0, 20);
490  sprintf(buffer,"clusterSizeDisk%d_Quad%d_ElecSpace",iD,iQ);
491  hClusSizeElecSpace[iD*kFgtNumQuads+iQ]=new TH2D(buffer,buffer,100,0,1000, 20, 0, 20);
492  sprintf(buffer,"clusterChargeDisk%d_Quad%d_ElecSpace",iD,iQ);
493  hCChargeElecSpace[iD*kFgtNumQuads+iQ]=new TH2D(buffer,buffer,100,0,1000, 100, 0, 2000);
494  sprintf(buffer,"radioDisk%d_Quad_%d",iD,iQ);
495  radioPlots[iD]=new TH2D(buffer,buffer,100,-50,50,100,-50,50);
496  sprintf(buffer,"r_phi_ChargeCorr%d_Quad_%d",iD,iQ);
497  corrPlots[iD*kFgtNumQuads+iQ]=new TH2D(buffer,buffer,100,0,2000,100,0,2000);
498  }
499  }
500  return ierr;
501 };
502 ClassImp(StFgtClusterPlotter);
virtual Int_t Make()
Definition: Stypes.h:41
Cluster Plotter.