7 #include "StFcsEpdQaMaker.h"
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/StEpdCollection.h"
14 #include "StRoot/StEvent/StFcsHit.h"
15 #include "StRoot/StEvent/StEpdHit.h"
16 #include "StRoot/StFcsDbMaker/StFcsDb.h"
17 #include "StRoot/StSpinPool/StFcsRawDaqReader/StFcsRawDaqReader.h"
28 StFcsEpdQaMaker::StFcsEpdQaMaker(
const Char_t* name) :
StMaker(name) {
29 sprintf(mFilename,
"0.epdqa.root");
32 StFcsEpdQaMaker::~StFcsEpdQaMaker(){};
34 Int_t StFcsEpdQaMaker::Init(){
35 mFcsDb =
static_cast<StFcsDb*
>(GetDataSet(
"fcsDb"));
37 LOG_FATAL <<
"Error finding StFcsDb"<< endm;
41 if(mFilename[0]==0 && mRun>0){
43 sprintf(mFilename,
"%d/%d.epdqa.root",yday,mRun);
44 printf(
"StFcsEpdQaMaker::Init - Opening %s\n",mFilename);
46 mFile=
new TFile(mFilename,
"RECREATE");
49 for(
int i=0; i<16; i++){
50 sprintf(t,
"QtDepAdcCh%d",i);
51 sprintf(tt,
"Dep01Ch%d-PP10TT%d; QTADC; DEP Fit Integral",i,i*2);
52 mQtDepA[i] =
new TH2F(t,tt,256,0,1024,256,0,1024*4);
53 sprintf(t,
"QtDepTacCh%d",i);
54 sprintf(tt,
"Dep01Ch%d-PP10TT%d; QTTAC; DEP Peak Timebin",i,i*2);
55 mQtDepT[i] =
new TH2F(t,tt,100,0,3000,100,45,56);
56 sprintf(t,
"QtDepRatCh%d",i);
57 sprintf(tt,
"Dep01Ch%d-PP10TT%d; DEP Peak Timebin; QTADC/DEPIntg;",i,i*2);
58 mQtDepR[i] =
new TH2F(t,tt,100,44,57,100,0.0,0.8);
73 trg = fcsraw->trgdata();
75 LOG_INFO <<
"Canot find Trigger Data from StFcsRawDaqReader" << endm;
78 trg=
event->triggerData();
80 LOG_INFO <<
"Canot find Trigger Data from StEvent" << endm;
88 tofmult = trg->tofMultiplicity();
98 unsigned short lastdsm5 = trg->lastDSM(5);
99 printf(
"lastdsm5=%04x tofmult=%d\n",lastdsm5,tofmult);
103 LOG_INFO <<
"No StEvent found" << endm;
105 mFcsCollection=
event->fcsCollection();
106 mEpdCollection=
event->epdCollection();
109 LOG_INFO <<
"No StFcsCollection found" << endm;
113 LOG_INFO <<
"No StEpdCollection found" << endm;
117 for(
int det=kFcsPresNorthDetId; det<kFcsNDet; det++){
118 int nhit=mFcsCollection->numberOfHits(det);
119 printf(
"StFcsEpdQaMaker found %d hits for det=%d\n",nhit,det);
120 if(nhit<=0)
continue;
121 StSPtrVecFcsHit& hits = mFcsCollection->hits(det);
122 for (
int i=0; i<nhit; i++){
123 int id = hits[i]->id();
124 int ehp = hits[i]->ehp();
125 int ns = hits[i]->ns();
126 int dep = hits[i]->dep();
127 int ch = hits[i]->channel();
128 int ntb = hits[i]->nTimeBin();
132 if(pp!=10 || ch>=16 || ch<0)
continue;
137 fititeg = hits[i]->adcSum();
138 fitpeak = hits[i]->fitPeak();
143 int nepd = mEpdCollection->epdHits().size();
145 for(
int j=0; j<nepd; j++){
146 StEpdHit* epd = mEpdCollection->epdHits()[j];
147 int ew = epd->
side();
149 int ett = epd->
tile();
150 if(ew==1 && epp==pp && ett==tt){
156 printf(
" Dep=%02d Ch=%02d PP=%02d TT=%02d QT=%4d DEP=%6.1f TAC=%4d PEAK=%4.2f\n",
157 dep,ch,pp,tt,adc,fititeg,tac,fitpeak);
158 mQtDepA[ch]->Fill(adc,fititeg);
159 mQtDepT[ch]->Fill(tac,fitpeak);
161 mQtDepR[ch]->Fill(fitpeak,
float(adc)/fititeg);
172 printf(
"StFcsEpdQaMaker::Finish - Closing %s\n",mFilename);
short side() const
+1 if tile is on West side; -1 if on East side
int position() const
position of supersector on a wheel [1,12]
int adc() const
ADC value [0,4095].
void getEPDfromId(int det, int id, int &pp, int &tt)
Get FCS's EPD map foom EPD mapping.
Stores information for tiles in STAR Event Plane Detector.
int tile() const
tile on the supersector [1,31]
int tac() const
TAC value [0,4095].