6 #include <TFitResult.h>
7 #include <TFitResultPtr.h>
9 #include <JANA/JApplication.h>
43 TDirectory *
main = gDirectory;
45 gDirectory->mkdir(
"TOF_TDC_shift")->cd();
48 hrocTimeRemainder_AdcTdcTimeDiff =
new TH2I(
"hrocTimeRemainder_AdcTdcTimeDiff",
";t_{ADC} - t_{TDC};TI % 6",4000,-1500,500,6,-0.5,5.5);
49 hrocTimeRemainder_AdcTdcTimeDiff_corrected =
new TH2I(
"hrocTimeRemainder_AdcTdcTimeDiff_corrected",
";t_{ADC} - t_{TDC};TI % 6",600,-30,30,6,-0.5,5.5);
60 sprintf(filename,
"TOF_TDC_shift_%6.6d.txt",runnumber);
73 vector<const DTOFHit*> dtofhits;
74 vector<const DTOFDigiHit*> dtofdigihits;
75 vector<const DTOFTDCDigiHit*> dtoftdcdigihits;
76 vector<const DCODAROCInfo*> dcodarocinfo;
79 eventLoop->Get(dtofhits);
80 eventLoop->Get(dtofdigihits);
81 eventLoop->Get(dtoftdcdigihits);
82 eventLoop->Get(dcodarocinfo);
84 Int_t TriggerBIT = -1;
85 for(UInt_t i=0;i<dcodarocinfo.size();i++){
86 Int_t rocid = dcodarocinfo[i]->rocid;
90 ULong64_t rocTime = dcodarocinfo[i]->timestamp;
91 TriggerBIT = rocTime % 6;
98 japp->RootFillLock(
this);
101 for(UInt_t tof = 0;tof<dtofdigihits.size();tof++){
102 for(UInt_t tof_TDC = 0;tof_TDC<dtoftdcdigihits.size();tof_TDC++){
107 if(TriggerBIT != -1){
108 Double_t adc_time = dtofdigihits[tof]->pulse_time *
ADC_BIN;
109 Double_t tdc_time = (Double_t)dtoftdcdigihits[tof_TDC]->time *
TDC_BIN;
110 Double_t diff = adc_time - tdc_time;
112 hrocTimeRemainder_AdcTdcTimeDiff->Fill(diff, TriggerBIT);
117 for(UInt_t tof = 0;tof<dtofhits.size();tof++){
118 double diff = dtofhits[tof]->t_fADC - dtofhits[tof]->t_TDC;
119 hrocTimeRemainder_AdcTdcTimeDiff_corrected->Fill(diff, TriggerBIT);
122 japp->RootFillUnLock(
this);
142 Double_t
min = +99999;
145 gDirectory->cd(
"TOF_TDC_shift");
161 const double fit_window = 20.;
162 for(Int_t i=0;i<6;i++){
164 sprintf(hname,
"TOF_TDC_shift/h%d",i);
165 hproj = (TH1I*)hrocTimeRemainder_AdcTdcTimeDiff->ProjectionX(hname,i+1,i+1);
168 double maximum = hproj->GetBinCenter(hproj->GetMaximumBin());
169 TFitResultPtr fr = hproj->Fit(
"gaus",
"S",
"", maximum - fit_window, maximum + fit_window);
171 mean[i] = fr->Parameter(1);;
173 mean[i] = hproj->GetMean();
175 cout <<
"TI remainder = " << i <<
" mean = " << mean[i] << endl;
176 if(fabs(mean[i]) < fabs(min)){
sprintf(text,"Post KinFit Cut")
jerror_t evnt(jana::JEventLoop *eventLoop, uint64_t eventnumber)
Called every event.
jerror_t fini(void)
Called after last event of last event source has been processed.
jerror_t brun(jana::JEventLoop *eventLoop, int32_t runnumber)
Called everytime a new run number is detected.
jerror_t init(void)
Called once at program start.
JEventProcessor_TOF_TDC_shift()
jerror_t erun(void)
Called everytime run number changes, provided brun has been called.
~JEventProcessor_TOF_TDC_shift()
int main(int argc, char *argv[])