1 #ifndef _CSCCCHAMBERTIMECORRECTIONSVALUES_H 2 #define _CSCCCHAMBERTIMECORRECTIONSVALUES_H 28 typedef std::unique_ptr<CSCChamberTimeCorrections>
ReturnType;
55 printf(
"\n Generating fake DB constants for MC\n");
57 printf(
"\n Getting chamber corrections from the cable data base and possibly other files \n");
60 const int MAX_SIZE = 540;
68 float cfeb_length=0, alct_length=0, cfeb_tmb_skew_delay=0, cfeb_timing_corr=0;
76 for(i=1;i<=MAX_SIZE;++
i){
92 for(i=1;i<=MAX_SIZE;++
i){
93 if (i<= 36 || (i>= 235 && i<=270)) { OffsetByType=172.; anodeOffset=6.18; }
94 else if (i<= 72 || (i>= 271 && i<=306)) { OffsetByType=168.; anodeOffset=6.22; }
95 else if (i<= 108 || (i>= 307 && i<=342)) { OffsetByType=177.; anodeOffset=6.19; }
96 else if (i<= 126 || (i>= 343 && i<=360)) { OffsetByType=171.; anodeOffset=6.25; }
97 else if (i<= 162 || (i>= 361 && i<=396)) { OffsetByType=175.; anodeOffset=6.21; }
98 else if (i<= 180 || (i>= 397 && i<=414)) { OffsetByType=171.; anodeOffset=6.25; }
99 else if (i<= 216 || (i>= 415 && i<=450)) { OffsetByType=175.; anodeOffset=6.20; }
100 else if (i<= 234 || (i>= 451 && i<=468)) { OffsetByType=172.; anodeOffset=6.19; }
101 else {OffsetByType=175; anodeOffset=6.21; }
103 chamberObj->
chamberCorrections[i-1].cfeb_timing_corr=(
short int)(-1*OffsetByType*FACTOR+0.5*(-1*OffsetByType>=0)-0.5*(-1*OffsetByType<0));
104 chamberObj->
chamberCorrections[i-1].anode_bx_offset =(
short int)(anodeOffset *FACTOR+0.5*(anodeOffset >=0)-0.5*(anodeOffset <0));
115 for(i=1;i<=MAX_SIZE;++
i){
119 if (i<= 36 || (i>= 235 && i<=270)) { anodeOffset=8.20; }
120 else if (i<= 72 || (i>= 271 && i<=306)) { anodeOffset=8.20; }
121 else if (i<= 108 || (i>= 307 && i<=342)) { anodeOffset=8.20; }
122 else if (i<= 126 || (i>= 343 && i<=360)) { anodeOffset=8.15; }
123 else if (i<= 162 || (i>= 361 && i<=396)) { anodeOffset=8.20; }
124 else if (i<= 180 || (i>= 397 && i<=414)) { anodeOffset=8.15; }
125 else if (i<= 216 || (i>= 415 && i<=450)) { anodeOffset=8.20; }
126 else if (i<= 234 || (i>= 451 && i<=468)) { anodeOffset=8.15; }
127 else {anodeOffset=8.20; }
130 cable.
cable_read(i, &chamber_label, &cfeb_length, &cfeb_rev, &alct_length,
131 &alct_rev, &cfeb_tmb_skew_delay, &cfeb_timing_corr);
134 if(!chamber_label.empty() && !(cfeb_length==0)){
148 FILE *
fin = fopen(
"/afs/cern.ch/user/d/deisher/public/TimingCorrections2009/ttcrx_delay_effects_23April_2010.txt",
"r");
153 int check = fscanf(fin,
"%d %f \n",&chamber,&corr);
155 printf(
"cfeb timing corr file has an unexpected format \n");
159 chamberObj->
chamberCorrections[chamber-1].cfeb_timing_corr= (
short int)(corr*FACTOR+0.5*(corr>=0)-0.5*(corr<0));
164 for(i=1;i<=MAX_SIZE;++
i){
166 if (i<= 36 || (i>= 235 && i<=270))
167 chamberObj->
chamberCorrections[i-1].cfeb_timing_corr=(
short int)((temp-1*ME11offset)*FACTOR+0.5*(temp>=ME11offset)-0.5*(temp<ME11offset));
169 chamberObj->
chamberCorrections[i-1].cfeb_timing_corr=(
short int)((temp-1*nonME11offset)*FACTOR+0.5*(temp>=nonME11offset)-0.5*(temp<nonME11offset));
173 FILE *fdelay = fopen(
"/afs/cern.ch/user/d/deisher/public/TimingCorrections2009/cfeb_cable_delay_20100423_both.txt",
"r");
177 while (!feof(fdelay)){
179 int check = fscanf(fdelay,
"%1024s %d \n",label,&delay);
181 printf(
"cfeb cable delay file has an unexpected format \n");
184 int chamberSerial = 0;
185 int c_endcap = (label[2]==
'+' ? 1 : 2);
186 int c_station = atoi(&label[3]);
187 int c_ring = atoi(&label[5]);
188 if (c_station ==1 && c_ring ==4)
190 int c_chamber = (label[7]==
'0' ? atoi(&label[8]) : atoi(&label[7]));
191 chamberSerial = indexer.
chamberIndex(c_endcap, c_station, c_ring, c_chamber);
198 FILE *foffset = fopen(
"/afs/cern.ch/user/d/deisher/public/TimingCorrections2009/offset_26July2010_codeOverhaul_slope012.txt",
"r");
201 while (!feof(foffset)){
203 int check = fscanf(foffset,
"%d %d %d %d %f \n",&iE,&iS,&iR,&iC,&offset);
205 printf(
"offset file has an unexpected format \n");
208 int chamberSerial = 0;
209 if (iS ==1 && iR ==4)
214 chamberObj->
chamberCorrections[chamberSerial-1].cfeb_timing_corr= (
short int)((temp-offset)*FACTOR+0.5*(temp>=
offset)-0.5*(temp<offset));
215 printf(
"Serial %d old corr %f change %f newcorr %f \n",chamberSerial,temp,offset,(
float)chamberObj->
chamberCorrections[chamberSerial-1].cfeb_timing_corr/FACTOR);
220 FILE *foffsetAgain = fopen(
"/afs/cern.ch/user/d/deisher/public/TimingCorrections2009/CathodeTimingCorrection_DB_12082010.txt",
"r");
221 while (!feof(foffsetAgain)){
223 int check = fscanf(foffsetAgain,
"%d %d %d %d %f \n",&iE,&iS,&iR,&iC,&offset);
225 printf(
"offsetAgain file has an unexpected format \n");
228 int chamberSerial = 0;
229 if (iS ==1 && iR ==4)
234 chamberObj->
chamberCorrections[chamberSerial-1].cfeb_timing_corr= (
short int)((temp-offset)*FACTOR+0.5*(temp>=
offset)-0.5*(temp<offset));
235 printf(
"Serial %d old corr %f change %f newcorr %f \n",chamberSerial,temp,offset,(
float)chamberObj->
chamberCorrections[chamberSerial-1].cfeb_timing_corr/FACTOR);
237 fclose(foffsetAgain);
IndexType chamberIndex(const CSCDetId &id) const
std::unique_ptr< CSCChamberTimeCorrections > ReturnType
static CSCChamberTimeCorrections * prefill(bool isMC, float ME11offset, float nonME11offset)
void cable_read(int chamber_index, std::string *chamber_label, float *cfeb_length, std::string *cfeb_rev, float *alct_length, std::string *alct_rev, float *cfeb_tmb_skew_delay, float *cfeb_timing_corr)
CSCChamberTimeCorrectionsValues(const edm::ParameterSet &)
~CSCChamberTimeCorrectionsValues() override
void setIntervalFor(const edm::eventsetup::EventSetupRecordKey &, const edm::IOVSyncValue &, edm::ValidityInterval &) override
ReturnType produceChamberTimeCorrections(const CSCChamberTimeCorrectionsRcd &)
ChamberContainer chamberCorrections