StRoot  1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
StFcsQaMaker.cxx
1 /*
2  *
3  * \class StFcsQaMaker
4  *
5  */
6 
7 #include "StFcsQaMaker.h"
8 
9 #include "StRoot/StEvent/StEvent.h"
10 #include "StRoot/St_base/StMessMgr.h"
11 #include "StRoot/StEvent/StTriggerData.h"
12 #include "StRoot/StEvent/StFcsCollection.h"
13 #include "StRoot/StEvent/StFcsHit.h"
14 #include "StRoot/StEvent/StFcsCluster.h"
15 #include "StRoot/StFcsDbMaker/StFcsDb.h"
16 #include "StRoot/StSpinPool/StFcsRawDaqReader/StFcsRawDaqReader.h"
17 
18 #include "TH1F.h"
19 #include "TH2F.h"
20 #include "TString.h"
21 #include "TFile.h"
22 #include "TCanvas.h"
23 
24 #include <string.h>
25 #include <time.h>
26 
27 StFcsQaMaker::StFcsQaMaker(const Char_t* name) : StMaker(name) {};
28 
29 StFcsQaMaker::~StFcsQaMaker(){};
30 
31 Int_t StFcsQaMaker::Init(){
32  mFcsDb = static_cast<StFcsDb*>(GetDataSet("fcsDb"));
33  if(!mFcsDb){
34  LOG_FATAL << "Error finding StFcsDb"<< endm;
35  return kStFatal;
36  }
37 
38  // if(mPedSub>0 || mDump>0) mFcsDbMkr->readPedFromText();
39 
40  if(mSetFile==0){
41  int yday=mRun/1000;
42  sprintf(mFilename,"%d/%d.root",yday,mRun);
43  printf("StFcsQaMaker::Init - Opening %s\n",mFilename);
44  }else{
45  sprintf(mFilename,"%s",mSetFile);
46  }
47  mFile=new TFile(mFilename,"RECREATE");
48 
49  const char* nameEHP[kFcsEHP] = {"Ecal","Hcal","Pres"};
50  const char* nameNS[kFcsNorthSouth] = {"N","S"};
51  char t[100],t2[100],t3[100];
52 
53  mDataSize = new TH1F("DataSize","DataSize",100,-1.0,7.0);
54  mEsum[0] = new TH1F("EcalESum","EcalESum",100,0.0,10.0);
55  mEsum[1] = new TH1F("HcalESum","HcalESum",100,0.0,10.0);
56  mEsum[2] = new TH1F("TotESum", "TotESum", 100,0.0,10.0);
57 
58  for(int det=0; det<kFcsNDet; det++){
59  int ns = mFcsDb->northSouth(det);
60  int ehp = mFcsDb->ecalHcalPres(det);
61  int maxid = mFcsDb->maxId(det);
62 
63  if(maxid==0) continue;
64 
65  sprintf(t,"%4s_%1s_IdTbinAdc",nameEHP[ehp],nameNS[ns]);
66  sprintf(t2,"%4s_%1s; Id; Tbin",nameEHP[ehp],nameNS[ns]);
67  mAdcTb2[det] = new TH2F(t,t2,
68  maxid, 0.0, float(maxid),
69  mNTimeBins, 0.0, float(mNTimeBins));
70 
71  for(int id=0; id<maxid; id++){
72  mFcsDb->getName(det,id,t3);
73  int ehp2,ns2,crt,sub,dep,ch;
74  mFcsDb->getDepfromId(det,id,ehp2,ns2,crt,sub,dep,ch);
75  sprintf(t ,"%4s_%1s_TbinAdc_id%03d",nameEHP[ehp],nameNS[ns],id);
76  sprintf(t2,"%s; TBin; ADC",t3);
77  //printf("%s %s\n",t,t2);
78  mAdcTb[det][id] = new TH2F(t,t2,
79  mNTimeBins, 0.0, float(mNTimeBins),
80  512, 0.0, float(mMaxAdc));
81  }
82 
83  sprintf(t,"%4s_%1s_Adc",nameEHP[ehp],nameNS[ns]);
84  sprintf(t2,"%4s_%1s; DEP+ch/32; ADC",nameEHP[ehp],nameNS[ns]);
85  int maxdep = mFcsDb->getNDep(ehp,ns);
86  int maxdepch = maxdep * kFcsMaxDepCh;
87  mAdcId[det] = new TH2F(t,t2,
88  maxdepch, 0.0, float(maxdep),
89  256, 0.0, float(mMaxAdc));
90  mAdcId[det]->GetXaxis()->SetNdivisions(-maxdep);
91 
92  sprintf(t,"%4s_%1s_ped",nameEHP[ehp],nameNS[ns]);
93  sprintf(t2,"%4s_%1s_Ped; DEP+ch/32; ADC",nameEHP[ehp],nameNS[ns]);
94  mAdcIdp[det] = new TH2F(t,t2,
95  maxdepch, 0.0, float(maxdep),
96  4096, 0.0, 4096);
97  mAdcId[det]->GetXaxis()->SetNdivisions(-maxdep);
98 
99  sprintf(t,"%4s_%1s_IdSum",nameEHP[ehp],nameNS[ns]);
100  sprintf(t2,"%4s_%1s; id; AdcSum(TB=%d-%d)",nameEHP[ehp],nameNS[ns],mMinTB,mMaxTB);
101  mAdcSumId[det] = new TH2F(t,t2,
102  maxid, 0.0, float(maxid),
103  200, 0.0, float(mMaxAdcSum));
104 
105  sprintf(t,"%4s_%1s_IdTime",nameEHP[ehp],nameNS[ns]);
106  sprintf(t2,"%4s_%1s; id; MeanTimeBin",nameEHP[ehp],nameNS[ns]);
107  mTimeId[det] = new TH2F(t,t2,
108  maxid, 0.0, float(maxid),
109  200, mMinTB, mMaxTB);
110 
111  sprintf(t,"%4s_%1s_FitIntg",nameEHP[ehp],nameNS[ns]);
112  sprintf(t2,"%4s_%1s; DEP+ch/32; FitIntegral",nameEHP[ehp],nameNS[ns]);
113  mFitIntg[det] = new TH2F(t,t2,
114  maxdepch, 0.0, float(maxdep),
115  400, 0.0, float(mMaxAdcSum));
116 
117  sprintf(t,"%4s_%1s_FitSigm",nameEHP[ehp],nameNS[ns]);
118  sprintf(t2,"%4s_%1s; DEP+ch/32; FitSigma[TB]",nameEHP[ehp],nameNS[ns]);
119  mFitSigm[det] = new TH2F(t,t2,
120  maxdepch, 0.0, float(maxdep),
121  100, 0.0, 5.0);
122 
123  sprintf(t,"%4s_%1s_FitTime",nameEHP[ehp],nameNS[ns]);
124  sprintf(t2,"%4s_%1s; DEP+ch/32; FitPeakTime[TB]",nameEHP[ehp],nameNS[ns]);
125  mFitTime[det] = new TH2F(t,t2,
126  maxdepch, 0.0, float(maxdep),
127  200, mMinTB, mMaxTB);
128 
129  sprintf(t,"%4s_%1s_FitChi2",nameEHP[ehp],nameNS[ns]);
130  sprintf(t2,"%4s_%1s; DEP+ch/32; FitChi2",nameEHP[ehp],nameNS[ns]);
131  mFitChi2[det] = new TH2F(t,t2,
132  maxdepch, 0.0, float(maxdep),
133  100, 0.0, 400.0);
134 
135  sprintf(t,"%4s_%1s_NHit",nameEHP[ehp],nameNS[ns]);
136  sprintf(t2,"%4s_%1s; NHit",nameEHP[ehp],nameNS[ns]);
137  mNHit[det] = new TH1F(t,t2,maxid,0.0,float(maxid+1));
138 
139  if(ehp<2){ //clusters for Ecasl/Hcal
140  sprintf(t,"%4s_%1s_NCluster",nameEHP[ehp],nameNS[ns]);
141  mNClu[det] = new TH1F(t,t,10,0.0,10.0);
142 
143  sprintf(t,"%4s_%1s_NTowClu",nameEHP[ehp],nameNS[ns]);
144  mNTowClu[det] = new TH1F(t,t,10,0.0,10.0);
145 
146  sprintf(t,"%4s_%1s_NNeiClu",nameEHP[ehp],nameNS[ns]);
147  mNNeiClu[det] = new TH1F(t,t,10,0.0,10.0);
148 
149  for(int id=0; id<maxid; id++){
150  mFcsDb->getName(det,id,t2);
151  sprintf(t ,"%1s%1s%03d_NTowClu_E",nameEHP[ehp],nameNS[ns],id);
152  sprintf(t2 ,"%22s_NTowClu_E",t2);
153  mNTowEClu[det][id] = new TH2F(t,t2,10,1.0,11.0,100,0.0,10.0);
154 
155  sprintf(t ,"%1s%1s%03d_NTowCluIso_E",nameEHP[ehp],nameNS[ns],id);
156  sprintf(t2 ,"%22s_NTowCluIso_E",t2);
157  mNTowECluIso[det][id] = new TH2F(t,t2,10,1.0,11.0,100,0.0,10.0);
158 
159  sprintf(t ,"%1s%1s%03d_NTowCluIsoH_E",nameEHP[ehp],nameNS[ns],id);
160  sprintf(t2 ,"%22s_NTowCluIsoH_E",t2);
161  mNTowECluIsoH[det][id] = new TH2F(t,t2,10,1.0,11.0,100,0.0,10.0);
162  }
163  }
164  }
165  mTimeEvt=new TH2F("TimeEvt","TimeEvent; Event; Sector Avg MeanTB",100,0,100,500,mMinTB+1.5,mMaxTB-1.5);
166  memset(mTimeE,0,sizeof(mTimeE));
167 
168  int ecal_xmax = mFcsDb->nColumn(0);
169  int ecal_ymax = mFcsDb->nRow(0);
170  mHitMap[0] = new TH2F("EcalView","Ecal View from Back; +-Col (North <-> South); -Row (Bottom <-> Top)",
171  ecal_xmax*2+1,-ecal_xmax-0.5,ecal_xmax+0.5,
172  ecal_ymax,-ecal_ymax-0.5,-0.5);
173 
174  int hcal_xmax = mFcsDb->nColumn(2);
175  int hcal_ymax = mFcsDb->nRow(2);
176  mHitMap[1] = new TH2F("HcalView","Hcal View from Back; +-Col (North <-> South); -Row (Bottom <-> Top)",
177  hcal_xmax*2+1,-hcal_xmax-0.5,hcal_xmax+0.5,
178  hcal_ymax,-hcal_ymax-0.5,-0.5);
179 
180  int pres_xmax = mFcsDb->nColumn(4);
181  int pres_ymax = mFcsDb->nRow(4);
182  mHitMap[2] = new TH2F("PresView","Pres View from Back; +-Radius (North <-> South); -Phi (Bottom <-> Top)",
183  pres_xmax*2+1,-pres_xmax-0.5,pres_xmax+0.5,
184  pres_ymax,-pres_ymax-0.5,-0.5);
185 
186  return kStOK;
187 };
188 
190  mFcsCollection=0;
191  StTriggerData* trg=0;
192 
193  //Getting StFcsRawDaqReader and TriggerData
194  StFcsRawDaqReader* fcsraw=(StFcsRawDaqReader*)GetMaker("daqReader");
195  StEvent* event= (StEvent*)GetInputDS("StEvent");
196  if(fcsraw){
197  //Getting trigger data (if daq file)
198  trg = fcsraw->trgdata();
199  if(!trg){
200  LOG_DEBUG << "Canot find Trigger Data from StFcsRawDaqReader" << endm;
201  }
202  }else if(event){
203  trg=event->triggerData();
204  if(!trg){
205  LOG_DEBUG << "Canot find Trigger Data from StEvent" << endm;
206  }
207  }
208 
209  //tof multiplicity from trigger data
210  int tofmult = 0;
211  //check if FCS was readout for this event
212  if(trg){
213  tofmult = trg->tofMultiplicity();
214  unsigned short detmask=trg->getTrgDetMask();
215  printf("TrgDetMask = %4x\n",detmask);
216  if(! ((detmask >> 30) & 0x1)){ //FCS_ID=30 but detmask is 16bit:O
217  printf("No FCS readout for this event detmask=%x\n",detmask);
218  //return kStOK;
219  }
220  unsigned short lastdsm4 = trg->lastDSM(4);
221  unsigned short fcs2019 = (lastdsm4 >> 10) & 0x1;
222  printf("fcs2019=%1d\n",fcs2019);
223  }
224 
225  if(!event) {
226  LOG_INFO << "No StEvent found" << endm;
227  }else{
228  mFcsCollection=event->fcsCollection();
229  }
230  if(!mFcsCollection){
231  LOG_INFO << "No StFcsCollection found" << endm;
232  return kStErr;
233  }
234 
235  static int nevt=0;
236  int nfcsdata=0;
237  int nh[kFcsNDet]; memset(nh,0,sizeof(nh));
238  int sum[kFcsNDet][kFcsEcalMaxId]; memset(sum,0,sizeof(sum));
239  int esum[kFcsNDet][kFcsEcalMaxId]; memset(esum,0,sizeof(sum));
240  float atot[kFcsNDet]; memset(atot,0,sizeof(atot));
241  float etot[kFcsNDet]; memset(etot,0,sizeof(etot));
242  float meantb=0;
243  int nmean=0;
244 
245  for(int det=0; det<kFcsNDet; det++){ //det==kFcsDet is for empty channel
246  int nhit=mFcsCollection->numberOfHits(det);
247  // printf("StFcsQaMaker found %d hits for det=%d in event#=%d\n",nhit,det,nevt);
248  if(nhit<=0) continue;
249  StSPtrVecFcsHit& hits = mFcsCollection->hits(det);
250  for (int i=0; i<nhit; i++){
251  nfcsdata++;
252  int id = hits[i]->id();
253  int ehp = hits[i]->ehp();
254  int ns = hits[i]->ns();
255  int dep = hits[i]->dep();
256  int ch = hits[i]->channel();
257  float depch=dep+(ch+0.5)/32.0;
258  int ntb = hits[i]->nTimeBin();
259  float ped=0.0;
260  if(mPedSub>0) ped=mFcsDb->pedestal(ehp,ns,dep,ch);
261 
262  //time from StFcsHit
263  mTimeId[det]->Fill((float)id, hits[i]->fitPeak());
264  if(det<4 && hits[i]->adcSum() > 100){
265  nmean++;
266  meantb+=hits[i]->fitPeak();
267  }
268  mTimeE[det][id][mEvent]=hits[i]->fitPeak();
269 
270  //from fits
271  float chi2=hits[i]->fitChi2();
272  if(chi2>0.0){
273  mFitIntg[det]->Fill(depch,hits[i]->adcSum());
274  mFitSigm[det]->Fill(depch,hits[i]->fitSigma());
275  mFitTime[det]->Fill(depch,hits[i]->fitPeak());
276  mFitChi2[det]->Fill(depch,chi2);
277  }
278 
279  /*
280  int c = mFcsDb->getColumnNumber(det,id);
281  int r = mFcsDb->getRowNumber(det,id);
282  float x = c * (ns*2-1);
283  float y = -r;
284  printf("ehp=%d x=%f y=%f adcsum=%f\n",ehp,x,y,hits[i]->adcSum());
285  mHitMap[ehp]->Fill(x,y,hits[i]->adcSum());
286  */
287 
288  for(int j=0; j<ntb; j++){
289  unsigned short adc = hits[i]->adc(j);
290  unsigned short tb = hits[i]->timebin(j);
291  if(det<kFcsNDet){ //connected channel
292  //printf("%1d %1d %2d %2d %4d %f %f\n",ehp,ns,dep,ch,adc,ped,adc-ped);
293  mAdcTb2[det]->Fill(id,tb,adc);
294  mAdcTb[det][id]->Fill(tb,adc);
295  if(tb>=mMinTB && tb<=mMaxTB) {
296  sum[det][id] += (adc - ped);
297  // printf("det=%1d id=%3d tb=%3d adc=%4d ped=%6.2f adc-ped=%6.2f\n",det,id,tb,adc,ped,adc-ped);
298  }
299  mAdcId[det]->Fill(depch,float(adc));
300  if(tb>=mMinTBp && tb<=mMaxTBp) mAdcIdp[det]->Fill(depch,float(adc));
301  }else{ // empty channel
302  if(ch<32){
303  int ns2 = hits[i]->ns();
304  int ehp2= hits[i]->ehp();
305  int det2=mFcsDb->detectorId(ehp2,ns2);
306  if(det2>=0 && det2<kFcsNDet)
307  mAdcId[det2]->Fill(float(depch),float(adc));
308  }
309  }
310  }
311  if(det<kFcsNDet && ch<32){
312  float e = hits[i]->energy();
313  etot[det] += e;
314  }
315  }
316  if(det<kFcsNDet){
317  int maxid = mFcsDb->maxId(det);
318  int ehp=det/2;
319  int ns=det%2;
320  for(int id=0; id<maxid; id++){
321  if(sum[det][id]>0){
322  mAdcSumId[det]->Fill((float)id, float(sum[det][id]));
323  nh[det]++;
324  atot[det]+=sum[det][id];
325 
326  int c = mFcsDb->getColumnNumber(det,id);
327  int r = mFcsDb->getRowNumber(det,id);
328  float x = c * (ns*2-1);
329  float y = -r;
330  mHitMap[ehp]->Fill(x,y,float(sum[det][id]));
331  }
332  }
333  mNHit[det]->Fill(float(nh[det]));
334  mEsum[0]->Fill(etot[0]+etot[1]);
335  mEsum[1]->Fill(etot[2]+etot[3]);
336  mEsum[2]->Fill(etot[0]+etot[1]+etot[2]+etot[3]);
337 
338  if(mDump>0){
339  int oldid=-1;
340  for (int i=0; i<nhit; i++){
341  int id = hits[i]->id();
342  int ehp = hits[i]->ehp();
343  int ns = hits[i]->ns();
344  int dep = hits[i]->dep();
345  int ch = hits[i]->channel();
346  int ntb = hits[i]->nTimeBin();
347  float ped = mFcsDb->pedestal(ehp,ns,dep,ch);
348  char name[22];
349  mFcsDb->getName(det,id,name);
350  if(mDump==1 && sum[det][id]>50){
351  printf("\nFCSDump %5d %22s %4d %5.1f %5d ",nevt,name,ntb,ped,sum[det][id]);
352  for(int j=0; j<ntb; j++) printf("%4d ",hits[i]->adc(j));
353  // }else if(mDump==2 && det==1 && id==50){
354  // }else if(mDump==2 && det==1 && (id==32 || id==18)){
355  }else if(mDump==2 && det==1 && id==12){
356  printf("\nFCSDump %5d %22s %5.1f %5d ",nevt,name,ped,sum[det][id]);
357  int max=0, min=4000;
358  for(int j=0; j<ntb; j++){
359  unsigned int adc=hits[i]->adc(j);
360  unsigned int tb =hits[i]->timebin(j);
361  if(adc>max) max=adc;
362  if(adc<min) min=adc;
363  printf("%4d ",adc);
364  }
365  if(max-min>6) printf(" !!! min=%d max=%d diff=%d",min,max,max-min);
366  }
367  }
368  printf("\n");
369  }
370  }
371  }
372  float avg=0.0;
373  if(nmean>0) avg=meantb/float(nmean);
374  // printf("EVT=%3d SECTOR Avg Mean TB= %f / %d = %f \n",mEvent,meantb,nmean,avg);
375  mTimeEvt->Fill((float)mEvent,avg);
376 
377  //for Ecal/Hcal only for clusters
378  for(int det=0; det<kFcsNDet; det++){
379  if(det<=kFcsHcalSouthDetId){
380  int nclu=mFcsCollection->numberOfClusters(det);
381  //printf("StFcsQaMaker found %d cluster for det=%d in event#=%d\n",nclu,det,nevt);
382  if(nclu<=0) continue;
383  StSPtrVecFcsCluster& clusters = mFcsCollection->clusters(det);
384  mNClu[det]->Fill(nclu);
385  for (int i=0; i<nclu; i++){
386  StFcsCluster* cluster=clusters[i];
387  int ntow=cluster->nTowers();
388  int nnei=cluster->nNeighbor();
389  mNTowClu[det]->Fill(ntow);
390  mNNeiClu[det]->Fill(nnei);
391  StPtrVecFcsHit& hits = cluster->hits();
392  int htid = hits[0]->id();
393  mNTowEClu[det][htid]->Fill(ntow,cluster->energy());
394  if(nnei==0) {
395  mNTowECluIso[det][htid]->Fill(ntow,cluster->energy());
396  if(atot[3]>100){
397  mNTowECluIsoH[det][htid]->Fill(ntow,cluster->energy());
398  }
399  }
400  }
401  }
402  }
403 
404  mDataSize->Fill(log10(nfcsdata));
405  nevt++;
406  return kStOK;
407 };
408 
410  mFile->Write();
411  mFile->Close();
412 
413  /*
414  float avg[kFcsNDet][kFcsEcalMaxId];
415  char* nameEHP[kFcsEHP] = {"E","H","P"};
416  char* nameNS[kFcsNorthSouth] = {"N","S"};
417  for(int det=0; det<4; det++){
418  int maxid=mFcsDb->maxId(det);
419  for(int id=0; id<maxid; id++){
420  for(int evt=0; evt<100; evt++){
421  avg[det][id]+=mTimeE[det][id][evt];
422  }
423  avg[det][id]/=100.0;
424  }
425  }
426  char name[100];
427  for(int ehp=0; ehp<2; ehp++){
428  for(int ns=0; ns<kFcsNorthSouth; ns++){
429  int ndep=mFcsDb->getNDep(ehp,ns);
430  for(int dep=0; dep<ndep; dep++){
431  for(int evt=0; evt<100; evt++){
432  printf("MT %1s%1sDEP%02d %2d : ",nameEHP[ehp],nameNS[ns],dep,evt);
433  for(int ch=0; ch<kFcsMaxDepCh; ch++){
434  int det,id,crt,slt;
435  mFcsDb->getIdfromDep(ehp,ns,dep,ch,det,id,crt,slt);
436  printf("%5.1f ",0.5+107.0/8.0*(mTimeE[det][id][evt]-avg[det][id]));
437  // if(ch%8==7) printf("| ");
438  }
439  printf("\n",name);
440  }
441  }
442  }
443  }
444  */
445 
446  printf("StFcsQaMaker::Finish - Closing %s\n",mFilename);
447  return kStOK;
448 };
449 
450 ClassImp(StFcsQaMaker);
451 
452 /*
453  * $Id: StFcsQaMaker.cxx,v 1.9 2021/03/30 13:29:27 akio Exp $
454  * $Log: StFcsQaMaker.cxx,v $
455  * Revision 1.9 2021/03/30 13:29:27 akio
456  * StFcsDbMaker->StFcsDb
457  *
458  * Revision 1.8 2021/02/13 21:41:09 akio
459  * sector avg peak time
460  *
461  * Revision 1.7 2021/01/11 14:40:31 akio
462  * Many changes for FCS 2021 comissioning & LED monitor.
463  * Includingplots for backview, fit plots and more.
464  *
465  * Revision 1.6 2020/12/17 21:09:54 akio
466  * add esum
467  *
468  * Revision 1.5 2019/07/19 15:16:29 akio
469  * add tofmult
470  *
471  * Revision 1.4 2019/07/10 03:18:36 akio
472  * fix fcs_id to 30
473  *
474  * Revision 1.3 2019/07/10 03:10:21 akio
475  * added run19 fcs trigger bit
476  *
477  * Revision 1.2 2019/06/21 17:44:46 akio
478  * added cluster plots
479  *
480  * Revision 1.1 2019/06/07 19:06:44 akio
481  * *** empty log message ***
482  *
483  * Revision 1.6 2017/02/25 04:43:08 akio
484  * added checking for trgDetMask for sparse readout (skipping event when FCS was NOT readout)
485  *
486  * Revision 1.5 2017/02/20 19:18:53 akio
487  * added check if we get StFcsRawDawReader
488  *
489  * Revision 1.4 2017/02/18 18:28:21 akio
490  * adding RCC-TCU check
491  *
492  * Revision 1.3 2015/05/30 16:08:00 akio
493  * *** empty log message ***
494  *
495  * Revision 1.2 2015/02/28 02:55:35 akio
496  * fix a bug
497  *
498  * Revision 1.1 2015/02/25 20:03:26 akio
499  * new fcs qa maker
500  *
501  */
int getColumnNumber(int det, int id) const
get the row number for the channel
Definition: StFcsDb.cxx:490
float pedestal(int ehp, int ns, int dep, int ch)
Get EPD&#39;s EPD map from FCS mapping.
Definition: StFcsDb.cxx:2116
int getRowNumber(int det, int id) const
maximum number of id
Definition: StFcsDb.cxx:485
virtual Int_t Finish()
int northSouth(int det) const
Ecal=0, Hcal=1, Pres=2.
Definition: StFcsDb.cxx:430
void getName(int det, int id, char name[])
get the DEP/ch id
Definition: StFcsDb.cxx:505
int detectorId(int eh, int ns) const
6
Definition: StFcsDb.cxx:418
int ecalHcalPres(int det) const
Ecal North=0, Ecal South=1, Hcal North=2, Hcal South=3, Pres=4/5.
Definition: StFcsDb.cxx:423
int getNDep(int ehp, int ns) const
Get Det map.
Definition: StFcsDb.cxx:1044
Definition: Stypes.h:40
int maxId(int det) const
number of column
Definition: StFcsDb.cxx:468
int nRow(int det) const
north or south side
Definition: StFcsDb.cxx:434
virtual Int_t Make()
int nColumn(int det) const
number of rows
Definition: StFcsDb.cxx:451
Definition: Stypes.h:44
void getDepfromId(int detectorId, int id, int &ehp, int &ns, int &crt, int &slt, int &dep, int &ch) const
print ET gain
Definition: StFcsDb.cxx:1018