63 static const float adc2fC[128]={-0.5,0.5,1.5,2.5,3.5,4.5,5.5,6.5,7.5,8.5,9.5, 10.5,11.5,12.5,
64 13.5,15.,17.,19.,21.,23.,25.,27.,29.5,32.5,35.5,38.5,42.,46.,50.,54.5,59.5,
65 64.5,59.5,64.5,69.5,74.5,79.5,84.5,89.5,94.5,99.5,104.5,109.5,114.5,119.5,
66 124.5,129.5,137.,147.,157.,167.,177.,187.,197.,209.5,224.5,239.5,254.5,272.,
67 292.,312.,334.5,359.5,384.5,359.5,384.5,409.5,434.5,459.5,484.5,509.5,534.5,
68 559.5,584.5,609.5,634.5,659.5,684.5,709.5,747.,797.,847.,897.,947.,997.,
69 1047.,1109.5,1184.5,1259.5,1334.5,1422.,1522.,1622.,1734.5,1859.5,1984.5,
70 1859.5,1984.5,2109.5,2234.5,2359.5,2484.5,2609.5,2734.5,2859.5,2984.5,
71 3109.5,3234.5,3359.5,3484.5,3609.5,3797.,4047.,4297.,4547.,4797.,5047.,
72 5297.,5609.5,5984.5,6359.5,6734.5,7172.,7672.,8172.,8734.5,9359.5,9984.5};
80 Raddam_ch RADDAM_CH[56]={{-30,35,1},{-30,71,1},{-32,15,1},{-32,51,1},{-34,35,1},{-34,71,1},{-36,15,1},
81 {-36,51,1},{-38,35,1},{-38,71,1},{-40,15,1},{-40,51,1},{-41,35,1},{-41,71,1},
82 {30,21,1}, {30,57,1}, {32,1,1}, {32,37,1}, {34,21,1}, {34,57,1}, {36,1,1 },
83 {36,37,1}, {38,21,1}, {38,57,1}, {40,35,1}, {40,71,1}, {41,19,1}, {41,55,1 },
84 {-30,15,2},{-30,51,2},{-32,35,2},{-32,71,2},{-34,15,2},{-34,51,2},{-36,35,2},
85 {-36,71,2},{-38,15,2},{-38,51,2},{-40,35,2},{-40,71,2},{-41,15,2},{-41,51,2},
86 {30,1,2}, {30,37,2}, {32,21,2}, {32,57,2}, {34,1,2}, {34,37,2}, {36,21,2 },
87 {36,57,2}, {38,1,2}, {38,37,2}, {40,19,2}, {40,55,2}, {41,35,2}, {41,71,2}};
207 int MaxI=0;
double Energy,MaxE=0;
208 for(
int j=0;
j<
n;++
j)
if(MaxE<data[
j]){ MaxE=data[
j]; MaxI=
j; }
210 if(MaxI>0) Energy+=data[MaxI-1];
211 if(MaxI>1) Energy+=data[MaxI-2];
212 if(MaxI<(n-1)) Energy+=data[MaxI+1];
213 if(MaxI<(n-2)) Energy+=data[MaxI+2];
217 int MaxI=-100;
double Time=-9999,SumT=0,MaxT=-10;
218 for(
int j=0;
j<
n;++
j)
if(MaxT<data[
j]){ MaxT=data[
j]; MaxI=
j; }
221 Time=MaxI*data[MaxI];
223 if(MaxI>0){ Time+=(MaxI-1)*data[MaxI-1]; SumT+=data[MaxI-1]; }
224 if(MaxI<(n-1)){ Time+=(MaxI+1)*data[MaxI+1]; SumT+=data[MaxI+1]; }
256 if(sd.compare(
"HB")==0) SD=1;
257 if(sd.compare(
"HE")==0) SD=2;
258 if(sd.compare(
"HO")==0) SD=3;
259 if(sd.compare(
"HF")==0) SD=4;
261 if(eta>0)
ETA=1;
else ETA=-1;
262 if(phi==71 ||phi==72 || phi==1 || phi==2)
PHI=71;
else PHI=((phi-3)/4)*4+3;
266 if(phi==71 ||phi==72 || phi==1 || phi==2 || phi==3 || phi==4)
PHI=71;
else PHI=((phi-5)/6)*6+5;
271 if(phi==71 ||phi==72 || (phi>=1 && phi<=10))
PHI=71;
else PHI=((phi-11)/12)*12+11;
274 if(eta>0)
ETA=1;
else ETA=-1;
275 if(phi>=1 && phi<=18)
PHI=1;
276 if(phi>=19 && phi<=36)
PHI=19;
277 if(phi>=37 && phi<=54)
PHI=37;
278 if(phi>=55 && phi<=72)
PHI=55;
300 bool get_ave_subdet(
int sd,
float *ave_t,
float *ave_e,
float *ave_t_r,
float *ave_e_r);
375 hcalTBTriggerDataTag_(iConfig.getParameter<edm::InputTag>(
"hcalTBTriggerDataTag"))
399 if (prefixME_.size()>0 && prefixME_.substr(prefixME_.size()-1,prefixME_.size())!=
"/")
400 prefixME_.append(
"/");
419 for (std::vector<DetId>::const_iterator
i = mydetids.begin();
i!=mydetids.end();++
i){
430 emap=conditions_->getHcalMapping();
473 name=
"HO Laser Timing Distribution";
hoTime =
dbe_->
book1D(name,name,200,0,10);
477 name=
"HF Laser Timing Distribution";
hfTime =
dbe_->
book1D(name,name,200,0,10);
534 for(
int i=0;
i<56;
i++){
535 sprintf(str,
"RADDAM (%i %i)",RADDAM_CH[
i].
eta,RADDAM_CH[
i].
phi);
557 static bool HBHEseq,HOseq,HFseq;
558 static int lastHBHEorbit,lastHOorbit,lastHForbit,nChecksHBHE,nChecksHO,nChecksHF,ievt_hbhe,ievt_ho,ievt_hf;
560 ievt_=0;HBHEseq=HOseq=HFseq=
false; lastHBHEorbit=lastHOorbit=lastHForbit=-1;nChecksHBHE=nChecksHO=nChecksHF=0;
561 ievt_hbhe=0,ievt_ho=0,ievt_hf=0;
565 bool LaserEvent=
false;
566 bool LaserRaddam=
false;
573 if(trigger_data->wasLaserTrigger()) LaserEvent=
true;
577 if(HBHEseq && (orbit-lastHBHEorbit)>(11223*10) && ievt_hbhe>40){
587 if(HOseq && (orbit-lastHOorbit)>(11223*10) && ievt_ho>40){
595 if(HFseq && (orbit-lastHForbit)>(11223*10) && ievt_hf>40){
601 if(nChecksHF==1 || (nChecksHF>1 && ((nChecksHF-1)%12)==0)){
609 if(
LocalRun==
false || LaserEvent==
false){
617 if ( fedData.
size() < 24 )
continue ;
619 if(value==
hc_HBHEHPD){ HBHEseq=
true; HOseq=HFseq=
false; lastHBHEorbit=orbit; ievt_hbhe++; }
620 if(value==
hc_HOHPD){ HOseq=
true; HBHEseq=HFseq=
false; lastHOorbit=orbit; ievt_ho++; }
621 if(value==
hc_HFPMT){ HFseq=
true; HBHEseq=HOseq=
false; lastHForbit=orbit; ievt_hf++; }
624 if(value==
hc_RADDAM){ LaserEvent=
true; LaserRaddam=
true;
break;}
627 if(!LaserEvent)
return;
641 eta=digi->id().ieta(); phi=digi->id().iphi(); depth=digi->id().depth();
643 for(
int i=0;
i<digi->size();
i++) e+=
adc2fC[digi->sample(
i).adc()&0xff]-2.5;
652 eta=digi->id().ieta(); phi=digi->id().iphi(); depth=digi->id().depth(); nTS=digi->size();
654 for(N=0;N<56;N++)
if(eta==RADDAM_CH[N].eta && phi==RADDAM_CH[N].phi && depth==RADDAM_CH[N].depth)
break;
658 for(
int i=0;
i<nTS;
i++){
659 if(max1<
adc2fC[digi->sample(
i).adc()&0xff]){ nmax1=
i; max1=
adc2fC[digi->sample(
i).adc()&0xff]; }
662 for(
int i=0;
i<nTS;
i++){
663 if(
i==nmax1)
continue;
664 if(max2<
adc2fC[digi->sample(
i).adc()&0xff]){ nmax2=
i; max2=
adc2fC[digi->sample(
i).adc()&0xff]; }
668 nmax2=nmax1;nmax1=tmp1;
670 if(nmax1==0 || nmax2==(nTS-1))
continue;
671 if(nmax2!=(nmax1+1))
continue;
675 max1-=2.5; max2-=2.5;
677 float S4=S2+
adc2fC[digi->sample(nmax1-1).adc()&0xff]+
adc2fC[digi->sample(nmax2+1).adc()&0xff]-5.0;
680 Raddam_data[
N].
s1_adc[digi->sample(nmax1).adc()&0xff]++;
681 Raddam_data[
N].
s2_adc[digi->sample(nmax2).adc()&0xff]++;
692 eta=digi->id().ieta(); phi=digi->id().iphi(); depth=digi->id().depth(); nTS=digi->size();
693 double ped=(
adc2fC[digi->sample(0).adc()&0xff]+
adc2fC[digi->sample(1).adc()&0xff])/2.0;
695 for(
int i=0;
i<nTS;
i++) data[
i]=
adc2fC[digi->sample(
i).adc()&0xff]-ped;
699 for(
int i=0;
i<nTS;
i++) data[
i]=
adc2fC[digi->sample(
i).adc()&0xff]-ped;
706 eta=digi->id().ieta(); phi=digi->id().iphi(); depth=digi->id().depth(); nTS=digi->size();
707 double ped=(
adc2fC[digi->sample(0).adc()&0xff]+
adc2fC[digi->sample(1).adc()&0xff])/2.0;
708 if((eta>=11 && eta<=15 && phi>=59 && phi<=70) || (eta>=5 && eta<=10 && phi>=47 && phi<=58)){
709 for(
int i=0;
i<nTS;
i++) data[
i]=
adc2fC[digi->sample(
i).adc()&0xff]-ped;
711 for(
int i=0;
i<nTS;
i++) data[
i]=
adc2fC[digi->sample(
i).adc()&0xff]-ped;
718 eta=digi->id().ieta(); phi=digi->id().iphi(); depth=digi->id().depth(); nTS=digi->size();
719 double ped=
adc2fC[digi->sample(0).adc()&0xff];
720 for(
int i=0;
i<nTS;
i++) data[
i]=
adc2fC[digi->sample(
i).adc()&0xff]-ped;
725 if(digi->id().cboxChannel()!=0 || digi->id().hcalSubdet()==0)
continue;
728 for(
int i=0;
i<nTS;
i++){ data[
i]=
adc2fC[digi->sample(
i).adc()&0xff]; e+=data[
i];}
734 eta=digi->id().ieta(); phi=digi->id().iphi(); depth=digi->id().depth(); nTS=digi->size();
736 for(N=0;N<56;N++)
if(eta==RADDAM_CH[N].eta && phi==RADDAM_CH[N].phi && depth==RADDAM_CH[N].depth)
break;
745 double T=0,nT=0,E=0,nE=0,Tr=0,nTr=0,Er=0,nEr=0;
747 for(
int depth=1;depth<=2;depth++){
749 double ave=0,
rms=0,
time=0,time_rms=0;
752 T+=
time; nT++; E+=ave; nE++;
754 Tr+=
time; nTr++; Er+=ave; nEr++;}
760 for(
int depth=1;depth<=3;depth++){
762 double ave=0;
double rms=0;
double time=0;
double time_rms=0;
765 T+=
time; nT++; E+=ave; nE++;
766 if(
he_data[
eta+42][
phi-1][depth-1].get_reference(&ave,&rms,&time,&time_rms)){
767 Tr+=
time; nTr++; Er+=ave; nEr++;}
773 for(
int depth=1;depth<=2;depth++){
775 double ave=0;
double rms=0;
double time=0;
double time_rms=0;
778 T+=
time; nT++; E+=ave; nE++;
779 if(
hf_data[
eta+42][
phi-1][depth-1].get_reference(&ave,&rms,&time,&time_rms)){
780 Tr+=
time; nTr++; Er+=ave; nEr++;}
786 for(
int depth=4;depth<=4;depth++){
788 double ave=0;
double rms=0;
double time=0;
double time_rms=0;
791 T+=
time; nT++; E+=ave; nE++;
792 if(
ho_data[
eta+42][
phi-1][depth-1].get_reference(&ave,&rms,&time,&time_rms)){
793 Tr+=
time; nTr++; Er+=ave; nEr++;}
797 if(nT<200 || nE<200 || nTr<200 || nEr<200)
return false;
806 float ave_t,ave_e,ave_t_r,ave_e_r;
809 for(
int i=0;
i<4;
i++){
815 for (std::vector <HcalElectronicsId>::iterator eid = AllElIds.begin(); eid != AllElIds.end(); eid++){
819 if(!(!(gid.null()) &&
833 double val=0,
rms=0,
time=0,time_rms=0,VAL=0,RMS=0,TIME=0,TIME_RMS=0;
834 if(!
hb_data[eta+42][
phi-1][depth-1].get_reference(&val,&
rms,&
time,&time_rms))
continue;
835 if(!
hb_data[eta+42][
phi-1][depth-1].get_average_amp(&VAL,&RMS))
continue;
836 if(!
hb_data[eta+42][
phi-1][depth-1].get_average_time(&TIME,&TIME_RMS))
continue;
838 float diff_t=(TIME-ave_t)-(
time-ave_t_r);
if(diff_t<0) diff_t=-diff_t;
843 if(VAL!=0 && val!=0 && ave_e!=0 && ave_e_r!=0){
844 float diff_e=((VAL/ave_e))/(val/ave_e_r);
852 double val=0,
rms=0,
time=0,time_rms=0,VAL=0,RMS=0,TIME=0,TIME_RMS=0;
853 if(!
he_data[eta+42][
phi-1][depth-1].get_reference(&val,&
rms,&
time,&time_rms))
continue;
854 if(!
he_data[eta+42][
phi-1][depth-1].get_average_amp(&VAL,&RMS))
continue;
855 if(!
he_data[eta+42][
phi-1][depth-1].get_average_time(&TIME,&TIME_RMS))
continue;
857 float diff_t=(TIME-ave_t)-(
time-ave_t_r);
if(diff_t<0) diff_t=-diff_t;
862 if(VAL!=0 && val!=0 && ave_e!=0 && ave_e_r!=0){
863 float diff_e=((VAL/ave_e))/(val/ave_e_r);
871 double val=0,
rms=0,
time=0,time_rms=0,VAL=0,RMS=0,TIME=0,TIME_RMS=0;
872 if(!
ho_data[eta+42][
phi-1][depth-1].get_reference(&val,&
rms,&
time,&time_rms))
continue;
873 if(!
ho_data[eta+42][
phi-1][depth-1].get_average_amp(&VAL,&RMS))
continue;
874 if(!
ho_data[eta+42][
phi-1][depth-1].get_average_time(&TIME,&TIME_RMS))
continue;
876 float diff_t=(TIME-ave_t)-(
time-ave_t_r);
if(diff_t<0) diff_t=-diff_t;
881 if(VAL!=0 && val!=0 && ave_e!=0 && ave_e_r!=0){
882 float diff_e=((VAL/ave_e))/(val/ave_e_r);
890 double val=0,
rms=0,
time=0,time_rms=0,VAL=0,RMS=0,TIME=0,TIME_RMS=0;
891 if(!
hf_data[eta+42][
phi-1][depth-1].get_reference(&val,&
rms,&
time,&time_rms))
continue;
892 if(!
hf_data[eta+42][
phi-1][depth-1].get_average_amp(&VAL,&RMS))
continue;
893 if(!
hf_data[eta+42][
phi-1][depth-1].get_average_time(&TIME,&TIME_RMS))
continue;
895 float diff_t=(TIME-ave_t)-(
time-ave_t_r);
if(diff_t<0) diff_t=-diff_t;
900 if(VAL!=0 && val!=0 && ave_e!=0 && ave_e_r!=0){
901 float diff_e=((VAL/ave_e))/(val/ave_e_r);
909 for (std::vector <HcalElectronicsId>::iterator eid = AllElIds.begin(); eid != AllElIds.end(); eid++){
913 if(!(!(gid.null()) &&
925 if(
hb_data[eta+42][
phi-1][depth-1].nBadTime>0){
930 if(
hb_data[eta+42][
phi-1][depth-1].nBadEnergy>0){
937 if(
he_data[eta+42][
phi-1][depth-1].nBadTime>0){
942 if(
he_data[eta+42][
phi-1][depth-1].nBadEnergy>0){
949 if(
ho_data[eta+42][
phi-1][depth-1].nBadTime>0){
954 if(
ho_data[eta+42][
phi-1][depth-1].nBadEnergy>0){
961 if(
hf_data[eta+42][
phi-1][depth-1].nBadTime>0){
966 if(
hf_data[eta+42][
phi-1][depth-1].nBadEnergy>0){
977 int eta_min=0,eta_max=0,
n=0;
979 if(side>0){eta_min=1; eta_max=29;}
980 if(side<0){eta_min=-29; eta_max=-1;}
982 for(
int i=eta_min;
i<=eta_max;
i++)
for(
int j=71;
j<=72;
j++)
for(
int k=1;
k<=3;
k++){
984 double TIME,TIME_RMS;
985 if(!
hb_data[
i+42][
j-1][
k-1].get_reference(&val,&rms,&time,&time_rms))
continue;
986 if(!
hb_data[
i+42][
j-1][
k-1].get_average_time(&TIME,&TIME_RMS))
continue;
987 xt+=TIME-
time; xxt+=(TIME-
time)*(TIME-time);
n++;
989 for(
int i=eta_min;
i<=eta_max;
i++)
for(
int j=1;
j<=2;
j++)
for(
int k=1;
k<=3;
k++){
991 double TIME,TIME_RMS;
992 if(!
hb_data[
i+42][
j-1][
k-1].get_reference(&val,&rms,&time,&time_rms))
continue;
993 if(!
hb_data[
i+42][
j-1][
k-1].get_average_time(&TIME,&TIME_RMS))
continue;
994 xt+=TIME-
time; xxt+=(TIME-
time)*(TIME-time);
n++;
998 for(
int i=eta_min;
i<=eta_max;
i++)
for(
int j=((rbx-1)*4-1);
j<=((rbx-1)*4+2);
j++)
for(
int k=1;
k<=3;
k++){
1000 double TIME,TIME_RMS;
1001 if(!
hb_data[
i+42][
j-1][
k-1].get_reference(&val,&rms,&time,&time_rms))
continue;
1002 if(!
hb_data[
i+42][
j-1][
k-1].get_average_time(&TIME,&TIME_RMS))
continue;
1003 xt+=TIME-
time; xxt+=(TIME-
time)*(TIME-time);
n++;
1008 if(side>0){eta_min=1; eta_max=29;}
1009 if(side<0){eta_min=-29; eta_max=-1;}
1011 for(
int i=eta_min;
i<=eta_max;
i++)
for(
int j=71;
j<=72;
j++)
for(
int k=1;
k<=3;
k++){
1013 double TIME,TIME_RMS;
1014 if(!
he_data[
i+42][
j-1][
k-1].get_reference(&val,&rms,&time,&time_rms))
continue;
1015 if(!
he_data[
i+42][
j-1][
k-1].get_average_time(&TIME,&TIME_RMS))
continue;
1016 xt+=TIME-
time; xxt+=(TIME-
time)*(TIME-time);
n++;
1018 for(
int i=eta_min;
i<=eta_max;
i++)
for(
int j=1;
j<=2;
j++)
for(
int k=1;
k<=3;
k++){
1020 double TIME,TIME_RMS;
1021 if(!
he_data[
i+42][
j-1][
k-1].get_reference(&val,&rms,&time,&time_rms))
continue;
1022 if(!
he_data[
i+42][
j-1][
k-1].get_average_time(&TIME,&TIME_RMS))
continue;
1023 xt+=TIME-
time; xxt+=(TIME-
time)*(TIME-time);
n++;
1027 for(
int i=eta_min;
i<=eta_max;
i++)
for(
int j=((rbx-1)*4-1);
j<=((rbx-1)*4+2);
j++)
for(
int k=1;
k<=3;
k++){
1029 double TIME,TIME_RMS;
1030 if(!
he_data[
i+42][
j-1][
k-1].get_reference(&val,&rms,&time,&time_rms))
continue;
1031 if(!
he_data[
i+42][
j-1][
k-1].get_average_time(&TIME,&TIME_RMS))
continue;
1032 xt+=TIME-
time; xxt+=(TIME-
time)*(TIME-time);
n++;
1037 if(side>0){eta_min=29; eta_max=40;}
1038 if(side<0){eta_min=-40; eta_max=-29;}
1039 for(
int i=eta_min;
i<=eta_max;
i++)
for(
int j=((rbx-1)*6+1);
j<=((rbx-1)*6+6);
j++)
for(
int k=1;
k<=2;
k++){
1041 double TIME,TIME_RMS;
1042 if(!
hf_data[
i+42][
j-1][
k-1].get_reference(&val,&rms,&time,&time_rms))
continue;
1043 if(!
hf_data[
i+42][
j-1][
k-1].get_average_time(&TIME,&TIME_RMS))
continue;
1044 xt+=TIME-
time; xxt+=(TIME-
time)*(TIME-time);
n++;
1049 eta_min=-4,eta_max=4;
1051 for(
int i=eta_min;
i<=eta_max;
i++)
for(
int j=71;
j<=72;
j++){
1053 double TIME,TIME_RMS;
1054 if(!
ho_data[
i+42][
j-1][4-1].get_reference(&val,&rms,&time,&time_rms))
continue;
1055 if(!
ho_data[
i+42][
j-1][4-1].get_average_time(&TIME,&TIME_RMS))
continue;
1056 xt+=TIME-
time; xxt+=(TIME-
time)*(TIME-time);
n++;
1058 for(
int i=eta_min;
i<=eta_max;
i++)
for(
int j=1;
j<=4;
j++){
1060 double TIME,TIME_RMS;
1061 if(!
ho_data[
i+42][
j-1][4-1].get_reference(&val,&rms,&time,&time_rms))
continue;
1062 if(!
ho_data[
i+42][
j-1][4-1].get_average_time(&TIME,&TIME_RMS))
continue;
1063 xt+=TIME-
time; xxt+=(TIME-
time)*(TIME-time);
n++;
1067 for(
int i=eta_min;
i<=eta_max;
i++)
for(
int j=((rbx-1)*6-1);
j<=((rbx-1)*6+4);
j++){
1069 double TIME,TIME_RMS;
1070 if(!
ho_data[
i+42][
j-1][4-1].get_reference(&val,&rms,&time,&time_rms))
continue;
1071 if(!
ho_data[
i+42][
j-1][4-1].get_average_time(&TIME,&TIME_RMS))
continue;
1072 xt+=TIME-
time; xxt+=(TIME-
time)*(TIME-time);
n++;
1076 if(side==-1){ eta_min=-10,eta_max=-5;}
1077 if(side==-2){ eta_min=-15,eta_max=-11;}
1078 if(side==1) { eta_min=5, eta_max=10;}
1079 if(side==2) { eta_min=11, eta_max=15;}
1082 for(
int i=eta_min;
i<=eta_max;
i++)
for(
int j=71;
j<=72;
j++){
1084 double TIME,TIME_RMS;
1085 if(!
ho_data[
i+42][
j-1][4-1].get_reference(&val,&rms,&time,&time_rms))
continue;
1086 if(!
ho_data[
i+42][
j-1][4-1].get_average_time(&TIME,&TIME_RMS))
continue;
1087 xt+=TIME-
time; xxt+=(TIME-
time)*(TIME-time);
n++;
1089 for(
int i=eta_min;
i<=eta_max;
i++)
for(
int j=1;
j<=10;
j++){
1091 double TIME,TIME_RMS;
1092 if(!
ho_data[
i+42][
j-1][4-1].get_reference(&val,&rms,&time,&time_rms))
continue;
1093 if(!
ho_data[
i+42][
j-1][4-1].get_average_time(&TIME,&TIME_RMS))
continue;
1094 xt+=TIME-
time; xxt+=(TIME-
time)*(TIME-time);
n++;
1098 for(
int i=eta_min;
i<=eta_max;
i++)
for(
int j=((rbx-1)*12-1);
j<=((rbx-1)*12+10);
j++){
1100 double TIME,TIME_RMS;
1101 if(!
ho_data[
i+42][
j-1][4-1].get_reference(&val,&rms,&time,&time_rms))
continue;
1102 if(!
ho_data[
i+42][
j-1][4-1].get_average_time(&TIME,&TIME_RMS))
continue;
1103 xt+=TIME-
time; xxt+=(TIME-
time)*(TIME-time);
n++;
1108 if(
n<10)
return false;
1110 *rms=
sqrt(xxt/
n-(xt*xt)/(
n*
n));
1145 double T=0,nT=0,E=0,nE=0;
1146 for(
int depth=1;depth<=2;depth++){
1158 T+=
time; nT++; E+=ave; nE++;
1165 double T=0,nT=0,E=0,nE=0;
1166 for(
int depth=1;depth<=3;depth++){
1168 double ave=0;
double rms=0;
double time=0;
double time_rms=0;
1175 T+=
time; nT++; E+=ave; nE++;
1185 double T=0,nT=0,E=0,nE=0;
1186 for(
int depth=1;depth<=2;depth++){
1188 double ave=0;
double rms=0;
double time=0;
double time_rms=0;
1194 T+=
time; nT++; E+=ave; nE++;
1206 double T=0,nT=0,E=0,nE=0;
1207 for(
int depth=4;depth<=4;depth++){
1209 double ave=0;
double rms=0;
double time=0;
double time_rms=0;
1215 T+=
time; nT++; E+=ave; nE++;
1226 double T=0,nT=0,E=0,nE=0;
1227 for(
int depth=1;depth<=2;depth++){
1229 double val=0,
rms=0,
time=0,time_rms=0;
1230 double VAL=0,RMS=0,TIME=0,TIME_RMS=0;
1232 if(!
hb_data[
eta+42][
phi-1][depth-1].get_average_amp(&VAL,&RMS))
continue;
1233 if(!
hb_data[
eta+42][
phi-1][depth-1].get_average_time(&TIME,&TIME_RMS))
continue;
1242 double T=0,nT=0,E=0,nE=0;
1243 for(
int depth=1;depth<=3;depth++){
1245 double val=0,
rms=0,
time=0,time_rms=0;
1246 double VAL=0,RMS=0,TIME=0,TIME_RMS=0;
1248 if(!
he_data[
eta+42][
phi-1][depth-1].get_average_amp(&VAL,&RMS))
continue;
1249 if(!
he_data[
eta+42][
phi-1][depth-1].get_average_time(&TIME,&TIME_RMS))
continue;
1262 double T=0,nT=0,E=0,nE=0;
1263 for(
int depth=1;depth<=2;depth++){
1265 double val=0,
rms=0,
time=0,time_rms=0;
1266 double VAL=0,RMS=0,TIME=0,TIME_RMS=0;
1268 if(!
hf_data[
eta+42][
phi-1][depth-1].get_average_amp(&VAL,&RMS))
continue;
1269 if(!
hf_data[
eta+42][
phi-1][depth-1].get_average_time(&TIME,&TIME_RMS))
continue;
1283 double T=0,nT=0,E=0,nE=0;
1284 for(
int depth=4;depth<=4;depth++){
1286 double val=0,
rms=0,
time=0,time_rms=0;
1287 double VAL=0,RMS=0,TIME=0,TIME_RMS=0;
1289 if(!
ho_data[
eta+42][
phi-1][depth-1].get_average_amp(&VAL,&RMS))
continue;
1290 if(!
ho_data[
eta+42][
phi-1][depth-1].get_average_time(&TIME,&TIME_RMS))
continue;
1303 for(
int i=1;
i<=18;
i++){
1304 float ave=-10,
rms=-10;
1308 if(ave<min) min=ave;
1309 if(ave>max) max=ave;
1312 for(
int i=1;
i<=18;
i++){
1313 float ave=-10,
rms=-10;
1317 if(ave<min) min=ave;
1318 if(ave>max) max=ave;
1323 for(
int i=1;
i<=18;
i++){
1324 float ave=-10,
rms=-10;
1328 if(ave<min) min=ave;
1329 if(ave>max) max=ave;
1332 for(
int i=1;
i<=18;
i++){
1333 float ave=-10,
rms=-10;
1337 if(ave<min) min=ave;
1338 if(ave>max) max=ave;
1346 for(
int i=1;
i<=6;
i++){
1347 float ave=-10,
rms=-10;
1351 if(ave<min) min=ave;
1352 if(ave>max) max=ave;
1355 for(
int i=1;
i<=6;
i++){
1356 float ave=-10,
rms=-10;
1360 if(ave<min) min=ave;
1361 if(ave>max) max=ave;
1364 for(
int i=1;
i<=12;
i++){
1365 float ave=-10,
rms=-10;
1369 if(ave<min) min=ave;
1370 if(ave>max) max=ave;
1373 for(
int i=1;
i<=6;
i++){
1374 float ave=-10,
rms=-10;
1378 if(ave<min) min=ave;
1379 if(ave>max) max=ave;
1382 for(
int i=1;
i<=6;
i++){
1383 float ave=-10,
rms=-10;
1387 if(ave<min) min=ave;
1388 if(ave>max) max=ave;
1396 for(
int i=1;
i<=12;
i++){
1397 float ave=-10,
rms=-10;
1401 if(ave<min) min=ave;
1402 if(ave>max) max=ave;
1405 for(
int i=1;
i<=12;
i++){
1406 float ave=-10,
rms=-10;
1410 if(ave<min) min=ave;
1411 if(ave>max) max=ave;
1419 double amp,
rms,Time,time_rms;
1421 char Subdet[10],str[500];
1426 sprintf(str,
"%sHcalDetDiagLaserData.root",
OutputFilePath.c_str());
1428 TFile *
theFile =
new TFile(str,
"RECREATE");
1429 if(!theFile->IsOpen())
return;
1431 sprintf(str,
"%d",
run_number); TObjString
run(str); run.Write(
"run number");
1432 sprintf(str,
"%d",
ievt_); TObjString
events(str); events.Write(
"Total events processed");
1433 sprintf(str,
"%d",
dataset_seq_number); TObjString dsnum(str); dsnum.Write(
"Dataset number");
1434 Long_t
t; t=
time(0); strftime(str,30,
"%F %T",localtime(&t)); TObjString tm(str); tm.Write(
"Dataset creation time");
1436 TTree *
tree =
new TTree(
"HCAL Laser data",
"HCAL Laser data");
1438 tree->Branch(
"Subdet", &Subdet,
"Subdet/C");
1439 tree->Branch(
"eta", &Eta,
"Eta/I");
1440 tree->Branch(
"phi", &Phi,
"Phi/I");
1441 tree->Branch(
"depth", &Depth,
"Depth/I");
1442 tree->Branch(
"statistic",&Statistic,
"Statistic/I");
1443 tree->Branch(
"status", &Status,
"Status/I");
1444 tree->Branch(
"amp", &,
"amp/D");
1445 tree->Branch(
"rms", &rms,
"rms/D");
1446 tree->Branch(
"time", &Time,
"time/D");
1447 tree->Branch(
"time_rms", &time_rms,
"time_rms/D");
1448 sprintf(Subdet,
"HB");
1449 for(
int eta=-16;
eta<=16;
eta++)
for(
int phi=1;
phi<=72;
phi++)
for(
int depth=1;depth<=2;depth++){
1450 if((Statistic=
hb_data[
eta+42][
phi-1][depth-1].get_statistics1())>10){
1451 Eta=
eta; Phi=
phi; Depth=depth;
1458 sprintf(Subdet,
"HE");
1459 for(
int eta=-29;
eta<=29;
eta++)
for(
int phi=1;
phi<=72;
phi++)
for(
int depth=1;depth<=3;depth++){
1460 if((Statistic=
he_data[
eta+42][
phi-1][depth-1].get_statistics1())>10){
1461 Eta=
eta; Phi=
phi; Depth=depth;
1468 sprintf(Subdet,
"HO");
1469 for(
int eta=-15;
eta<=15;
eta++)
for(
int phi=1;
phi<=72;
phi++)
for(
int depth=4;depth<=4;depth++){
1470 if((Statistic=
ho_data[
eta+42][
phi-1][depth-1].get_statistics1())>10){
1471 Eta=
eta; Phi=
phi; Depth=depth;
1478 sprintf(Subdet,
"HF");
1479 for(
int eta=-42;
eta<=42;
eta++)
for(
int phi=1;
phi<=72;
phi++)
for(
int depth=1;depth<=2;depth++){
1480 if((Statistic=
hf_data[
eta+42][
phi-1][depth-1].get_statistics1())>10){
1481 Eta=
eta; Phi=
phi; Depth=depth;
1488 sprintf(Subdet,
"CALIB_HB");
1491 Eta=
eta; Phi=
phi; Depth=0;
1498 sprintf(Subdet,
"CALIB_HE");
1501 Eta=
eta; Phi=
phi; Depth=0;
1508 sprintf(Subdet,
"CALIB_HO");
1511 Eta=
eta; Phi=
phi; Depth=0;
1518 sprintf(Subdet,
"CALIB_HF");
1521 Eta=
eta; Phi=
phi; Depth=0;
1533 Long_t
t; t=
time(0); strftime(TIME,30,
"%F %T",localtime(&t));
1538 sprintf(str,
"HcalDetDiagLaser.xml");
1542 xmlFile.open(xmlName.c_str());
1544 xmlFile<<
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n";
1545 xmlFile<<
"<ROOT>\n";
1546 xmlFile<<
" <HEADER>\n";
1547 xmlFile<<
" <HINTS mode='only-det-root'/>\n";
1548 xmlFile<<
" <TYPE>\n";
1549 xmlFile<<
" <EXTENSION_TABLE_NAME>HCAL_DETMON_LED_LASER_V1</EXTENSION_TABLE_NAME>\n";
1550 xmlFile<<
" <NAME>HCAL Laser HBHE HPD [abort gap global]</NAME>\n";
1551 xmlFile<<
" </TYPE>\n";
1552 xmlFile<<
" <!-- run details -->\n";
1553 xmlFile<<
" <RUN>\n";
1554 xmlFile<<
" <RUN_TYPE>GLOBAL-RUN</RUN_TYPE>\n";
1555 xmlFile<<
" <RUN_NUMBER>"<<
run_number<<
"</RUN_NUMBER>\n";
1556 xmlFile<<
" <RUN_BEGIN_TIMESTAMP>2009-01-01 00:00:00</RUN_BEGIN_TIMESTAMP>\n";
1557 xmlFile<<
" <COMMENT_DESCRIPTION>hcal laser data</COMMENT_DESCRIPTION>\n";
1558 xmlFile<<
" <LOCATION>P5</LOCATION>\n";
1559 xmlFile<<
" <INITIATED_BY_USER>dma</INITIATED_BY_USER>\n";
1560 xmlFile<<
" </RUN>\n";
1561 xmlFile<<
" </HEADER>\n";
1562 xmlFile<<
" <DATA_SET>\n";
1563 xmlFile<<
" <!-- optional dataset metadata -->\n\n";
1565 xmlFile<<
" <SET_BEGIN_TIMESTAMP>2009-01-01 00:00:00</SET_BEGIN_TIMESTAMP>\n";
1566 xmlFile<<
" <SET_END_TIMESTAMP>2009-01-01 00:00:00</SET_END_TIMESTAMP>\n";
1567 xmlFile<<
" <NUMBER_OF_EVENTS_IN_SET>"<<
ievt_<<
"</NUMBER_OF_EVENTS_IN_SET>\n";
1568 xmlFile<<
" <COMMENT_DESCRIPTION>Automatic DQM output</COMMENT_DESCRIPTION>\n";
1569 xmlFile<<
" <DATA_FILE_NAME>"<< xmlName <<
"</DATA_FILE_NAME>\n";
1570 xmlFile<<
" <IMAGE_FILE_NAME>data plot url or file path</IMAGE_FILE_NAME>\n";
1571 xmlFile<<
" <!-- who and when created this dataset-->\n\n";
1572 xmlFile<<
" <CREATE_TIMESTAMP>"<<TIME<<
"</CREATE_TIMESTAMP>\n";
1573 xmlFile<<
" <CREATED_BY_USER>dma</CREATED_BY_USER>\n";
1574 xmlFile<<
" <!-- version (string) and subversion (number) -->\n";
1575 xmlFile<<
" <!-- fields are used to read data back from the database -->\n\n";
1576 xmlFile<<
" <VERSION>"<<run_number<<dataset_seq_number<<
"</VERSION>\n";
1577 xmlFile<<
" <SUBVERSION>1</SUBVERSION>\n";
1578 xmlFile<<
" <!-- Assign predefined dataset attributes -->\n\n";
1579 xmlFile<<
" <PREDEFINED_ATTRIBUTES>\n";
1580 xmlFile<<
" <ATTRIBUTE>\n";
1581 xmlFile<<
" <NAME>HCAL Dataset Status</NAME>\n";
1582 xmlFile<<
" <VALUE>VALID</VALUE>\n";
1583 xmlFile<<
" </ATTRIBUTE>\n";
1584 xmlFile<<
" </PREDEFINED_ATTRIBUTES>\n";
1585 xmlFile<<
" <!-- multiple data block records -->\n\n";
1588 for(std::vector <HcalElectronicsId>::iterator eid = AllElIds.begin(); eid != AllElIds.end(); eid++){
1592 if(!(!(gid.null()) &&
1604 double e=0,e_rms=0,t=0,t_rms=0;
1630 xmlFile<<
" <DATA>\n";
1631 xmlFile<<
" <NUMBER_OF_EVENTS_USED>"<<Statistic<<
"</NUMBER_OF_EVENTS_USED>\n";
1632 xmlFile<<
" <SIGNAL_MEAN>"<<e<<
"</SIGNAL_MEAN>\n";
1633 xmlFile<<
" <SIGNAL_RMS>"<<e_rms<<
"</SIGNAL_RMS>\n";
1634 xmlFile<<
" <TIME_MEAN>"<<t<<
"</TIME_MEAN>\n";
1635 xmlFile<<
" <TIME_RMS>"<<t_rms<<
"</TIME_RMS>\n";
1636 xmlFile<<
" <CHANNEL_STATUS_WORD>"<<Status<<
"</CHANNEL_STATUS_WORD>\n";
1637 xmlFile<<
" <CHANNEL_OBJECTNAME>HcalDetId</CHANNEL_OBJECTNAME>\n";
1638 xmlFile<<
" <SUBDET>"<<subdet<<
"</SUBDET>\n";
1639 xmlFile<<
" <IETA>"<<eta<<
"</IETA>\n";
1640 xmlFile<<
" <IPHI>"<<phi<<
"</IPHI>\n";
1641 xmlFile<<
" <DEPTH>"<<depth<<
"</DEPTH>\n";
1642 xmlFile<<
" <TYPE>0</TYPE>\n";
1643 xmlFile<<
" </DATA>\n";
1646 xmlFile<<
" </DATA_SET>\n";
1647 xmlFile<<
"</ROOT>\n";
1652 sprintf(str,
"HcalDetDiagLaserCalib_%i_%i.xml",run_number,dataset_seq_number);
1654 ofstream xmlFileCalib;
1655 xmlFileCalib.open(xmlNameCalib.c_str());
1657 xmlFileCalib<<
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n";
1658 xmlFileCalib<<
"<ROOT>\n";
1659 xmlFileCalib<<
" <HEADER>\n";
1660 xmlFileCalib<<
" <HINTS mode='only-det-root'/>\n";
1661 xmlFileCalib<<
" <TYPE>\n";
1662 xmlFileCalib<<
" <EXTENSION_TABLE_NAME>HCAL_DETMON_LED_LASER_V1</EXTENSION_TABLE_NAME>\n";
1663 xmlFileCalib<<
" <NAME>HCAL Laser CALIB [abort gap global]</NAME>\n";
1664 xmlFileCalib<<
" </TYPE>\n";
1665 xmlFileCalib<<
" <!-- run details -->\n";
1666 xmlFileCalib<<
" <RUN>\n";
1667 xmlFileCalib<<
" <RUN_TYPE>Global-RUN</RUN_TYPE>\n";
1668 xmlFileCalib<<
" <RUN_NUMBER>"<<run_number<<
"</RUN_NUMBER>\n";
1669 xmlFileCalib<<
" <RUN_BEGIN_TIMESTAMP>2009-01-01 00:00:00</RUN_BEGIN_TIMESTAMP>\n";
1670 xmlFileCalib<<
" <COMMENT_DESCRIPTION>hcal Laser CALIB data</COMMENT_DESCRIPTION>\n";
1671 xmlFileCalib<<
" <LOCATION>P5</LOCATION>\n";
1672 xmlFileCalib<<
" <INITIATED_BY_USER>dma</INITIATED_BY_USER>\n";
1673 xmlFileCalib<<
" </RUN>\n";
1674 xmlFileCalib<<
" </HEADER>\n";
1675 xmlFileCalib<<
" <DATA_SET>\n";
1676 xmlFileCalib<<
" <!-- optional dataset metadata -->\n\n";
1677 xmlFileCalib<<
" <SET_NUMBER>"<<dataset_seq_number<<
"</SET_NUMBER>\n";
1678 xmlFileCalib<<
" <SET_BEGIN_TIMESTAMP>2009-01-01 00:00:00</SET_BEGIN_TIMESTAMP>\n";
1679 xmlFileCalib<<
" <SET_END_TIMESTAMP>2009-01-01 00:00:00</SET_END_TIMESTAMP>\n";
1680 xmlFileCalib<<
" <NUMBER_OF_EVENTS_IN_SET>"<<ievt_<<
"</NUMBER_OF_EVENTS_IN_SET>\n";
1681 xmlFileCalib<<
" <COMMENT_DESCRIPTION>Automatic DQM output</COMMENT_DESCRIPTION>\n";
1682 xmlFileCalib<<
" <DATA_FILE_NAME>"<< xmlNameCalib <<
"</DATA_FILE_NAME>\n";
1683 xmlFileCalib<<
" <IMAGE_FILE_NAME>data plot url or file path</IMAGE_FILE_NAME>\n";
1684 xmlFileCalib<<
" <!-- who and when created this dataset-->\n\n";
1685 xmlFileCalib<<
" <CREATE_TIMESTAMP>"<<TIME<<
"</CREATE_TIMESTAMP>\n";
1686 xmlFileCalib<<
" <CREATED_BY_USER>dma</CREATED_BY_USER>\n";
1687 xmlFileCalib<<
" <!-- version (string) and subversion (number) -->\n";
1688 xmlFileCalib<<
" <!-- fields are used to read data back from the database -->\n\n";
1689 xmlFileCalib<<
" <VERSION>"<<run_number<<dataset_seq_number<<
"</VERSION>\n";
1690 xmlFileCalib<<
" <SUBVERSION>1</SUBVERSION>\n";
1691 xmlFileCalib<<
" <!-- Assign predefined dataset attributes -->\n\n";
1692 xmlFileCalib<<
" <PREDEFINED_ATTRIBUTES>\n";
1693 xmlFileCalib<<
" <ATTRIBUTE>\n";
1694 xmlFileCalib<<
" <NAME>HCAL Dataset Status</NAME>\n";
1695 xmlFileCalib<<
" <VALUE>VALID</VALUE>\n";
1696 xmlFileCalib<<
" </ATTRIBUTE>\n";
1697 xmlFileCalib<<
" </PREDEFINED_ATTRIBUTES>\n";
1698 xmlFileCalib<<
" <!-- multiple data block records -->\n\n";
1702 if(
sd==1) subdet=
"HB";
1703 if(
sd==2) subdet=
"HE";
1704 if(
sd==3) subdet=
"HO";
1705 if(
sd==4) subdet=
"HF";
1707 double e=0,e_rms=0,t=0,t_rms=0;
1712 xmlFileCalib<<
" <DATA>\n";
1713 xmlFileCalib<<
" <NUMBER_OF_EVENTS_USED>"<<Statistic<<
"</NUMBER_OF_EVENTS_USED>\n";
1714 xmlFileCalib<<
" <SIGNAL_MEAN>"<<e<<
"</SIGNAL_MEAN>\n";
1715 xmlFileCalib<<
" <SIGNAL_RMS>"<<e_rms<<
"</SIGNAL_RMS>\n";
1716 xmlFileCalib<<
" <TIME_MEAN>"<<t<<
"</TIME_MEAN>\n";
1717 xmlFileCalib<<
" <TIME_RMS>"<<t_rms<<
"</TIME_RMS>\n";
1718 xmlFileCalib<<
" <CHANNEL_STATUS_WORD>"<<Status<<
"</CHANNEL_STATUS_WORD>\n";
1719 xmlFileCalib<<
" <CHANNEL_OBJECTNAME>HcalDetId</CHANNEL_OBJECTNAME>\n";
1720 xmlFileCalib<<
" <SUBDET>"<<subdet<<
"</SUBDET>\n";
1721 xmlFileCalib<<
" <IETA>"<<
eta<<
"</IETA>\n";
1722 xmlFileCalib<<
" <IPHI>"<<
phi<<
"</IPHI>\n";
1723 xmlFileCalib<<
" <DEPTH>"<<0<<
"</DEPTH>\n";
1724 xmlFileCalib<<
" <TYPE>0</TYPE>\n";
1725 xmlFileCalib<<
" </DATA>\n";
1729 xmlFileCalib<<
" </DATA_SET>\n";
1730 xmlFileCalib<<
"</ROOT>\n";
1731 xmlFileCalib.close();
1733 sprintf(str,
"zip %s.zip %s %s",xmlName.c_str(),xmlName.c_str(),xmlNameCalib.c_str());
1735 sprintf(str,
"rm -f %s %s",xmlName.c_str(),xmlNameCalib.c_str());
1737 sprintf(str,
"mv -f %s.zip %s",xmlName.c_str(),
XmlFilePath.c_str());
1757 if(!f->IsOpen())
return ;
1758 TObjString *STR=(TObjString *)f->Get(
"run number");
1762 TTree*
t=(TTree*)f->Get(
"HCAL Laser data");
1764 t->SetBranchAddress(
"Subdet", subdet);
1765 t->SetBranchAddress(
"eta", &Eta);
1766 t->SetBranchAddress(
"phi", &Phi);
1767 t->SetBranchAddress(
"depth", &Depth);
1768 t->SetBranchAddress(
"amp", &);
1769 t->SetBranchAddress(
"rms", &rms);
1770 t->SetBranchAddress(
"time", &time);
1771 t->SetBranchAddress(
"time_rms", &time_rms);
1772 for(
int ievt=0;ievt<t->GetEntries();ievt++){
1774 if(strcmp(subdet,
"HB")==0)
hb_data[Eta+42][Phi-1][Depth-1].
set_reference(amp,rms,time,time_rms);
1775 if(strcmp(subdet,
"HE")==0)
he_data[Eta+42][Phi-1][Depth-1].
set_reference(amp,rms,time,time_rms);
1776 if(strcmp(subdet,
"HO")==0)
ho_data[Eta+42][Phi-1][Depth-1].
set_reference(amp,rms,time,time_rms);
1777 if(strcmp(subdet,
"HF")==0)
hf_data[Eta+42][Phi-1][Depth-1].
set_reference(amp,rms,time,time_rms);
1788 int Eta,
Phi,Depth,Statistic;
1793 if(gSystem->AccessPathName(
DatasetName.c_str()))
return;
1796 if(!f->IsOpen())
return ;
1799 t=(TTree*)f->Get(
"HCAL Laser data");
1801 t->SetBranchAddress(
"Subdet", subdet);
1802 t->SetBranchAddress(
"eta", &Eta);
1803 t->SetBranchAddress(
"phi", &Phi);
1804 t->SetBranchAddress(
"depth", &Depth);
1805 t->SetBranchAddress(
"amp", &);
1806 t->SetBranchAddress(
"rms", &rms);
1807 t->SetBranchAddress(
"time", &time);
1808 t->SetBranchAddress(
"time_rms", &time_rms);
1809 t->SetBranchAddress(
"statistic",&Statistic);
1810 for(
int ievt=0;ievt<t->GetEntries();ievt++){
1812 if(strcmp(subdet,
"HB")==0){
nHB++;
1817 if(strcmp(subdet,
"HE")==0){
nHE++;
1822 if(strcmp(subdet,
"HO")==0){
nHO++;
1827 if(strcmp(subdet,
"HF")==0){
nHF++;
1832 if(strcmp(subdet,
"CALIB_HB")==0){
1837 if(strcmp(subdet,
"CALIB_HE")==0){
1842 if(strcmp(subdet,
"CALIB_HO")==0){
1847 if(strcmp(subdet,
"CALIB_HF")==0){
1853 TObjString *STR1=(TObjString *)f->Get(
"run number");
1856 TObjString *STR2=(TObjString *)f->Get(
"Total events processed");
1859 TObjString *STR3=(TObjString *)f->Get(
"Dataset number");
1865 float adc_range[20]={14,28,40,52,67,132,202,262,322,397,722,1072,1372,1672,2047,3672,5422,6922,8422,10297};
1866 int adc_bins[20]={1,2,3,4,5,5,10,15,20,25,25,50,75,100,125,125,250,375,500,625};
1868 TF1 *fitFunc =
new TF1(
"fitFunc",
"gaus");
1869 if(fitFunc==0)
return;
1870 for(
int i=0;
i<56;
i++){
1871 float sum1=0,sum2=0,
n=0;
1873 for(
int j=0;
j<128;
j++){
1883 for(N=1;N<19;N++) if(sum1>adc_range[N-1] && sum1<adc_range[
N])
break;
1885 for(N=1;N<19;N++) if(sum2>adc_range[N-1] && sum2<adc_range[
N])
break;
1887 sprintf(str,
"Raddam(%i,%i,%i) S1",RADDAM_CH[
i].
eta,RADDAM_CH[
i].
phi,RADDAM_CH[
i].depth);
1888 S1[
i]=
new TH1F(str,str,10000/Ws1,0,10000);
1889 sprintf(str,
"Raddam(%i,%i,%i) S2",RADDAM_CH[
i].eta,RADDAM_CH[
i].phi,RADDAM_CH[
i].depth);
1890 S2[
i]=
new TH1F(str,str,10000/Ws1,0,10000);
1891 for(
int j=0;
j<128;
j++){
1893 S2[
i]->Fill(
adc2fC[j]-2.5,Raddam_data[
i].s2_adc[j]);
1896 S1[
i]->Fit(
"fitFunc");
1897 S1[
i]->GetFunction(
"fitFunc")->GetParameters(parm);
1901 Raddam_data[
i].
S1FITMEANER=
S1[
i]->GetFunction(
"fitFunc")->GetParError(1);
1903 Raddam_data[
i].
S1CHI2=
S1[
i]->GetFunction(
"fitFunc")->GetChisquare();
1904 Raddam_data[
i].
S1NDF=
S1[
i]->GetFunction(
"fitFunc")->GetNDF();
1906 S2[
i]->Fit(
"fitFunc");
1907 S2[
i]->GetFunction(
"fitFunc")->GetParameters(parm);
1911 Raddam_data[
i].
S2FITMEANER=
S2[
i]->GetFunction(
"fitFunc")->GetParError(1);
1913 Raddam_data[
i].
S2CHI2=
S2[
i]->GetFunction(
"fitFunc")->GetChisquare();
1914 Raddam_data[
i].
S2NDF=
S2[
i]->GetFunction(
"fitFunc")->GetNDF();
1919 Long_t
t; t=
time(0); strftime(TIME,30,
"%F %T",localtime(&t));
1924 sprintf(str,
"HcalDetDiagRaddam.xml");
1928 xmlFile.open(xmlName.c_str());
1929 xmlFile<<
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\" ?>\n";
1930 xmlFile<<
"<ROOT>\n";
1931 xmlFile<<
" <HEADER>\n";
1932 xmlFile<<
" <TYPE>\n";
1933 xmlFile<<
" <EXTENSION_TABLE_NAME>HCAL_RADDAM</EXTENSION_TABLE_NAME>\n";
1934 xmlFile<<
" <NAME>HCAL Raddam</NAME>\n";
1935 xmlFile<<
" </TYPE>\n";
1936 xmlFile<<
" <!-- run details -->\n";
1937 xmlFile<<
" <RUN>\n";
1938 xmlFile<<
" <RUN_TYPE>TEST LOCAL-RUN</RUN_TYPE>\n";
1939 xmlFile<<
" <RUN_NUMBER>"<<
run_number<<
"</RUN_NUMBER>\n";
1940 xmlFile<<
" <RUN_BEGIN_TIMESTAMP>"<<TIME<<
"</RUN_BEGIN_TIMESTAMP>\n";
1941 xmlFile<<
" <COMMENT_DESCRIPTION>hcal raddam data</COMMENT_DESCRIPTION>\n";
1942 xmlFile<<
" <LOCATION>P5</LOCATION>\n";
1943 xmlFile<<
" <INITIATED_BY_USER>dma</INITIATED_BY_USER>\n";
1944 xmlFile<<
" </RUN>\n";
1945 xmlFile<<
" </HEADER>\n";
1946 xmlFile<<
" <DATA_SET>\n";
1947 xmlFile<<
" <COMMENT_DESCRIPTION>Test Raddam data</COMMENT_DESCRIPTION>\n";
1948 xmlFile<<
" <CREATE_TIMESTAMP>"<<TIME<<
"</CREATE_TIMESTAMP>\n";
1949 xmlFile<<
" <CREATED_BY_USER>dma</CREATED_BY_USER>\n";
1950 xmlFile<<
" <VERSION>Test_Version_1</VERSION>\n";
1952 for(
int i=0;
i<56;
i++){
1953 xmlFile<<
" <DATA>\n";
1954 xmlFile<<
" <SUBDET>HF</SUBDET>\n";
1955 xmlFile<<
" <IETA>"<<RADDAM_CH[
i].
eta<<
"</IETA>\n";
1956 xmlFile<<
" <IPHI>"<<RADDAM_CH[
i].
phi<<
"</IPHI>\n";
1957 xmlFile<<
" <DEPTH>"<<RADDAM_CH[
i].
depth<<
"</DEPTH>\n";
1959 xmlFile<<
" <TOTEVNT>"<<Raddam_data[
i].
TOTEVNT<<
"</TOTEVNT>\n";
1960 xmlFile<<
" <CUT1EVNT>"<<Raddam_data[
i].
CUT1EVNT<<
"</CUT1EVNT>\n";
1961 xmlFile<<
" <CUT2EVNT>"<<Raddam_data[
i].
CUT2EVNT<<
"</CUT2EVNT>\n";
1963 xmlFile<<
" <S1MEAN>"<<Raddam_data[
i].
S1MEAN <<
"</S1MEAN>\n";
1964 xmlFile<<
" <S1RMS>"<<Raddam_data[
i].
S1RMS <<
"</S1RMS>\n";
1965 xmlFile<<
" <S1FITMEAN>"<<Raddam_data[
i].
S1FITMEAN <<
"</S1FITMEAN>\n";
1966 xmlFile<<
" <S1FITMEANER>"<<Raddam_data[
i].
S1FITMEANER <<
"</S1FITMEANER>\n";
1967 xmlFile<<
" <S1FITSIGMA>"<<Raddam_data[
i].
S1FITSIGMA <<
"</S1FITSIGMA>\n";
1968 xmlFile<<
" <S1CHI2>"<<Raddam_data[
i].
S1CHI2 <<
"</S1CHI2>\n";
1969 xmlFile<<
" <S1NDF>"<<Raddam_data[
i].
S1NDF <<
"</S1NDF>\n";
1970 xmlFile<<
" <S1BINWIDTH>"<<Raddam_data[
i].
S1BINWIDTH <<
"</S1BINWIDTH>\n";
1972 xmlFile<<
" <S2MEAN>"<<Raddam_data[
i].
S2MEAN <<
"</S2MEAN>\n";
1973 xmlFile<<
" <S2RMS>"<<Raddam_data[
i].
S2RMS <<
"</S2RMS>\n";
1974 xmlFile<<
" <S2FITMEAN>"<<Raddam_data[
i].
S2FITMEAN <<
"</S2FITMEAN>\n";
1975 xmlFile<<
" <S2FITMEANER>"<<Raddam_data[
i].
S2FITMEANER <<
"</S2FITMEANER>\n";
1976 xmlFile<<
" <S2FITSIGMA>"<<Raddam_data[
i].
S2FITSIGMA <<
"</S2FITSIGMA>\n";
1977 xmlFile<<
" <S2CHI2>"<<Raddam_data[
i].
S2CHI2 <<
"</S2CHI2>\n";
1978 xmlFile<<
" <S2NDF>"<<Raddam_data[
i].
S2NDF <<
"</S2NDF>\n";
1979 xmlFile<<
" <S2BINWIDTH>"<<Raddam_data[
i].
S2BINWIDTH <<
"</S2BINWIDTH>\n";
1980 xmlFile<<
" </DATA>\n";
1982 xmlFile<<
" </DATA_SET>\n";
1983 xmlFile<<
"</ROOT>\n";
1986 sprintf(str,
"zip %s.zip %s",xmlName.c_str(),xmlName.c_str());
1988 sprintf(str,
"rm -f %s",xmlName.c_str());
1990 sprintf(str,
"mv -f %s.zip %s",xmlName.c_str(),
XmlFilePath.c_str());
1997 sprintf(str,
"%sHcalDetDiagRaddamData.root",
OutputFilePath.c_str());
1999 TFile *
theFile =
new TFile(str,
"RECREATE");
2000 if(!theFile->IsOpen())
return;
2002 for(
int i=0;
i<56;
i++){
2003 if(
S1[
i]!=0)
S1[
i]->Write();
2004 if(
S2[
i]!=0)
S2[
i]->Write();
T getUntrackedParameter(std::string const &, T const &) const
void setBinContent(int binx, double content)
set content of bin (1-D)
edm::Ref< Container > Ref
void add_statistics(double *data, int nTS)
std::vector< HcalElectronicsId > allElectronicsIdPrecision() const
double GetEnergy(double *data, int n)
HcalDetDiagLaserData * GetCalib(std::string sd, int eta, int phi)
virtual void analyze(const edm::Event &e, const edm::EventSetup &c)
void set_reference(float val, float rms, float time, float time_rms)
MonitorElement * book1D(const char *name, const char *title, int nchX, double lowX, double highX)
Book 1D histogram.
void setAxisRange(double xmin, double xmax, int axis=1)
set x-, y- or z-axis range (axis=1, 2, 3 respectively)
bool get_average_amp(double *ave, double *rms)
MonitorElement * refTime2Dho
void beginLuminosityBlock(const edm::LuminosityBlock &lumiSeg, const edm::EventSetup &c)
bool get_average_amp1(double *ave, double *rms)
MonitorElement * Time2Dhbhehf
MonitorElement * hfEnergy
#define DEFINE_FWK_MODULE(type)
void beginRun(const edm::Run &run, const edm::EventSetup &c)
const HcalElectronicsMap * emap
double LaserTimingThreshold
std::vector< T >::const_iterator const_iterator
void setup(DQMStore *&m_dbe, std::string Name, std::string Units="")
void setBinLabel(int bin, const std::string &label, int axis=1)
set bin label for x, y or z axis (axis=1, 2, 3 respectively)
MonitorElement * hbheTimeRMS
const Item * getValues(DetId fId, bool throwOnFail=true) const
void set_statistics(int stat)
bool get_ave_subdet(int sd, float *ave_t, float *ave_e, float *ave_t_r, float *ave_e_r)
HcalRaddamData Raddam_data[56]
MonitorElement * ho_time_rbx
static const float adc2fC[128]
bool get_ave_rbx(int sd, int side, int rbx, float *ave, float *rms)
MonitorElement * Time2Dho
std::string htmlOutputPath
std::string ReferenceData
size_t size() const
Lenght of the data buffer in bytes.
bool get_average_time(double *ave, double *rms)
std::map< unsigned int, int > KnownBadCells_
MonitorElement * refEnergy2Dhbhehf
MonitorElement * hfTimeRMS
uint32_t rawId() const
get the raw id
MonitorElement * Raddam[56]
MonitorElement * refTime2Dhbhehf
void endRun(const edm::Run &run, const edm::EventSetup &c)
bool isSiPM(int ieta, int iphi, int depth)
int depth() const
get the tower depth
MVATrainerComputer * calib
std::vector< MonitorElement * > depth
EtaPhiHists * ProblemCellsByDepth_timing
~HcalDetDiagLaserMonitor()
const T & max(const T &a, const T &b)
MonitorElement * hbheTime
MonitorElement * bookString(const char *name, const char *value)
Book string.
void fillProblems(int sd)
MonitorElement * hbheEnergyRMS
MonitorElement * hb_time_rbx
void Fill(HcalDetId &id, double val, std::vector< TH2F > &depth)
MonitorElement * he_time_rbx
std::vector< DetId > getAllChannels() const
EtaPhiHists * ProblemCellsByDepth_energy_val
int ieta() const
get the cell ieta
edm::InputTag rawDataLabel_
void change_status(int val)
MonitorElement * htmlFolder
MonitorElement * hoTimeRMS
void setBinError(int binx, double error)
set uncertainty on content of bin (1-D)
MonitorElement * Energy2Dho
int subdetId() const
get the contents of the subdetector field (not cast into any detector's numbering enum) ...
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
int iphi() const
get the cell iphi
edm::InputTag hcalTBTriggerDataTag_
HcalDetDiagLaserData hb_data[85][72][4]
HcalDetDiagLaserMonitor(const edm::ParameterSet &)
MonitorElement * refEnergy2Dho
std::string OutputFilePath
bool get_average_time1(double *ave, double *rms)
MonitorElement * Energy2Dhbhehf
MonitorElement * hfEnergyRMS
EtaPhiHists * ProblemCellsByDepth_energy
T const * product() const
bool xmlFile(const std::string fParam)
int CalcEtaBin(int subdet, int ieta, int depth)
double GetTime(double *data, int n=10)
void set_statistics1(int stat)
MonitorElement * hbheEnergy
HcalDetDiagLaserData hf_data[85][72][4]
double LaserEnergyThreshold
char data[epos_bytes_allocation]
EtaPhiHists * ProblemCellsByDepth_timing_val
void analyze(const edm::Event &, const edm::EventSetup &)
const unsigned char * data() const
Return a const pointer to the beginning of the data buffer.
edm::InputTag calibDigiLabel_
const JetExtendedData & getValue(const Container &, const reco::JetBaseRef &)
get value for the association. Throw exception if no association found
MonitorElement * hoEnergyRMS
bool get_reference(double *val, double *rms, double *time, double *time_rms)
MonitorElement * hf_time_rbx
void set_data(float val, float rms, float time, float time_rms)
HcalDetDiagLaserData he_data[85][72][4]
MonitorElement * bookInt(const char *name)
Book int.
MonitorElement * book2D(const char *name, const char *title, int nchX, double lowX, double highX, int nchY, double lowY, double highY)
Book 2D histogram.
Detector det() const
get the detector field from this detid
void setAxisTitle(const std::string &title, int axis=1)
set x-, y- or z-axis title (axis=1, 2, 3 respectively)
std::vector< std::string > problemnames_
void Reset(void)
reset ME (ie. contents, errors, etc)
HcalDetDiagLaserData ho_data[85][72][4]
void endLuminosityBlock(const edm::LuminosityBlock &lumiSeg, const edm::EventSetup &c)
edm::InputTag inputLabelDigi_
HcalDetDiagLaserData calib_data[5][5][72]
const DetId lookup(HcalElectronicsId fId) const
lookup the logical detid associated with the given electronics id
void setCurrentFolder(const std::string &fullpath)
MonitorElement * hoEnergy