1 namespace ExtractTrackBasedTimingNS {
4 TH1I *
Get1DHistogram(
const char * plugin,
const char * directoryName,
const char * name){
6 TString fullName = TString(plugin) +
"/" + TString(directoryName) +
"/" + TString(name);
7 thisFile->GetObject(fullName, histogram);
9 cout <<
"Unable to find histogram " << fullName.Data() << endl;
15 TH2I *
Get2DHistogram(
const char * plugin,
const char * directoryName,
const char * name){
17 TString fullName = TString(plugin) +
"/" + TString(directoryName) +
"/" + TString(name);
18 thisFile->GetObject(fullName, histogram);
20 cout <<
"Unable to find histogram " << fullName.Data() << endl;
30 sprintf(command,
"ccdb dump %s:%i:%s", path.Data(),
run, variation.Data());
31 FILE* inputPipe = gSystem->OpenPipe(command,
"r");
36 if(fgets(buff,
sizeof(buff), inputPipe) == NULL)
41 while(fgets(buff,
sizeof(buff), inputPipe) != NULL){
42 istringstream locConstantsStream(buff);
43 while (locConstantsStream >> entry){
45 if (counter %
column == 0) container.push_back(entry);
49 gSystem->ClosePipe(inputPipe);
55 sprintf(command,
"ccdb dump %s:%i:%s", path.Data(),
run, variation.Data());
56 FILE* inputPipe = gSystem->OpenPipe(command,
"r");
61 if(fgets(buff,
sizeof(buff), inputPipe) == NULL)
64 while(fgets(buff,
sizeof(buff), inputPipe) != NULL){
65 istringstream locConstantsStream(buff);
66 locConstantsStream >> constant1;
69 gSystem->ClosePipe(inputPipe);
74 sprintf(command,
"ccdb dump %s:%i:%s", path.Data(),
run, variation.Data());
75 FILE* inputPipe = gSystem->OpenPipe(command,
"r");
80 if(fgets(buff,
sizeof(buff), inputPipe) == NULL)
83 while(fgets(buff,
sizeof(buff), inputPipe) != NULL){
84 istringstream locConstantsStream(buff);
85 locConstantsStream >> constant1 >> constant2;
88 gSystem->ClosePipe(inputPipe);
92 int CCDBIndex = column + row;
93 if (column > 9) CCDBIndex += 5;
94 if (column > 27) CCDBIndex += 5;
95 if (column > 81) CCDBIndex += 5;
96 if (column > 99) CCDBIndex += 5;
103 if (
id >= 132 &&
id <= 172)
throw(
"TAGH: unknown id in [132,172]");
104 int HVid = (
id <= 131) ?
id : (
id - 274 + 233);
105 return int((HVid-1)/N) + 1;
109 package = plane / 6 + 1;
111 if(chamber == 0) chamber = 6;
114 void AdjustTiming(TString fileName =
"hd_root.root",
int runNumber = 10390, TString variation =
"default",
bool verbose =
false,TString prefix =
""){
116 bool FIX_START_COUNTER =
false;
118 double start_counter_t0 = 0.;
121 cout <<
"Performing adjustment timing fits for File: " << fileName.Data() <<
" Run: " << runNumber <<
" Variation: " << variation.Data() << endl;
125 cout <<
"Unable to open file " << fileName.Data() <<
"...Exiting" << endl;
130 vector<double> sc_tdc_time_offsets;
131 vector<double> sc_fadc_time_offsets;
132 vector<double> tof_tdc_time_offsets;
133 vector<double> tof_fadc_time_offsets;
134 vector<double> tagm_tdc_time_offsets;
135 vector<double> tagm_fadc_time_offsets;
136 vector<double> tagh_tdc_time_offsets;
137 vector<double> tagh_fadc_time_offsets;
138 vector<double> tagh_counter_quality;
140 double sc_t_base_fadc, sc_t_base_tdc;
141 double tof_t_base_fadc, tof_t_base_tdc;
142 double bcal_t_base_fadc, bcal_t_base_tdc;
143 double tagm_t_base_fadc, tagm_t_base_tdc;
144 double tagh_t_base_fadc, tagh_t_base_tdc;
145 double fdc_t_base_fadc, fdc_t_base_tdc;
150 cout <<
"Grabbing CCDB constants..." << endl;
154 GetCCDBConstants1(
"/PHOTON_BEAM/RF/beam_period",runNumber, variation, RF_Period);
155 GetCCDBConstants2(
"/FDC/base_time_offset" ,runNumber, variation, fdc_t_base_fadc, fdc_t_base_tdc);
156 GetCCDBConstants2(
"/BCAL/base_time_offset" ,runNumber, variation, bcal_t_base_fadc, bcal_t_base_tdc);
157 GetCCDBConstants2(
"/PHOTON_BEAM/microscope/base_time_offset" ,runNumber, variation, tagm_t_base_fadc, tagm_t_base_tdc);
158 GetCCDBConstants2(
"/PHOTON_BEAM/hodoscope/base_time_offset" ,runNumber, variation, tagh_t_base_fadc, tagh_t_base_tdc);
159 GetCCDBConstants2(
"/START_COUNTER/base_time_offset" ,runNumber, variation, sc_t_base_fadc, sc_t_base_tdc);
160 GetCCDBConstants2(
"/TOF/base_time_offset" ,runNumber, variation, tof_t_base_fadc, tof_t_base_tdc);
164 GetCCDBConstants(
"/START_COUNTER/adc_timing_offsets" ,runNumber, variation, sc_fadc_time_offsets);
165 GetCCDBConstants(
"/START_COUNTER/tdc_timing_offsets" ,runNumber, variation, sc_tdc_time_offsets);
166 GetCCDBConstants(
"/PHOTON_BEAM/microscope/fadc_time_offsets" ,runNumber, variation, tagm_fadc_time_offsets,3);
167 GetCCDBConstants(
"/PHOTON_BEAM/microscope/tdc_time_offsets" ,runNumber, variation, tagm_tdc_time_offsets,3);
168 GetCCDBConstants(
"/PHOTON_BEAM/hodoscope/fadc_time_offsets" ,runNumber, variation, tagh_fadc_time_offsets,2);
169 GetCCDBConstants(
"/PHOTON_BEAM/hodoscope/tdc_time_offsets" ,runNumber, variation, tagh_tdc_time_offsets,2);
170 GetCCDBConstants(
"/PHOTON_BEAM/hodoscope/counter_quality" ,runNumber, variation, tagh_counter_quality,2);
171 GetCCDBConstants(
"/TOF/adc_timing_offsets",runNumber, variation, tof_fadc_time_offsets);
172 GetCCDBConstants(
"/TOF/timing_offsets",runNumber, variation, tof_tdc_time_offsets);
174 cout <<
"CDC base times = " << cdc_t_base << endl;
175 cout <<
"FCAL base times = " << fcal_t_base << endl;
176 cout <<
"FDC base times = " << fdc_t_base_fadc <<
", " << fdc_t_base_tdc << endl;
177 cout <<
"BCAL base times = " << bcal_t_base_fadc <<
", " << bcal_t_base_tdc << endl;
178 cout <<
"SC base times = " << sc_t_base_fadc <<
", " << sc_t_base_tdc << endl;
179 cout <<
"TOF base times = " << tof_t_base_fadc <<
", " << tof_t_base_tdc << endl;
180 cout <<
"TAGH base times = " << tagh_t_base_fadc <<
", " << tagh_t_base_tdc << endl;
181 cout <<
"TAGM base times = " << tagm_t_base_fadc <<
", " << tagm_t_base_tdc << endl;
184 cout <<
"RF_Period = " << RF_Period << endl;
187 cout <<
"Done grabbing CCDB constants...Entering fits..." << endl;
201 if (testHist != NULL){
202 cout <<
"Using RF Times for Calibration" << endl;
332 if(tagmRFalignHist != NULL) {
333 double maximum = tagmRFalignHist->GetBinCenter(tagmRFalignHist->GetMaximumBin());
334 TFitResultPtr fr = tagmRFalignHist->Fit(
"gaus",
"SQ",
"", maximum - 0.3, maximum + 0.3);
335 double meanOffset = fr->Parameter(1);
337 outFile.open(prefix +
"tagm_base_time.txt", ios::out);
339 printf(
"TAGM ADC Base = %f - (%f) = %f\n", tagm_t_base_fadc, meanOffset, tagm_t_base_fadc - meanOffset);
340 printf(
"TAGM TDC Base = %f - (%f) = %f\n", tagm_t_base_tdc, meanOffset, tagm_t_base_tdc - meanOffset);
342 outFile << tagm_t_base_fadc - meanOffset <<
" " << tagm_t_base_tdc - meanOffset << endl;
348 if (thisHist != NULL) {
349 outFile.open(prefix +
"tagh_tdc_timing_offsets.txt", ios::out | ios::trunc);
351 outFile.open(prefix +
"tagh_adc_timing_offsets.txt", ios::out | ios::trunc);
358 int nBinsX = thisHist->GetNbinsX();
359 double taghAdcOffsets[274] = { 0. };
360 double taghTdcOffsets[274] = { 0. };
363 for (
int i = 1 ; i <= nBinsX; i++) {
364 TH1D *projY = taghADCTDCHist->ProjectionY(
"temp", i, i);
366 double nsPerBin = (projY->GetBinCenter(projY->GetNbinsX()) - projY->GetBinCenter(1)) / projY->GetNbinsX();
367 double timeWindow = 2.0;
368 int binWindow = int(timeWindow / nsPerBin);
369 double maxEntries = 0;
371 for (
int j = 1 ; j <= projY->GetNbinsX();j++) {
373 int maxBin = (j + binWindow) <= projY->GetNbinsX() ? (j + binWindow) : projY->GetNbinsX();
374 double sum = 0, nEntries = 0;
375 for (
int bin = minBin; bin <= maxBin; bin++) {
376 sum += projY->GetBinContent(bin) * projY->GetBinCenter(bin);
377 nEntries += projY->GetBinContent(bin);
379 if (nEntries > maxEntries) {
380 maxMean = sum / nEntries;
381 maxEntries = nEntries;
389 if(fabs(maxMean) > 1.5) {
390 if(fabs(maxMean) > 28.)
391 taghTdcOffsets[i-1] = maxMean;
393 taghAdcOffsets[i-1] = maxMean;
413 TH1D * selectedTAGHOffset =
new TH1D(
"selectedTAGHOffset",
"Selected TAGH Offset; ID; Offset [ns]", nBinsX, 0.5, nBinsX + 0.5);
414 for (
int i = 1 ; i <= nBinsX; i++) {
415 TH1D *projY = thisHist->ProjectionY(
"temp", i, i);
418 double nsPerBin = (projY->GetBinCenter(projY->GetNbinsX()) - projY->GetBinCenter(1)) / projY->GetNbinsX();
419 double timeWindow = 2.0;
420 int binWindow = int(timeWindow / nsPerBin);
422 double maxEntries = 0;
424 for (
int j = 1; j <= projY->GetNbinsX(); j++) {
426 int maxBin = (j + binWindow) <= projY->GetNbinsX() ? (j + binWindow) : projY->GetNbinsX();
429 for (
int bin = minBin; bin <= maxBin; bin++) {
430 sum += projY->GetBinContent(bin) * projY->GetBinCenter(bin);
431 nEntries += projY->GetBinContent(bin);
433 if (nEntries > maxEntries) {
434 maxMean = sum / nEntries;
435 maxEntries = nEntries;
441 if (tagh_counter_quality[i-1] == 0.0) {
442 selectedTAGHOffset->SetBinContent(i, 0);
447 if(fabs(maxMean) > 28.)
451 if (maxMean >= 0) beamBucket = int((maxMean / RF_Period) + 0.5);
452 else beamBucket = int((maxMean / RF_Period) - 0.5);
453 selectedTAGHOffset->SetBinContent(i, beamBucket);
456 selectedTAGHOffset->SetBinContent(i, maxMean);
472 cout <<
"Dumping TAGH results...\n=======================================" << endl;
474 cout <<
"Type\tChannel\tvalueToUse\toldValue\tTotal" << endl;
478 double ccdb_sum = 0.0;
479 for (
int i = 1; i <= nBinsX; i++) ccdb_sum += tagh_tdc_time_offsets[i-1];
480 double c1_tdcOffset = 0.0;
481 outFile.open(prefix +
"tagh_tdc_timing_offsets.txt");
482 for (
int i = 1; i <= nBinsX; i++) {
483 if (tagh_counter_quality[i-1] == 0.0) {
484 outFile << i <<
" " << 0 << endl;
488 double delta = selectedTAGHOffset->GetBinContent(i);
489 if (useRF) delta *= RF_Period;
493 double ccdb = tagh_tdc_time_offsets[i-1];
494 double offset = ccdb + delta - taghTdcOffsets[i-1];
495 if (i == 1) c1_tdcOffset = offset;
496 offset -= c1_tdcOffset;
497 outFile << i <<
" " << offset << endl;
499 if (verbose)
printf(
"TDC\t%i\t%.3f\t\t%.3f\t\t%.3f\n", i, delta, ccdb, offset);
504 for (
int i = 1; i <= nBinsX; i++) ccdb_sum += tagh_fadc_time_offsets[i-1];
505 double c1_adcOffset = 0.0;
506 outFile.open(prefix +
"tagh_adc_timing_offsets.txt");
507 for (
int i = 1; i <= nBinsX; i++) {
508 if (tagh_counter_quality[i-1] == 0.0) {
509 outFile << i <<
" " << 0 << endl;
513 double delta = selectedTAGHOffset->GetBinContent(i);
514 if (useRF) delta *= RF_Period;
518 double ccdb = tagh_fadc_time_offsets[i-1];
519 double offset = ccdb + delta - taghAdcOffsets[i-1];
520 if (i == 1) c1_adcOffset = offset;
521 offset -= c1_adcOffset;
522 outFile << i <<
" " << offset << endl;
524 if (verbose)
printf(
"ADC\t%i\t%.3f\t\t%.3f\t\t%.3f\n", i, delta, ccdb, offset);
528 outFile.open(prefix +
"tagh_base_time.txt");
529 outFile << tagh_t_base_fadc - c1_adcOffset <<
" " << tagh_t_base_tdc - c1_tdcOffset << endl;
531 printf(
"TAGH ADC Base = %f - (%f) = %f\n", tagh_t_base_fadc, c1_adcOffset, tagh_t_base_fadc - c1_adcOffset);
532 printf(
"TAGH TDC Base = %f - (%f) = %f\n", tagh_t_base_tdc, c1_tdcOffset, tagh_t_base_tdc - c1_tdcOffset);
538 double meanSCOffset = 0.0;
540 TH1F * selectedSCSectorOffset =
new TH1F(
"selectedSCSectorOffset",
"Selected TDC-RF offset;Sector; Time", 30, 0.5, 30.5);
541 TH1F * selectedSCSectorOffsetDistribution =
new TH1F(
"selectedSCSectorOffsetDistribution",
"Selected TDC-RF offset;Time;Entries", 100, -3.0, 3.0);
542 TF1*
f =
new TF1(
"f",
"pol0(0)+gaus(1)", -3.0, 3.0);
546 double scAdcOffsets[30] = { 0. };
547 double scTdcOffsets[30] = { 0. };
550 for (
int sector = 1; sector <= 30; sector++){
552 TH1D *projY = scADCTDCHist->ProjectionY(
"temp", sector, sector);
553 float nsPerBin = (projY->GetBinCenter(projY->GetNbinsX()) - projY->GetBinCenter(1)) / projY->GetNbinsX();
554 float timeWindow = 2;
555 int binWindow = int(timeWindow / nsPerBin);
556 double maxEntries = 0;
558 for (
int j = 1 ; j <= projY->GetNbinsX();j++){
560 int maxBin = (j + binWindow) <= projY->GetNbinsX() ? (j + binWindow) : projY->GetNbinsX();
561 double sum = 0, nEntries = 0;
562 for (
int bin = minBin; bin <= maxBin; bin++){
563 sum += projY->GetBinContent(bin) * projY->GetBinCenter(bin);
564 nEntries += projY->GetBinContent(bin);
566 if (nEntries > maxEntries) {
567 maxMean = sum / nEntries;
568 maxEntries = nEntries;
575 if(fabs(maxMean) > 1.5) {
576 if(fabs(maxMean) > 28.)
577 scTdcOffsets[sector-1] = maxMean;
579 scAdcOffsets[sector-1] = maxMean;
584 if (scRFHist == NULL)
continue;
586 TFitResultPtr fr = scRFHist->Fit(
"pol0",
"SQ",
"", -2, 2);
587 double p0 = fr->Parameter(0);
589 f->FixParameter(0,p0);
590 f->SetParLimits(2, -2, 2);
591 f->SetParLimits(3, 0, 2);
592 f->SetParameter(1, 10);
593 f->SetParameter(2, scRFHist->GetBinCenter(scRFHist->GetMaximumBin()));
594 f->SetParameter(3, 0);
596 fr = scRFHist->Fit(f,
"SQ",
"", -2, 2);
597 double SCOffset = fr->Parameter(2);
598 selectedSCSectorOffset->SetBinContent(sector, SCOffset);
599 selectedSCSectorOffsetDistribution->Fill(SCOffset);
602 meanSCOffset = selectedSCSectorOffsetDistribution->GetMean();
604 if(FIX_START_COUNTER) {
606 double scMax = scHitTimeHist->GetBinCenter(scHitTimeHist->GetMaximumBin());
607 TFitResultPtr fr = scHitTimeHist->Fit(
"gaus",
"S",
"", scMax - 5., scMax + 5.);
609 meanSCOffset = fr->Parameter(0) - meanSCOffset - start_counter_t0;
612 cout <<
"Dumping SC results...\n=======================================" << endl;
613 cout <<
"SC mean Offset = " << meanSCOffset << endl;
614 cout <<
"TDC Offsets" << endl;
615 cout <<
"Sector\toldValue\tValueToUse\tmeanOffset\tTotal" << endl;
617 outFile.open(prefix +
"sc_tdc_timing_offsets.txt");
618 for (
int sector = 1; sector <= 30; sector++){
619 outFile << sc_tdc_time_offsets[sector-1] + scTdcOffsets[sector-1] + selectedSCSectorOffset->GetBinContent(sector) - meanSCOffset << endl;
620 if (verbose)
printf(
"%i\t%.3f\t\t%.3f\t\t%.3f\t\t%.3f\n",sector, sc_tdc_time_offsets[sector-1], selectedSCSectorOffset->GetBinContent(sector), meanSCOffset,
621 sc_tdc_time_offsets[sector-1] - scTdcOffsets[sector-1] + selectedSCSectorOffset->GetBinContent(sector) - meanSCOffset);
625 cout <<
"ADC Offsets" << endl;
626 cout <<
"Sector\tvalueToUse\toldValue\tmeanOffset\tTotal" << endl;
628 outFile.open(prefix +
"sc_adc_timing_offsets.txt");
629 for (
int sector = 1; sector <= 30; sector++){
630 outFile << sc_fadc_time_offsets[sector-1] + scAdcOffsets[sector-1] + selectedSCSectorOffset->GetBinContent(sector) - meanSCOffset << endl;
631 if (verbose)
printf(
"%i\t%.3f\t\t%.3f\t\t%.3f\t\t%.3f\n",sector,sc_fadc_time_offsets[sector-1], selectedSCSectorOffset->GetBinContent(sector), meanSCOffset,
632 sc_fadc_time_offsets[sector-1] - scAdcOffsets[sector-1] + selectedSCSectorOffset->GetBinContent(sector) - meanSCOffset);
636 outFile.open(prefix +
"sc_base_time.txt");
637 outFile << sc_t_base_fadc - meanSCOffset <<
" " << sc_t_base_tdc - meanSCOffset << endl;
639 printf(
"SC ADC Base = %f - (%f) = %f\n", sc_t_base_fadc, meanSCOffset, sc_t_base_fadc - meanSCOffset);
640 printf(
"SC TDC Base = %f - (%f) = %f\n", sc_t_base_tdc, meanSCOffset, sc_t_base_tdc - meanSCOffset);
646 if(this1DHist != NULL){
648 Double_t maximum = this1DHist->GetBinCenter(this1DHist->GetMaximumBin());
649 TFitResultPtr fr = this1DHist->Fit(
"gaus",
"S",
"", maximum - 1.5, maximum + 1.5);
650 float mean = fr->Parameter(1);
651 outFile.open(prefix +
"tof_base_time.txt");
653 printf(
"TOF ADC Base = %f - (%f) - (%f) = %f\n", tof_t_base_fadc, mean, meanSCOffset, tof_t_base_fadc - mean - meanSCOffset);
654 printf(
"TOF TDC Base = %f - (%f) - (%f) = %f\n", tof_t_base_tdc, mean, meanSCOffset, tof_t_base_tdc - mean - meanSCOffset);
656 outFile << tof_t_base_fadc - mean - meanSCOffset<<
" " << tof_t_base_tdc - mean - meanSCOffset<< endl;
661 if(this1DHist != NULL){
663 Double_t maximum = this1DHist->GetBinCenter(this1DHist->GetMaximumBin());
664 TFitResultPtr fr = this1DHist->Fit(
"gaus",
"S",
"", maximum - 5, maximum + 5);
665 float mean = fr->Parameter(1);
666 outFile.open(prefix +
"bcal_base_time.txt");
668 printf(
"BCAL ADC Base = %f - (%f) - (%f) = %f\n", bcal_t_base_fadc, mean, meanSCOffset, bcal_t_base_fadc - mean - meanSCOffset);
669 printf(
"BCAL TDC Base = %f - (%f) - (%f) = %f\n", bcal_t_base_tdc, mean, meanSCOffset, bcal_t_base_tdc - mean - meanSCOffset);
671 outFile << bcal_t_base_fadc - mean - meanSCOffset <<
" " << bcal_t_base_tdc - mean - meanSCOffset << endl;
676 if(this1DHist != NULL){
678 Double_t maximum = this1DHist->GetBinCenter(this1DHist->GetMaximumBin());
679 TFitResultPtr fr = this1DHist->Fit(
"gaus",
"S",
"", maximum - 5, maximum + 5);
680 float mean = fr->Parameter(1);
681 outFile.open(prefix +
"fcal_base_time.txt");
683 printf(
"FCAL ADC Base = %f - (%f) - (%f) = %f\n",fcal_t_base, mean, meanSCOffset, fcal_t_base - mean - meanSCOffset);
685 outFile << fcal_t_base - mean - meanSCOffset<< endl;
690 if(this1DHist != NULL){
692 Double_t maximum = this1DHist->GetBinCenter(this1DHist->GetMaximumBin());
693 TFitResultPtr fr = this1DHist->Fit(
"gaus",
"S",
"", maximum - 15, maximum + 10);
694 float mean = fr->Parameter(1);
695 outFile.open(prefix +
"cdc_base_time.txt");
697 printf(
"CDC ADC Base = %f - (%f) - (%f) = %f\n",cdc_t_base, mean, meanSCOffset, cdc_t_base - mean - meanSCOffset);
699 outFile << cdc_t_base - mean - meanSCOffset << endl;
704 double FDC_ADC_Offset = 0.0, FDC_TDC_Offset = 0.0;
706 if(this1DHist != NULL){
707 Int_t firstBin = this1DHist->FindFirstBinAbove( 1 , 1);
708 for (
int i = 0; i <= 16; i++){
709 if ((firstBin + i) > 0) this1DHist->SetBinContent((firstBin + i), 0);
712 Double_t maximum = this1DHist->GetBinCenter(this1DHist->GetMaximumBin());
713 TF1 *
f =
new TF1(
"f",
"gaus");
714 f->SetParameters(100, maximum, 20);
716 TFitResultPtr fr = this1DHist->Fit(f,
"S",
"", maximum - 10, maximum + 7);
717 double mean = fr->Parameter(1);
718 float sigma = fr->Parameter(2);
719 FDC_ADC_Offset = mean;
724 if(this1DHist != NULL){
725 Int_t firstBin = this1DHist->FindLastBinAbove( 1 , 1);
726 for (
int i = 0; i <= 25; i++){
727 if ((firstBin + i) > 0) this1DHist->SetBinContent((firstBin + i), 0);
730 Double_t maximum = this1DHist->GetBinCenter(this1DHist->GetMaximumBin());
731 TF1 *
f =
new TF1(
"f",
"gaus");
732 f->SetParameters(100, maximum, 20);
733 TFitResultPtr fr = this1DHist->Fit(f,
"S",
"", maximum - 10, maximum + 5);
734 double mean = fr->Parameter(1);
735 float sigma = fr->Parameter(2);
736 FDC_TDC_Offset = mean;
739 double FDC_ADC_TDC_Offset = FDC_ADC_Offset - FDC_TDC_Offset;
743 if(this1DHist != NULL){
745 Double_t maximum = this1DHist->GetBinCenter(this1DHist->GetMaximumBin());
746 TFitResultPtr fr = this1DHist->Fit(
"landau",
"S",
"", maximum - 2.5, maximum + 4);
748 MPV = fr->Parameter(1);
749 outFile.open(prefix +
"fdc_base_time.txt");
751 printf(
"FDC ADC Base = %f - (%f) - (%f) - (%f) = %f\n",fdc_t_base_fadc, MPV, meanSCOffset, FDC_ADC_TDC_Offset, fdc_t_base_fadc - MPV - meanSCOffset - FDC_ADC_TDC_Offset);
752 printf(
"FDC TDC Base = %f - (%f) - (%f) = %f\n",fdc_t_base_tdc, MPV, meanSCOffset, fdc_t_base_tdc - MPV - meanSCOffset);
754 outFile << fdc_t_base_fadc - MPV - meanSCOffset - FDC_ADC_TDC_Offset <<
" " << fdc_t_base_tdc - MPV - meanSCOffset << endl;
763 if(thisHist != NULL){
764 bool package_times_shifted[4] = {
false,
false,
false,
false };
765 double FDC_wire_offsets[4][6][96] = { 0. };
766 for(
int plane=1; plane<=24; plane++) {
769 sprintf(buf,
"temp_%d", 2*plane-1);
770 TH1D *projY = thisHist->ProjectionY(buf, 2*plane-1, 2*plane-1);
777 Double_t maximum = projY->GetBinCenter(projY->GetMaximumBin());
781 TF1 *
f =
new TF1(
"f",
"gaus");
783 if(maximum > -190.) {
785 f->SetParameters(100, maximum, 20);
786 TFitResultPtr fr = projY->Fit(f,
"S",
"", maximum - 10, maximum + 5);
787 mean1 = fr->Parameter(1) + MPV;
788 sigma1 = fr->Parameter(2);
795 sprintf(buf,
"temp_%d", 2*plane);
796 projY = thisHist->ProjectionY(buf, 2*plane, 2*plane);
803 maximum = projY->GetBinCenter(projY->GetMaximumBin());
808 if(maximum > -190.) {
810 f->SetParameters(100, maximum, 20);
811 TFitResultPtr fr2 = projY->Fit(f,
"S",
"", maximum - 10, maximum + 5);
812 mean2 = fr2->Parameter(1) + MPV;
813 sigma2 = fr2->Parameter(2);
820 if( (fabs(mean1) < 5.) && (fabs(mean2) < 5.) )
827 package_times_shifted[package-1] =
true;
830 if(fabs(mean1) > 5.) {
831 for(
int wire=0; wire<48; wire++)
832 FDC_wire_offsets[package-1][chamber-1][wire] = mean1;
834 if(fabs(mean2) > 5.) {
835 for(
int wire=48; wire<96; wire++)
836 FDC_wire_offsets[package-1][chamber-1][wire] = mean2;
841 for(
int package = 0; package<4; package++) {
842 if(package_times_shifted[package]) {
844 sprintf(buf,
"%sfdc_package%d_wire_offsets.txt", prefix.Data(), package+1);
846 for(
int chamber=0; chamber<6; chamber++) {
847 for(
int wire=0; wire<96; wire++) {
848 outFile << FDC_wire_offsets[package][chamber][wire] <<
" ";
int GetF1TDCslotTAGH(int id)
sprintf(text,"Post KinFit Cut")
void AdjustTiming(TString fileName="hd_root.root", int runNumber=10390, TString variation="default", bool verbose=false, TString prefix="")
void FindFDCPackageChamber(int plane, int &package, int &chamber)
void GetCCDBConstants(TString path, Int_t run, TString variation, vector< double > &container, Int_t column=1)
Double_t sigma[NCHANNELS]
void GetCCDBConstants2(TString path, Int_t run, TString variation, double &constant1, double &constant2)
void GetCCDBConstants1(TString path, Int_t run, TString variation, double &constant1)
int GetCCDBIndexTAGM(unsigned int column, unsigned int row)
printf("string=%s", string)