StRoot  1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
StPmdClusterMaker.cxx
1 /*************************************************
2  *
3  * $Id: StPmdClusterMaker.cxx,v 1.22 2010/05/29 00:47:10 rashmi Exp $
4  * Author: Subhasis Chattopadhyay
5  *************************************************
6  *
7  * Description: Base class for Pmd cluster Maker
8  *
9  *************************************************
10  *
11  * $Log: StPmdClusterMaker.cxx,v $
12  * Revision 1.22 2010/05/29 00:47:10 rashmi
13  * Added a call to new clustering routines in StPmdClustering
14  *
15  * Revision 1.20 2007/11/02 10:59:30 rashmi
16  * Applying hitcalibration; eta,phi wrt primary vertex
17  *
18  * Revision 1.19 2007/10/26 18:14:18 rashmi
19  * fixed some warnings
20  *
21  * Revision 1.18 2007/08/31 10:53:30 rashmi
22  * Included ReadCalibration to read PMD_MIP value from DB;Setting cutoff in StPmdClusteringas 15%PMD_MIP
23  *
24  * Revision 1.17 2007/04/26 04:10:34 perev
25  * Remove StBFChain dependency
26  *
27  * Revision 1.16 2006/02/16 08:35:26 subhasis
28  * fillstevent: mod-1 fixed for CPV
29  *
30  * Revision 1.15 2004/11/15 23:35:47 subhasis
31  * Refs in centroidCal initialised to solve valgrind error
32  *
33  * Revision 1.13 2004/09/22 19:24:55 perev
34  * Leak fixed + mess with i,j indexes
35  *
36  * Revision 1.11 2004/09/03 14:31:53 subhasis
37  * OptHist introduced
38  *
39  * Revision 1.10 2004/07/26 12:01:18 subhasis
40  * sigmaL, sigmaS stored in one place till StPhmdCluster.h modified
41  *
42  * Revision 1.9 2004/07/09 09:15:54 subhasis
43  * numbering convention starts from 0 everywhere for filling StEvent
44  *
45  * Revision 1.7 2004/06/24 13:46:52 subhasis
46  * several changes in clustering code
47  *
48  * 2004/06/24: findCpvCluster() function removed,
49  * findPmdCluster() has been called for both the planes.
50  * New clustering algorithm has been implemented.
51  * Presently we are filling SigmaL only(not SigmaS)
52  * in StEvent with function name sigma() but in
53  * TDataSet both SigmaL and SigmaS are present : Dipak
54  *
55  * Revision 1.6 2004/03/23 05:18:54 subhasis
56  * refclust changed to have correct sigma/ncell
57  *
58  * Revision 1.4 2003/09/02 17:58:48 perev
59  * gcc 3.2 updates + WarnOff
60  *
61  * Revision 1.3 2003/05/14 10:49:12 subhasis
62  * CPV clustering added
63  *
64  *
65  *************************************************/
66 
67 #include<Stiostream.h>
68 #include "TStopwatch.h"
69 #include<assert.h>
70 #include<math.h>
71 #include"TROOT.h"
72 #include<TRandom.h>
73 #include<TBrowser.h>
74 #include<TPad.h>
75 #include<StMessMgr.h>
76 #include<TFile.h>
77 
78 #include "StPmdUtil/StPmdGeom.h"
79 #include "StPmdClusterMaker.h"
80 #include "StPmdAbsClustering.h"
81 #include "StPmdClustering.h"
82 #include "StPmdUtil/StPmdDetector.h"
83 #include "StPmdUtil/StPmdModule.h"
84 #include "StPmdUtil/StPmdCollection.h"
85 #include "StPmdUtil/StPmdClusterCollection.h"
86 #include "StPmdUtil/StPmdCluster.h"
87 
88 #include "StDbLib/StDbManager.hh"
89 #include "StDbLib/StDbTable.h"
90 #include "StDbLib/StDbConfigNode.hh"
91 //ofstream clout("cluster_out.dat");
92 
93 #include "StEventTypes.h"
94 #include "StThreeVectorD.hh"
95 #include "StHelixD.hh"
96 #include "StPhysicalHelixD.hh"
97 #include "StThreeVector.hh"
98 #include "StHelix.hh"
99 #include "SystemOfUnits.h"
100 
101 ClassImp(StPmdClusterMaker)
102 
103  TDataSet *clusterIn;
104 StPmdCollection *cluster_hit;
105 Float_t xv,yv,zv;
106 //--------------------
108 {
109  mOptHist=kFALSE;
110 
111  // To be put false if we are working with simulated data
112  // OR
113  // We are working with data without calibration constants in the DB
114  mOptCalibrate=kFALSE;
115 
116  // For real data, simulation flag has to be off
117  // This is to set the adccutoff to the noiseless limit of 0.4 later
118  mOptSimulate=kFALSE;
119  //mOptSimulate=kTRUE;
120 
121  // PMD analysis with refined clustering on
122  // mOptRefineCluster=kTRUE;
123  // PMD analysis with refined clustering off
124  mOptRefineCluster=kFALSE;
125 
126  cout<<" Default options: mOptCalibrate = "<<mOptCalibrate<<" mOptRefineCluster = "<<mOptRefineCluster<<" mOptSimulate="<<mOptSimulate<<endl;
127  PMD_MIP=0.0;
128 
129 }
130 //-------------------
131 
132 StPmdClusterMaker::~StPmdClusterMaker()
133 {
134 }
135 //---------------------
136 Int_t StPmdClusterMaker::Init()
137 {
138 
139  if(mOptHist)bookHistograms();
140 
141  return StMaker::Init();
142 }
143 //--------------------------------------
144 
145 Int_t StPmdClusterMaker::InitRun(Int_t runnr) {
146 
147  if(Debug())cout<<"StPmdClusterMaker::InitRun with run "<<runnr<<endl;
148 
149  if(mOptCalibrate==kTRUE){
150  ReadCalibrationsConst();
151  }else{
152  cout<<"Not reading the calibration Constants"<<endl;
153  }
154 
155  return StMaker::InitRun(runnr);
156 
157 }
158 
159 //--------------------------------------
160 void StPmdClusterMaker::bookHistograms()
161 {
162  mNclust= new TH1F("Nclust","Nclust (no cut)",100,-0.5,100.5);
163  mNclust1= new TH1F("Nclust1","Nclust (1MIP cut)",100,-0.5,100.5);
164  mNclust2= new TH1F("Nclust2","Nclust (2MIP cut)",100,-0.5,100.5);
165  mNclust3= new TH1F("Nclust3","Nclust (3MIP cut)",100,-0.5,100.5);
166 
167  mSmPmdCluster = new TH1F("Smno_pmd","SuperModule No",24,1.,24.);
168  mEdepPmdCluster = new TH1F("EdepPmd","Energy deposited",10000,0.,10000);
169  mSigmaLPmdCluster = new TH1F("SigmaLClusterPmd","Cluster SigmaL",50,0.5,4.5);
170  mSigmaSPmdCluster = new TH1F("SigmaSClusterPmd","Cluster SigmaS",50,0.5,4.5);
171  mNcellPmdCluster = new TH1F("NcellPmd","No of Cells per cls",50,-0.5,49.5);
172  mEtaPmdCluster = new TH1F("EtaPmd","Eta Distribution",100,-4.,-2.);
173  mPhiPmdCluster = new TH1F("PhiPmd","Phi Distribution",100,-3.14,3.14);
174  mPmdCluster = new TH1F("PmdCluster"," NCluster in PMD",100,0,5000);
175  mPhi2ModPmd = new TH2F("Phi2ModPmd","Phi vs Mod",12,0.5,12.5,360,-3.14,3.14);
176  mHitVscluster = new TH2F("Pmd_hitvsClus","Hit vsclusPMD",50,0.5,50.5,50,0.5,50.5);
177  mSigmaLCpvCluster = new TH1F("SigmaLClusterCpv","Cluster SigmaL",50,0.5,4.5);
178  mSigmaSCpvCluster = new TH1F("SigmaSClusterCpv","Cluster SigmaS",50,0.5,4.5);
179  mSmCpvCluster = new TH1F("Smno_cpv","CPV SuperModule No",24,1.,24.);
180  mEdepCpvCluster = new TH1F("EdepCpv","Cpv Energy deposited",5000,0.,5000.);
181  mNcellCpvCluster = new TH1F("NcellCpv","No of Cellsper cls (CPV)",50,-0.5,49.5);
182  mEtaCpvCluster = new TH1F("EtaCpv","Cpv Eta Distribution",100,-4.,-2.);
183  mPhiCpvCluster = new TH1F("PhiCpv","Cpv Phi Distribution",100,-3.14,3.14);
184  mCpvCluster = new TH1F("CPVCluster"," NCluster in CPV",100,0,5000);
185  mXYCpvCluster = new TH2F("CPV2D" ,"CPV Cluster 2D", 400,-200.,200.,400,-200.,200.);
186  mXYPmdCluster = new TH2F("PMD2D" ,"PMD Cluster 2D", 400,-200.,200.,400,-200.,200.);
187 }
188 //--------------------------------
190 {
191  TStopwatch clock;
192  clock.Start();
193  clusterIn = GetDataSet("PmdSimulator");
194  if(!clusterIn){
195  clusterIn = GetDataSet("pmdReader");
196  }
197  if(!clusterIn){
198  cout<<" No Hit_dataset found, return "<<endl;
199  return kStWarn;
200  }
201  cluster_hit = (StPmdCollection*)clusterIn->Find("PmdCollection");
202 
203  if(!cluster_hit){
204  cout<<" No PmdCollection found, return "<<endl;
205  return kStWarn;
206  }
207 
208 
209  if(cluster_hit)
210  {
211  StPmdDetector * cpv_det = cluster_hit->detector(Int_t(0)); //CPV = 0 in PmdCollection
212  StPmdDetector * pmd_det = cluster_hit->detector(Int_t(1)); //PMD = 1 in PmdCollection
213 
214  // Get the multiplicity of hits on cpv and pmd plane
215 
216  Int_t cpv_hits = cpv_det->numberOfHits();
217  Int_t pre_hits = pmd_det->numberOfHits();
218  cout<<" Number of hits on CPV = "<<cpv_hits<<endl;
219  cout<<" Number of hits on PMD = "<<pre_hits<<endl;
220  if((cpv_hits + pre_hits)>15000){
221  cout<<" The number of hits on PMD are too large"<<endl;
222  cout<<" The existing limit is 15000 hit on CPV+Pre"<<endl;
223  return kStWarn;
224  }
225 
226  // StPmdClustering *clust1; // added for getting pointer to StPmdClustering
227  Int_t choice=1; // Enter choice (it is put as 1, but variable was kept to adopt differt
228  // choice of algo.
229  if(choice==1){
230  if(cpv_det && pmd_det){
231  StPmdClustering *clust1 = new StPmdClustering(pmd_det, cpv_det); //instantiates clustering
232  // If the PMD_MIP is finite (non-zero)
233  if(PMD_MIP>0){
234  // clout<<"PMD_MIP_MPV="<< PMD_MIP<<" in make"<<endl;
235  Double_t adccutoff = (Double_t)(PMD_MIP*0.15);
236  // clout<<" adccutoff="<<adccutoff<<endl;
237  clust1->SetAdcCutOff(adccutoff);
238  }else{
239  if(mOptCalibrate==kFALSE) {
240  clust1->SetAdcCutOff(7.0);
241  clust1->SetOptCalibrate(kFALSE);
242  }
243  }
244  if(mOptSimulate==kTRUE) {
245  cout<<" Simulationflag is ON so the cutoff is set to 0.4"<<endl;
246  clust1->SetAdcCutOff(0.4);
247  clust1->SetOptSimulate(kTRUE);
248  }
249  if(mOptRefineCluster==kFALSE) {
250  cout<<" Refined clustering is put off. (Default = ON)"<<endl;
251  clust1->SetOptRefineCluster(kFALSE);
252  }
253 
254  // Getting the vertex info to set it in StPmdClustering routine.
255  StEvent *currevent = (StEvent*)GetInputDS("StEvent");
256  if(!currevent){
257  cout<<"ClusterMaker **, No StEvent Pointer "<<endl;
258  }
259  StPrimaryVertex* Vertex=currevent->primaryVertex();
260  // if(!Vertex) return kStError;
261  if(Vertex){
262  StThreeVectorF v = Vertex->position();
263  // cout<<"In StPmdClusterMaker: vertex="<<v.x()<<","<<v.y()<<","<<v.z()<<endl;
264  clust1->SetVertexPos(v);
265  }
266 
267  if(clust1)
268  {
269  for(Int_t d=0;d<2;d++) // Loop over detectors
270  {
271  StPmdDetector *det = cluster_hit->detector(d); //PMD = 1 and 0 for CPV in PmdCollection
272  // This uses the new clustering routine
273  clust1->findPmdClusters2(det);
274  // This uses the old clustering routine
275  //clust1->findPmdClusters(det); //! find Clustering
276  } //for loop 'd'
277  }
278  else
279  {
280  cout<<"clust1 not made"<<endl;
281  return kStOK;
282  }
283  FillStEvent(pmd_det,cpv_det);
284  cout<<" Number of pmd clusters="<<((StPmdClusterCollection*)pmd_det->cluster())->Nclusters()<<endl;
285  cout<<" Number of cpv clusters="<<((StPmdClusterCollection*)cpv_det->cluster())->Nclusters()<<endl;
286 
287  // cout<<"stevent filled , to go hist "<<endl;
288  if(mOptHist)FillHistograms(pmd_det,cpv_det);
289  // cout<<"hist filled "<<endl;
290  }
291  } // if loop 'choice'
292  }
293  // clock.Stop();
294  // cout <<"Time to run StPmdClusterEMaker::Make() real = "<<clock.RealTime()<<" cpu = "<<clock.CpuTime()<<" \n";
295  // cout <<"*******************************************************************************************\n\n\n";
296 
297 
298  return kStOK;
299 }
300 //--------------------------
301 void StPmdClusterMaker::Browse(TBrowser *b)
302 {
303  TDataSet::Browse(b);
304 }
305 //---------------------------------------------------
307 {
309  Int_t tothitpmd=0;
310  Int_t tothitcpv=0;
311  for(Int_t id=1;id<=12;id++){
312  if(pmd_det->module_hit(id)>0){
313  Int_t nmh=pmd_det->module_hit(id);
314  tothitpmd+=nmh;
315  }
316 
317  if(cpv_det->module_hit(id)>0){
318  Int_t nmh1=cpv_det->module_hit(id);
319  tothitcpv+=nmh1;
320  }
321  }
322 
323  StPmdClusterCollection* clusters = (StPmdClusterCollection*)pmd_det->cluster();
324  StPmdClusterCollection* cpvclusters = (StPmdClusterCollection*)cpv_det->cluster();
325 
326  Int_t nclust = clusters->Nclusters();
327 
328  Int_t nclust_cpv = cpvclusters->Nclusters();
329 
331  TIter next(clusters->Clusters());
332 
333  StPmdCluster *spmcl1;
334  for(Int_t i=0; i<nclust ; i++)
335  {
336  spmcl1 = (StPmdCluster*)next();
337  Float_t eta=spmcl1->CluEta();
338  Float_t phi=spmcl1->CluPhi();
339  Float_t edep=spmcl1->CluEdep();
340  Float_t sigmaL=spmcl1->CluSigmaL();
341  Float_t sigmaS=spmcl1->CluSigmaS();
342  Int_t mod=spmcl1->Module();
343  Float_t ncell=spmcl1->NumofMems();
344  Float_t xclu = spmcl1->CluX();
345  Float_t yclu = spmcl1->CluY();
346 
347  mSmPmdCluster->Fill(Float_t(mod));
348  mEdepPmdCluster->Fill(edep); // In keV
349  mSigmaLPmdCluster->Fill(sigmaL);
350  mSigmaSPmdCluster->Fill(sigmaS);
351  mNcellPmdCluster->Fill(ncell);
352  mEtaPmdCluster->Fill(eta);
353  mPhiPmdCluster->Fill(phi);
354  mXYPmdCluster->Fill(xclu,yclu);
355  }
356  mHitVscluster->Fill(tothitpmd,Float_t(nclust));
357  mPmdCluster->Fill(nclust);
358  mCpvCluster->Fill(nclust_cpv);
360  TIter nextcpv(cpvclusters->Clusters());
361  StPmdCluster *spmcl2;
362  for(Int_t i=0; i<nclust_cpv ; i++)
363  {
364  spmcl2 = (StPmdCluster*)nextcpv();
365  Float_t eta=spmcl2->CluEta();
366  Float_t phi=spmcl2->CluPhi();
367  Float_t edep=spmcl2->CluEdep();
368  Int_t mod=spmcl2->Module();
369  Float_t sigmaL=spmcl2->CluSigmaL();
370  Float_t sigmaS=spmcl2->CluSigmaS();
371  Float_t ncell1=spmcl2->NumofMems();
372  Float_t xclu = spmcl2->CluX();
373  Float_t yclu = spmcl2->CluY();
374 
375 
376  mSmCpvCluster->Fill(Float_t(mod));
377  mEdepCpvCluster->Fill(edep); //In keV
378  mSigmaLCpvCluster->Fill(sigmaL);
379  mSigmaSCpvCluster->Fill(sigmaS);
380  mNcellCpvCluster->Fill(ncell1);
381  mEtaCpvCluster->Fill(eta);
382  mPhiCpvCluster->Fill(phi);
383  mXYCpvCluster->Fill(xclu,yclu);
384  }
385 
386 }
387 
389 {
390  return StMaker::Finish();
391 }
392 
393 
394 
395 //---------------------------------------------------
397 {
398  cout<<"Filling StEvent in ClusterMaker"<<endl;
399  // Get StEvent
400  StPhmdCollection * PmdCollection=NULL;
401  StEvent *currevent = (StEvent*)GetInputDS("StEvent");
402  if(!currevent){
403  cout<<"ClusterMaker **, No StEvent Pointer "<<endl;
404  }
405 
406  if(currevent)PmdCollection= currevent->phmdCollection();
407  if(PmdCollection)
408  {
409  StPhmdDetector* evtdet0 = PmdCollection->detector(StDetectorId(kPhmdId));
410  StPhmdDetector* evtdet1 = PmdCollection->detector(StDetectorId(kPhmdCpvId));
411  // add clustercollection
413  cluscollpmd->setClusterFinderId(1);
414  cluscollpmd->setClusterFinderParamVersion(1);
415  //CPV
417  cluscollcpv->setClusterFinderId(1);
418  cluscollcpv->setClusterFinderParamVersion(1);
419 
420  StPmdClusterCollection* clusters = (StPmdClusterCollection*)pmd_det->cluster();
421  StPmdClusterCollection* cpvclusters = (StPmdClusterCollection*)cpv_det->cluster();
422 
423  Int_t nclust = clusters->Nclusters();
424  Int_t nclust_cpv = cpvclusters->Nclusters();
425 
427  if(evtdet0)
428  {
429  evtdet0->setCluster(cluscollpmd);
430  TIter next(clusters->Clusters());
431  StPmdCluster *spmcl1;
432  Int_t clustmip1=0;
433  Int_t clustmip2=0;
434  Int_t clustmip3=0;
435  for(Int_t i=0; i<nclust ; i++)
436  {
437  spmcl1 = (StPmdCluster*)next();
438  Float_t eta=spmcl1->CluEta();
439  Float_t phi=spmcl1->CluPhi();
440  Float_t edep=spmcl1->CluEdep();
441  Float_t sigmaL=spmcl1->CluSigmaL();
442  Float_t sigmaS=spmcl1->CluSigmaS();
443  Int_t tempL=Int_t(sigmaL*1000);
444  Int_t tempS=Int_t(sigmaS*1000);
445  Int_t SigInt=tempL*10000+tempS;
446  if(edep>2.5)clustmip1++;
447  if(edep>5.)clustmip2++;
448  if(edep>7.5)clustmip3++;
449 
450  Int_t mod=spmcl1->Module();
451  Float_t ncell=spmcl1->NumofMems();
452  // if(ncell>2){ cout<<" big cluster ="<<ncell<<endl;}
453  // Filling PmdCluster info in StEvent
454  StPhmdCluster *pcls = new StPhmdCluster();
455  //pcls->setModule(mod); //! Supermodule
456  // supmod filled as 0-11, earlier it was 1-12
457  pcls->setModule(mod-1);
458  pcls->setNumberOfCells(Int_t(ncell));
459  // Commented temporarily because of problem in StEvent
460  // pcls->setNumberOfCells(ncell); //! # of Cells in a cluster
461  pcls->setEta(eta);
462  pcls->setPhi(phi);
463  pcls->setEnergy(edep);
464  pcls->setSigma((Float_t)SigInt);
465  // SigmaL and sigmaS are put together are stored due tolack of
466  // spce for two of them
467  cluscollpmd->addCluster(pcls); // Adding to ClusterCollection in StEvent
468  }
469  if(mOptHist){
470  mNclust->Fill(nclust);
471  mNclust1->Fill(clustmip1);
472  mNclust2->Fill(clustmip2);
473  mNclust3->Fill(clustmip3);
474  }
475  }
476 
478  if(evtdet1)
479  {
480  evtdet1->setCluster(cluscollcpv);
481  TIter nextcpv(cpvclusters->Clusters());
482  StPmdCluster *spmcl2;
483  for(Int_t i=0; i<nclust_cpv ; i++)
484  {
485  spmcl2 = (StPmdCluster*)nextcpv();
486  Float_t eta=spmcl2->CluEta();
487  Float_t phi=spmcl2->CluPhi();
488  Float_t edep=spmcl2->CluEdep();
489  Float_t sigmaL=spmcl2->CluSigmaL();
490  Float_t sigmaS=spmcl2->CluSigmaS();
491  Int_t tempL=Int_t(sigmaL*1000);
492  Int_t tempS=Int_t(sigmaS*1000);
493  Int_t SigInt=tempL*10000+tempS;
494  Int_t mod=spmcl2->Module();
495  Float_t ncell=spmcl2->NumofMems();
496 
497  // Filling PmdCluster for StEvent
498  StPhmdCluster *pcls = new StPhmdCluster();
499  // supmod filled as 0-11, earlier it was 1-12 (earlier version it was a mistake, it was changed for pmd not for cpv)
500  pcls->setModule(mod-1);
501  pcls->setNumberOfCells(Int_t(ncell));
502  // Commented temporarily because of problem in StEvent
503  // pcls->setNumberOfCells(ncell); //! # of Cells in a cluster
504  pcls->setEta(eta);
505  pcls->setPhi(phi);
506  pcls->setEnergy(edep);
507  pcls->setSigma(Float_t(SigInt));
508  cluscollcpv->addCluster(pcls); // Adding to ClusterCollection in StEvent
509  }
510  }
511  }
512  cout<<"Filled PMD StEvent in ClusterMaker"<<endl;
513 }
514 
515 
516 //---------------------------------------------------------------------
517 
518 Bool_t StPmdClusterMaker::ReadCalibrationsConst()
519 {
520  if(Debug())cout<<" I AM IN READCALIB "<<endl;
521 
523  StDbConfigNode* node=mgr->initConfig("Calibrations_pmd");
524  node->setVersion("SMChain");
525 
526  mDb=NULL;
527  TString DbName = "Calibrations/pmd";
528  mDb=GetInputDB(DbName.Data());
529  // clout<<"after mDB"<<endl;
530  if(!mDb) return kFALSE;
531  //clout<<"after !mDb"<<mDb->GetTimeStamp()<<endl;
532 
533  for(Int_t ism=0;ism<24;ism++){
534  for(Int_t chain=0;chain<48;chain++){
535  SM_chain_factor[ism][chain]=0.;
536  }
537  }
538 
539  St_pmdSMChain_GNF * tab = (St_pmdSMChain_GNF*) mDb->Find("pmdSMChain_GNF");
540  if (!tab) {
541  cout<<"No pmdSMChain_GNF DBTable. Stopping."<<endl;
542  return kFALSE;
543  }
544 
545  // clout<<"Got SmChain tables"<<endl;
546 
547  //Getting the PMD_MIP values
548  pmdSMChain_GNF_st* smchain = tab->GetTable(64);
549  PMD_MIP = smchain->mpv_factor;
550  // clout<<"sm="<<smchain->sm<<" chain="<<smchain->chain<<" PMD_MIP_Mean="<<smchain->mean_factor<<" PMD_MIP_MPV="<<smchain->mpv_factor<<endl;
551 
552  return kTRUE;
553 
554 }
555 
Int_t module_hit(Int_t)
module number
StPmdDetector * detector(Int_t)
destructor
Bool_t findPmdClusters2(StPmdDetector *)
for Pmd clusters
Int_t Nclusters() const
destructor
void FillHistograms(StPmdDetector *, StPmdDetector *)
booking histograms
TH1F * mEtaCpvCluster
cluster edep in Cpv
unsigned int numberOfHits() const
for adding hits to detector
TH1F * mCpvCluster
nclust vs. frac. edep in CpvPicoEventWrite(Bool_t flag=kFALSE);
TObjArray * Clusters()
no. of clusters
TH1F * mNclust1
supermodule no for Pmd
TH1F * mSigmaLCpvCluster
cluster edep in Cpv
TH1F * mSmPmdCluster
supermodule no for Pmd
TH2F * mXYPmdCluster
number of Pmd clusters
TH2F * mPhi2ModPmd
eta vs. phi in Pmd
TH1F * mPhiPmdCluster
cluster eta in Pmd
virtual void Browse(TBrowser *b)
Browse this dataset (called by TBrowser).
Definition: TDataSet.cxx:297
TH1F * mEdepCpvCluster
supermodule no for Cpv
void Browse(TBrowser *b)
TH2F * mHitVscluster
phi vs.mod in Pmd
TH1F * mEdepPmdCluster
supermodule no for Pmd
TH1F * mNcellPmdCluster
cluster SigmaS in Pmd
TH1F * mNcellCpvCluster
cluster SigmaS in Cpv
TH1F * mSigmaSCpvCluster
cluster SigmaL in Cpv
TH1F * mNclust2
supermodule no for Pmd
TH1F * mEtaPmdCluster
cluster edep in Pmd
virtual Int_t Make()
Definition: Stypes.h:42
Definition: Stypes.h:40
static StDbManager * Instance()
strdup(..) is not ANSI
Definition: StDbManager.cc:155
virtual Int_t Finish()
Definition: StMaker.cxx:776
TH1F * mNclust3
supermodule no for Pmd
TH1F * mSigmaLPmdCluster
cluster edep in Pmd
TH1F * mPmdCluster
nclust vs. frac. edep in Pmd
TH2F * mXYCpvCluster
number of Cpv clusters
Float_t CluEta() const
number of cells in the cluster as float
Definition: StPmdCluster.h:117
TH1F * mSigmaSPmdCluster
cluster SigmaL in Pmd
TH1F * mPhiCpvCluster
cluster eta in Cpv
virtual Int_t Finish()
void FillStEvent(StPmdDetector *, StPmdDetector *)
virtual TDataSet * Find(const char *path) const
Definition: TDataSet.cxx:362