62 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,
63 13.5,15.,17.,19.,21.,23.,25.,27.,29.5,32.5,35.5,38.5,42.,46.,50.,54.5,59.5,
64 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,
65 124.5,129.5,137.,147.,157.,167.,177.,187.,197.,209.5,224.5,239.5,254.5,272.,
66 292.,312.,334.5,359.5,384.5,359.5,384.5,409.5,434.5,459.5,484.5,509.5,534.5,
67 559.5,584.5,609.5,634.5,659.5,684.5,709.5,747.,797.,847.,897.,947.,997.,
68 1047.,1109.5,1184.5,1259.5,1334.5,1422.,1522.,1622.,1734.5,1859.5,1984.5,
69 1859.5,1984.5,2109.5,2234.5,2359.5,2484.5,2609.5,2734.5,2859.5,2984.5,
70 3109.5,3234.5,3359.5,3484.5,3609.5,3797.,4047.,4297.,4547.,4797.,5047.,
71 5297.,5609.5,5984.5,6359.5,6734.5,7172.,7672.,8172.,8734.5,9359.5,9984.5};
79 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},
80 {-36,51,1},{-38,35,1},{-38,71,1},{-40,15,1},{-40,51,1},{-41,35,1},{-41,71,1},
81 {30,21,1}, {30,57,1}, {32,1,1}, {32,37,1}, {34,21,1}, {34,57,1}, {36,1,1 },
82 {36,37,1}, {38,21,1}, {38,57,1}, {40,35,1}, {40,71,1}, {41,19,1}, {41,55,1 },
83 {-30,15,2},{-30,51,2},{-32,35,2},{-32,71,2},{-34,15,2},{-34,51,2},{-36,35,2},
84 {-36,71,2},{-38,15,2},{-38,51,2},{-40,35,2},{-40,71,2},{-41,15,2},{-41,51,2},
85 {30,1,2}, {30,37,2}, {32,21,2}, {32,57,2}, {34,1,2}, {34,37,2}, {36,21,2 },
86 {36,57,2}, {38,1,2}, {38,37,2}, {40,19,2}, {40,55,2}, {41,35,2}, {41,71,2}};
210 int MaxI=0;
double Energy,MaxE=0;
211 for(
int j=0;
j<
n;++
j)
if(MaxE<data[
j]){ MaxE=data[
j]; MaxI=
j; }
213 if(MaxI>0) Energy+=data[MaxI-1];
214 if(MaxI>1) Energy+=data[MaxI-2];
215 if(MaxI<(n-1)) Energy+=data[MaxI+1];
216 if(MaxI<(n-2)) Energy+=data[MaxI+2];
220 int MaxI=-100;
double Time=-9999,SumT=0,MaxT=-10;
221 for(
int j=0;
j<
n;++
j)
if(MaxT<data[
j]){ MaxT=data[
j]; MaxI=
j; }
224 Time=MaxI*data[MaxI];
226 if(MaxI>0){ Time+=(MaxI-1)*data[MaxI-1]; SumT+=data[MaxI-1]; }
227 if(MaxI<(n-1)){ Time+=(MaxI+1)*data[MaxI+1]; SumT+=data[MaxI+1]; }
259 if(sd.compare(
"HB")==0) SD=1;
260 if(sd.compare(
"HE")==0) SD=2;
261 if(sd.compare(
"HO")==0) SD=3;
262 if(sd.compare(
"HF")==0) SD=4;
264 if(eta>0)
ETA=1;
else ETA=-1;
265 if(phi==71 ||phi==72 || phi==1 || phi==2)
PHI=71;
else PHI=((phi-3)/4)*4+3;
269 if(phi==71 ||phi==72 || phi==1 || phi==2 || phi==3 || phi==4)
PHI=71;
else PHI=((phi-5)/6)*6+5;
274 if(phi==71 ||phi==72 || (phi>=1 && phi<=10))
PHI=71;
else PHI=((phi-11)/12)*12+11;
277 if(eta>0)
ETA=1;
else ETA=-1;
278 if(phi>=1 && phi<=18)
PHI=1;
279 if(phi>=19 && phi<=36)
PHI=19;
280 if(phi>=37 && phi<=54)
PHI=37;
281 if(phi>=55 && phi<=72)
PHI=55;
307 bool get_ave_subdet(
int sd,
float *ave_t,
float *ave_e,
float *ave_t_r,
float *ave_e_r);
404 if (prefixME_.size()>0 && prefixME_.substr(prefixME_.size()-1,prefixME_.size())!=
"/")
405 prefixME_.append(
"/");
433 for (std::vector<DetId>::const_iterator
i = mydetids.begin();
i!=mydetids.end();++
i){
444 emap=conditions_->getHcalMapping();
487 name=
"HO Laser Timing Distribution";
hoTime =
dbe_->
book1D(name,name,200,0,10);
491 name=
"HF Laser Timing Distribution";
hfTime =
dbe_->
book1D(name,name,200,0,10);
548 for(
int i=0;
i<56;
i++){
549 sprintf(str,
"RADDAM (%i %i)",RADDAM_CH[
i].
eta,RADDAM_CH[
i].
phi);
571 static bool HBHEseq,HOseq,HFseq;
572 static int lastHBHEorbit,lastHOorbit,lastHForbit,nChecksHBHE,nChecksHO,nChecksHF,ievt_hbhe,ievt_ho,ievt_hf;
574 ievt_=0;HBHEseq=HOseq=HFseq=
false; lastHBHEorbit=lastHOorbit=lastHForbit=-1;nChecksHBHE=nChecksHO=nChecksHF=0;
575 ievt_hbhe=0,ievt_ho=0,ievt_hf=0;
579 bool LaserEvent=
false;
580 bool LaserRaddam=
false;
587 if(trigger_data->wasLaserTrigger()) LaserEvent=
true;
591 if(HBHEseq && (orbit-lastHBHEorbit)>(11223*10) && ievt_hbhe>40){
601 if(HOseq && (orbit-lastHOorbit)>(11223*10) && ievt_ho>40){
609 if(HFseq && (orbit-lastHForbit)>(11223*10) && ievt_hf>40){
615 if(nChecksHF==1 || (nChecksHF>1 && ((nChecksHF-1)%12)==0)){
623 if(
LocalRun==
false || LaserEvent==
false){
631 if ( fedData.
size() < 24 )
continue ;
633 if(value==
hc_HBHEHPD){ HBHEseq=
true; HOseq=HFseq=
false; lastHBHEorbit=orbit; ievt_hbhe++; }
634 if(value==
hc_HOHPD){ HOseq=
true; HBHEseq=HFseq=
false; lastHOorbit=orbit; ievt_ho++; }
635 if(value==
hc_HFPMT){ HFseq=
true; HBHEseq=HOseq=
false; lastHForbit=orbit; ievt_hf++; }
638 if(value==
hc_RADDAM){ LaserEvent=
true; LaserRaddam=
true;
break;}
641 if(!LaserEvent)
return;
655 eta=digi->id().ieta(); phi=digi->id().iphi(); depth=digi->id().depth();
657 for(
int i=0;
i<digi->size();
i++) e+=
adc2fC[digi->sample(
i).adc()&0xff]-2.5;
666 eta=digi->id().ieta(); phi=digi->id().iphi(); depth=digi->id().depth(); nTS=digi->size();
668 for(N=0;N<56;N++)
if(eta==RADDAM_CH[N].eta && phi==RADDAM_CH[N].phi && depth==RADDAM_CH[N].depth)
break;
672 for(
int i=0;
i<nTS;
i++){
673 if(max1<
adc2fC[digi->sample(
i).adc()&0xff]){ nmax1=
i; max1=
adc2fC[digi->sample(
i).adc()&0xff]; }
676 for(
int i=0;
i<nTS;
i++){
677 if(
i==nmax1)
continue;
678 if(max2<
adc2fC[digi->sample(
i).adc()&0xff]){ nmax2=
i; max2=
adc2fC[digi->sample(
i).adc()&0xff]; }
682 nmax2=nmax1;nmax1=tmp1;
684 if(nmax1==0 || nmax2==(nTS-1))
continue;
685 if(nmax2!=(nmax1+1))
continue;
689 max1-=2.5; max2-=2.5;
691 float S4=S2+
adc2fC[digi->sample(nmax1-1).adc()&0xff]+
adc2fC[digi->sample(nmax2+1).adc()&0xff]-5.0;
694 Raddam_data[
N].
s1_adc[digi->sample(nmax1).adc()&0xff]++;
695 Raddam_data[
N].
s2_adc[digi->sample(nmax2).adc()&0xff]++;
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;
709 for(
int i=0;
i<nTS;
i++) data[
i]=
adc2fC[digi->sample(
i).adc()&0xff]-ped;
713 for(
int i=0;
i<nTS;
i++) data[
i]=
adc2fC[digi->sample(
i).adc()&0xff]-ped;
720 eta=digi->id().ieta(); phi=digi->id().iphi(); depth=digi->id().depth(); nTS=digi->size();
721 double ped=(
adc2fC[digi->sample(0).adc()&0xff]+
adc2fC[digi->sample(1).adc()&0xff])/2.0;
722 if((eta>=11 && eta<=15 && phi>=59 && phi<=70) || (eta>=5 && eta<=10 && phi>=47 && phi<=58)){
723 for(
int i=0;
i<nTS;
i++) data[
i]=
adc2fC[digi->sample(
i).adc()&0xff]-ped;
725 for(
int i=0;
i<nTS;
i++) data[
i]=
adc2fC[digi->sample(
i).adc()&0xff]-ped;
732 eta=digi->id().ieta(); phi=digi->id().iphi(); depth=digi->id().depth(); nTS=digi->size();
733 double ped=
adc2fC[digi->sample(0).adc()&0xff];
734 for(
int i=0;
i<nTS;
i++) data[
i]=
adc2fC[digi->sample(
i).adc()&0xff]-ped;
739 if(digi->id().cboxChannel()!=0 || digi->id().hcalSubdet()==0)
continue;
742 for(
int i=0;
i<nTS;
i++){ data[
i]=
adc2fC[digi->sample(
i).adc()&0xff]; e+=data[
i];}
748 eta=digi->id().ieta(); phi=digi->id().iphi(); depth=digi->id().depth(); nTS=digi->size();
750 for(N=0;N<56;N++)
if(eta==RADDAM_CH[N].eta && phi==RADDAM_CH[N].phi && depth==RADDAM_CH[N].depth)
break;
759 double T=0,nT=0,E=0,nE=0,Tr=0,nTr=0,Er=0,nEr=0;
761 for(
int depth=1;depth<=2;depth++){
763 double ave=0,
rms=0,
time=0,time_rms=0;
766 T+=
time; nT++; E+=ave; nE++;
768 Tr+=
time; nTr++; Er+=ave; nEr++;}
774 for(
int depth=1;depth<=3;depth++){
776 double ave=0;
double rms=0;
double time=0;
double time_rms=0;
779 T+=
time; nT++; E+=ave; nE++;
780 if(
he_data[
eta+42][
phi-1][depth-1].get_reference(&ave,&rms,&time,&time_rms)){
781 Tr+=
time; nTr++; Er+=ave; nEr++;}
787 for(
int depth=1;depth<=2;depth++){
789 double ave=0;
double rms=0;
double time=0;
double time_rms=0;
792 T+=
time; nT++; E+=ave; nE++;
793 if(
hf_data[
eta+42][
phi-1][depth-1].get_reference(&ave,&rms,&time,&time_rms)){
794 Tr+=
time; nTr++; Er+=ave; nEr++;}
800 for(
int depth=4;depth<=4;depth++){
802 double ave=0;
double rms=0;
double time=0;
double time_rms=0;
805 T+=
time; nT++; E+=ave; nE++;
806 if(
ho_data[
eta+42][
phi-1][depth-1].get_reference(&ave,&rms,&time,&time_rms)){
807 Tr+=
time; nTr++; Er+=ave; nEr++;}
811 if(nT<200 || nE<200 || nTr<200 || nEr<200)
return false;
820 float ave_t,ave_e,ave_t_r,ave_e_r;
823 for(
int i=0;
i<4;
i++){
829 for (std::vector <HcalElectronicsId>::iterator eid = AllElIds.begin(); eid != AllElIds.end(); eid++){
833 if(!(!(gid.null()) &&
847 double val=0,
rms=0,
time=0,time_rms=0,VAL=0,RMS=0,TIME=0,TIME_RMS=0;
848 if(!
hb_data[eta+42][
phi-1][depth-1].get_reference(&val,&
rms,&
time,&time_rms))
continue;
849 if(!
hb_data[eta+42][
phi-1][depth-1].get_average_amp(&VAL,&RMS))
continue;
850 if(!
hb_data[eta+42][
phi-1][depth-1].get_average_time(&TIME,&TIME_RMS))
continue;
852 float diff_t=(TIME-ave_t)-(
time-ave_t_r);
if(diff_t<0) diff_t=-diff_t;
857 if(VAL!=0 && val!=0 && ave_e!=0 && ave_e_r!=0){
858 float diff_e=((VAL/ave_e))/(val/ave_e_r);
866 double val=0,
rms=0,
time=0,time_rms=0,VAL=0,RMS=0,TIME=0,TIME_RMS=0;
867 if(!
he_data[eta+42][
phi-1][depth-1].get_reference(&val,&
rms,&
time,&time_rms))
continue;
868 if(!
he_data[eta+42][
phi-1][depth-1].get_average_amp(&VAL,&RMS))
continue;
869 if(!
he_data[eta+42][
phi-1][depth-1].get_average_time(&TIME,&TIME_RMS))
continue;
871 float diff_t=(TIME-ave_t)-(
time-ave_t_r);
if(diff_t<0) diff_t=-diff_t;
876 if(VAL!=0 && val!=0 && ave_e!=0 && ave_e_r!=0){
877 float diff_e=((VAL/ave_e))/(val/ave_e_r);
885 double val=0,
rms=0,
time=0,time_rms=0,VAL=0,RMS=0,TIME=0,TIME_RMS=0;
886 if(!
ho_data[eta+42][
phi-1][depth-1].get_reference(&val,&
rms,&
time,&time_rms))
continue;
887 if(!
ho_data[eta+42][
phi-1][depth-1].get_average_amp(&VAL,&RMS))
continue;
888 if(!
ho_data[eta+42][
phi-1][depth-1].get_average_time(&TIME,&TIME_RMS))
continue;
890 float diff_t=(TIME-ave_t)-(
time-ave_t_r);
if(diff_t<0) diff_t=-diff_t;
895 if(VAL!=0 && val!=0 && ave_e!=0 && ave_e_r!=0){
896 float diff_e=((VAL/ave_e))/(val/ave_e_r);
904 double val=0,
rms=0,
time=0,time_rms=0,VAL=0,RMS=0,TIME=0,TIME_RMS=0;
905 if(!
hf_data[eta+42][
phi-1][depth-1].get_reference(&val,&
rms,&
time,&time_rms))
continue;
906 if(!
hf_data[eta+42][
phi-1][depth-1].get_average_amp(&VAL,&RMS))
continue;
907 if(!
hf_data[eta+42][
phi-1][depth-1].get_average_time(&TIME,&TIME_RMS))
continue;
909 float diff_t=(TIME-ave_t)-(
time-ave_t_r);
if(diff_t<0) diff_t=-diff_t;
914 if(VAL!=0 && val!=0 && ave_e!=0 && ave_e_r!=0){
915 float diff_e=((VAL/ave_e))/(val/ave_e_r);
923 for (std::vector <HcalElectronicsId>::iterator eid = AllElIds.begin(); eid != AllElIds.end(); eid++){
927 if(!(!(gid.null()) &&
939 if(
hb_data[eta+42][
phi-1][depth-1].nBadTime>0){
944 if(
hb_data[eta+42][
phi-1][depth-1].nBadEnergy>0){
951 if(
he_data[eta+42][
phi-1][depth-1].nBadTime>0){
956 if(
he_data[eta+42][
phi-1][depth-1].nBadEnergy>0){
963 if(
ho_data[eta+42][
phi-1][depth-1].nBadTime>0){
968 if(
ho_data[eta+42][
phi-1][depth-1].nBadEnergy>0){
975 if(
hf_data[eta+42][
phi-1][depth-1].nBadTime>0){
980 if(
hf_data[eta+42][
phi-1][depth-1].nBadEnergy>0){
991 int eta_min=0,eta_max=0,
n=0;
993 if(side>0){eta_min=1; eta_max=29;}
994 if(side<0){eta_min=-29; eta_max=-1;}
996 for(
int i=eta_min;
i<=eta_max;
i++)
for(
int j=71;
j<=72;
j++)
for(
int k=1;
k<=3;
k++){
998 double TIME,TIME_RMS;
999 if(!
hb_data[
i+42][
j-1][
k-1].get_reference(&val,&rms,&time,&time_rms))
continue;
1000 if(!
hb_data[
i+42][
j-1][
k-1].get_average_time(&TIME,&TIME_RMS))
continue;
1001 xt+=TIME-
time; xxt+=(TIME-
time)*(TIME-time);
n++;
1003 for(
int i=eta_min;
i<=eta_max;
i++)
for(
int j=1;
j<=2;
j++)
for(
int k=1;
k<=3;
k++){
1005 double TIME,TIME_RMS;
1006 if(!
hb_data[
i+42][
j-1][
k-1].get_reference(&val,&rms,&time,&time_rms))
continue;
1007 if(!
hb_data[
i+42][
j-1][
k-1].get_average_time(&TIME,&TIME_RMS))
continue;
1008 xt+=TIME-
time; xxt+=(TIME-
time)*(TIME-time);
n++;
1012 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++){
1014 double TIME,TIME_RMS;
1015 if(!
hb_data[
i+42][
j-1][
k-1].get_reference(&val,&rms,&time,&time_rms))
continue;
1016 if(!
hb_data[
i+42][
j-1][
k-1].get_average_time(&TIME,&TIME_RMS))
continue;
1017 xt+=TIME-
time; xxt+=(TIME-
time)*(TIME-time);
n++;
1022 if(side>0){eta_min=1; eta_max=29;}
1023 if(side<0){eta_min=-29; eta_max=-1;}
1025 for(
int i=eta_min;
i<=eta_max;
i++)
for(
int j=71;
j<=72;
j++)
for(
int k=1;
k<=3;
k++){
1027 double TIME,TIME_RMS;
1028 if(!
he_data[
i+42][
j-1][
k-1].get_reference(&val,&rms,&time,&time_rms))
continue;
1029 if(!
he_data[
i+42][
j-1][
k-1].get_average_time(&TIME,&TIME_RMS))
continue;
1030 xt+=TIME-
time; xxt+=(TIME-
time)*(TIME-time);
n++;
1032 for(
int i=eta_min;
i<=eta_max;
i++)
for(
int j=1;
j<=2;
j++)
for(
int k=1;
k<=3;
k++){
1034 double TIME,TIME_RMS;
1035 if(!
he_data[
i+42][
j-1][
k-1].get_reference(&val,&rms,&time,&time_rms))
continue;
1036 if(!
he_data[
i+42][
j-1][
k-1].get_average_time(&TIME,&TIME_RMS))
continue;
1037 xt+=TIME-
time; xxt+=(TIME-
time)*(TIME-time);
n++;
1041 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++){
1043 double TIME,TIME_RMS;
1044 if(!
he_data[
i+42][
j-1][
k-1].get_reference(&val,&rms,&time,&time_rms))
continue;
1045 if(!
he_data[
i+42][
j-1][
k-1].get_average_time(&TIME,&TIME_RMS))
continue;
1046 xt+=TIME-
time; xxt+=(TIME-
time)*(TIME-time);
n++;
1051 if(side>0){eta_min=29; eta_max=40;}
1052 if(side<0){eta_min=-40; eta_max=-29;}
1053 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++){
1055 double TIME,TIME_RMS;
1056 if(!
hf_data[
i+42][
j-1][
k-1].get_reference(&val,&rms,&time,&time_rms))
continue;
1057 if(!
hf_data[
i+42][
j-1][
k-1].get_average_time(&TIME,&TIME_RMS))
continue;
1058 xt+=TIME-
time; xxt+=(TIME-
time)*(TIME-time);
n++;
1063 eta_min=-4,eta_max=4;
1065 for(
int i=eta_min;
i<=eta_max;
i++)
for(
int j=71;
j<=72;
j++){
1067 double TIME,TIME_RMS;
1068 if(!
ho_data[
i+42][
j-1][4-1].get_reference(&val,&rms,&time,&time_rms))
continue;
1069 if(!
ho_data[
i+42][
j-1][4-1].get_average_time(&TIME,&TIME_RMS))
continue;
1070 xt+=TIME-
time; xxt+=(TIME-
time)*(TIME-time);
n++;
1072 for(
int i=eta_min;
i<=eta_max;
i++)
for(
int j=1;
j<=4;
j++){
1074 double TIME,TIME_RMS;
1075 if(!
ho_data[
i+42][
j-1][4-1].get_reference(&val,&rms,&time,&time_rms))
continue;
1076 if(!
ho_data[
i+42][
j-1][4-1].get_average_time(&TIME,&TIME_RMS))
continue;
1077 xt+=TIME-
time; xxt+=(TIME-
time)*(TIME-time);
n++;
1081 for(
int i=eta_min;
i<=eta_max;
i++)
for(
int j=((rbx-1)*6-1);
j<=((rbx-1)*6+4);
j++){
1083 double TIME,TIME_RMS;
1084 if(!
ho_data[
i+42][
j-1][4-1].get_reference(&val,&rms,&time,&time_rms))
continue;
1085 if(!
ho_data[
i+42][
j-1][4-1].get_average_time(&TIME,&TIME_RMS))
continue;
1086 xt+=TIME-
time; xxt+=(TIME-
time)*(TIME-time);
n++;
1090 if(side==-1){ eta_min=-10,eta_max=-5;}
1091 if(side==-2){ eta_min=-15,eta_max=-11;}
1092 if(side==1) { eta_min=5, eta_max=10;}
1093 if(side==2) { eta_min=11, eta_max=15;}
1096 for(
int i=eta_min;
i<=eta_max;
i++)
for(
int j=71;
j<=72;
j++){
1098 double TIME,TIME_RMS;
1099 if(!
ho_data[
i+42][
j-1][4-1].get_reference(&val,&rms,&time,&time_rms))
continue;
1100 if(!
ho_data[
i+42][
j-1][4-1].get_average_time(&TIME,&TIME_RMS))
continue;
1101 xt+=TIME-
time; xxt+=(TIME-
time)*(TIME-time);
n++;
1103 for(
int i=eta_min;
i<=eta_max;
i++)
for(
int j=1;
j<=10;
j++){
1105 double TIME,TIME_RMS;
1106 if(!
ho_data[
i+42][
j-1][4-1].get_reference(&val,&rms,&time,&time_rms))
continue;
1107 if(!
ho_data[
i+42][
j-1][4-1].get_average_time(&TIME,&TIME_RMS))
continue;
1108 xt+=TIME-
time; xxt+=(TIME-
time)*(TIME-time);
n++;
1112 for(
int i=eta_min;
i<=eta_max;
i++)
for(
int j=((rbx-1)*12-1);
j<=((rbx-1)*12+10);
j++){
1114 double TIME,TIME_RMS;
1115 if(!
ho_data[
i+42][
j-1][4-1].get_reference(&val,&rms,&time,&time_rms))
continue;
1116 if(!
ho_data[
i+42][
j-1][4-1].get_average_time(&TIME,&TIME_RMS))
continue;
1117 xt+=TIME-
time; xxt+=(TIME-
time)*(TIME-time);
n++;
1122 if(
n<10)
return false;
1124 *rms=
sqrt(xxt/
n-(xt*xt)/(
n*
n));
1159 double T=0,nT=0,E=0,nE=0;
1160 for(
int depth=1;depth<=2;depth++){
1172 T+=
time; nT++; E+=ave; nE++;
1179 double T=0,nT=0,E=0,nE=0;
1180 for(
int depth=1;depth<=3;depth++){
1182 double ave=0;
double rms=0;
double time=0;
double time_rms=0;
1189 T+=
time; nT++; E+=ave; nE++;
1199 double T=0,nT=0,E=0,nE=0;
1200 for(
int depth=1;depth<=2;depth++){
1202 double ave=0;
double rms=0;
double time=0;
double time_rms=0;
1208 T+=
time; nT++; E+=ave; nE++;
1220 double T=0,nT=0,E=0,nE=0;
1221 for(
int depth=4;depth<=4;depth++){
1223 double ave=0;
double rms=0;
double time=0;
double time_rms=0;
1229 T+=
time; nT++; E+=ave; nE++;
1240 double T=0,nT=0,E=0,nE=0;
1241 for(
int depth=1;depth<=2;depth++){
1243 double val=0,
rms=0,
time=0,time_rms=0;
1244 double VAL=0,RMS=0,TIME=0,TIME_RMS=0;
1246 if(!
hb_data[
eta+42][
phi-1][depth-1].get_average_amp(&VAL,&RMS))
continue;
1247 if(!
hb_data[
eta+42][
phi-1][depth-1].get_average_time(&TIME,&TIME_RMS))
continue;
1256 double T=0,nT=0,E=0,nE=0;
1257 for(
int depth=1;depth<=3;depth++){
1259 double val=0,
rms=0,
time=0,time_rms=0;
1260 double VAL=0,RMS=0,TIME=0,TIME_RMS=0;
1262 if(!
he_data[
eta+42][
phi-1][depth-1].get_average_amp(&VAL,&RMS))
continue;
1263 if(!
he_data[
eta+42][
phi-1][depth-1].get_average_time(&TIME,&TIME_RMS))
continue;
1276 double T=0,nT=0,E=0,nE=0;
1277 for(
int depth=1;depth<=2;depth++){
1279 double val=0,
rms=0,
time=0,time_rms=0;
1280 double VAL=0,RMS=0,TIME=0,TIME_RMS=0;
1282 if(!
hf_data[
eta+42][
phi-1][depth-1].get_average_amp(&VAL,&RMS))
continue;
1283 if(!
hf_data[
eta+42][
phi-1][depth-1].get_average_time(&TIME,&TIME_RMS))
continue;
1297 double T=0,nT=0,E=0,nE=0;
1298 for(
int depth=4;depth<=4;depth++){
1300 double val=0,
rms=0,
time=0,time_rms=0;
1301 double VAL=0,RMS=0,TIME=0,TIME_RMS=0;
1303 if(!
ho_data[
eta+42][
phi-1][depth-1].get_average_amp(&VAL,&RMS))
continue;
1304 if(!
ho_data[
eta+42][
phi-1][depth-1].get_average_time(&TIME,&TIME_RMS))
continue;
1317 for(
int i=1;
i<=18;
i++){
1318 float ave=-10,
rms=-10;
1322 if(ave<min) min=ave;
1323 if(ave>max) max=ave;
1326 for(
int i=1;
i<=18;
i++){
1327 float ave=-10,
rms=-10;
1331 if(ave<min) min=ave;
1332 if(ave>max) max=ave;
1337 for(
int i=1;
i<=18;
i++){
1338 float ave=-10,
rms=-10;
1342 if(ave<min) min=ave;
1343 if(ave>max) max=ave;
1346 for(
int i=1;
i<=18;
i++){
1347 float ave=-10,
rms=-10;
1351 if(ave<min) min=ave;
1352 if(ave>max) max=ave;
1360 for(
int i=1;
i<=6;
i++){
1361 float ave=-10,
rms=-10;
1365 if(ave<min) min=ave;
1366 if(ave>max) max=ave;
1369 for(
int i=1;
i<=6;
i++){
1370 float ave=-10,
rms=-10;
1374 if(ave<min) min=ave;
1375 if(ave>max) max=ave;
1378 for(
int i=1;
i<=12;
i++){
1379 float ave=-10,
rms=-10;
1383 if(ave<min) min=ave;
1384 if(ave>max) max=ave;
1387 for(
int i=1;
i<=6;
i++){
1388 float ave=-10,
rms=-10;
1392 if(ave<min) min=ave;
1393 if(ave>max) max=ave;
1396 for(
int i=1;
i<=6;
i++){
1397 float ave=-10,
rms=-10;
1401 if(ave<min) min=ave;
1402 if(ave>max) max=ave;
1410 for(
int i=1;
i<=12;
i++){
1411 float ave=-10,
rms=-10;
1415 if(ave<min) min=ave;
1416 if(ave>max) max=ave;
1419 for(
int i=1;
i<=12;
i++){
1420 float ave=-10,
rms=-10;
1424 if(ave<min) min=ave;
1425 if(ave>max) max=ave;
1433 double amp,
rms,Time,time_rms;
1435 char Subdet[10],str[500];
1440 sprintf(str,
"%sHcalDetDiagLaserData.root",
OutputFilePath.c_str());
1442 TFile *
theFile =
new TFile(str,
"RECREATE");
1443 if(!theFile->IsOpen())
return;
1445 sprintf(str,
"%d",
run_number); TObjString
run(str); run.Write(
"run number");
1446 sprintf(str,
"%d",
ievt_); TObjString
events(str); events.Write(
"Total events processed");
1447 sprintf(str,
"%d",
dataset_seq_number); TObjString dsnum(str); dsnum.Write(
"Dataset number");
1448 Long_t
t; t=
time(0); strftime(str,30,
"%F %T",localtime(&t)); TObjString tm(str); tm.Write(
"Dataset creation time");
1450 TTree *
tree =
new TTree(
"HCAL Laser data",
"HCAL Laser data");
1452 tree->Branch(
"Subdet", &Subdet,
"Subdet/C");
1453 tree->Branch(
"eta", &Eta,
"Eta/I");
1454 tree->Branch(
"phi", &Phi,
"Phi/I");
1455 tree->Branch(
"depth", &Depth,
"Depth/I");
1456 tree->Branch(
"statistic",&Statistic,
"Statistic/I");
1457 tree->Branch(
"status", &Status,
"Status/I");
1458 tree->Branch(
"amp", &,
"amp/D");
1459 tree->Branch(
"rms", &rms,
"rms/D");
1460 tree->Branch(
"time", &Time,
"time/D");
1461 tree->Branch(
"time_rms", &time_rms,
"time_rms/D");
1462 sprintf(Subdet,
"HB");
1463 for(
int eta=-16;
eta<=16;
eta++)
for(
int phi=1;
phi<=72;
phi++)
for(
int depth=1;depth<=2;depth++){
1464 if((Statistic=
hb_data[
eta+42][
phi-1][depth-1].get_statistics1())>10){
1465 Eta=
eta; Phi=
phi; Depth=depth;
1472 sprintf(Subdet,
"HE");
1473 for(
int eta=-29;
eta<=29;
eta++)
for(
int phi=1;
phi<=72;
phi++)
for(
int depth=1;depth<=3;depth++){
1474 if((Statistic=
he_data[
eta+42][
phi-1][depth-1].get_statistics1())>10){
1475 Eta=
eta; Phi=
phi; Depth=depth;
1482 sprintf(Subdet,
"HO");
1483 for(
int eta=-15;
eta<=15;
eta++)
for(
int phi=1;
phi<=72;
phi++)
for(
int depth=4;depth<=4;depth++){
1484 if((Statistic=
ho_data[
eta+42][
phi-1][depth-1].get_statistics1())>10){
1485 Eta=
eta; Phi=
phi; Depth=depth;
1492 sprintf(Subdet,
"HF");
1493 for(
int eta=-42;
eta<=42;
eta++)
for(
int phi=1;
phi<=72;
phi++)
for(
int depth=1;depth<=2;depth++){
1494 if((Statistic=
hf_data[
eta+42][
phi-1][depth-1].get_statistics1())>10){
1495 Eta=
eta; Phi=
phi; Depth=depth;
1502 sprintf(Subdet,
"CALIB_HB");
1505 Eta=
eta; Phi=
phi; Depth=0;
1512 sprintf(Subdet,
"CALIB_HE");
1515 Eta=
eta; Phi=
phi; Depth=0;
1522 sprintf(Subdet,
"CALIB_HO");
1525 Eta=
eta; Phi=
phi; Depth=0;
1532 sprintf(Subdet,
"CALIB_HF");
1535 Eta=
eta; Phi=
phi; Depth=0;
1547 Long_t
t; t=
time(0); strftime(TIME,30,
"%F %T",localtime(&t));
1552 sprintf(str,
"HcalDetDiagLaser.xml");
1556 xmlFile.open(xmlName.c_str());
1558 xmlFile<<
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n";
1559 xmlFile<<
"<ROOT>\n";
1560 xmlFile<<
" <HEADER>\n";
1561 xmlFile<<
" <HINTS mode='only-det-root'/>\n";
1562 xmlFile<<
" <TYPE>\n";
1563 xmlFile<<
" <EXTENSION_TABLE_NAME>HCAL_DETMON_LED_LASER_V1</EXTENSION_TABLE_NAME>\n";
1564 xmlFile<<
" <NAME>HCAL Laser HBHE HPD [abort gap global]</NAME>\n";
1565 xmlFile<<
" </TYPE>\n";
1566 xmlFile<<
" <!-- run details -->\n";
1567 xmlFile<<
" <RUN>\n";
1568 xmlFile<<
" <RUN_TYPE>GLOBAL-RUN</RUN_TYPE>\n";
1569 xmlFile<<
" <RUN_NUMBER>"<<
run_number<<
"</RUN_NUMBER>\n";
1570 xmlFile<<
" <RUN_BEGIN_TIMESTAMP>2009-01-01 00:00:00</RUN_BEGIN_TIMESTAMP>\n";
1571 xmlFile<<
" <COMMENT_DESCRIPTION>hcal laser data</COMMENT_DESCRIPTION>\n";
1572 xmlFile<<
" <LOCATION>P5</LOCATION>\n";
1573 xmlFile<<
" <INITIATED_BY_USER>dma</INITIATED_BY_USER>\n";
1574 xmlFile<<
" </RUN>\n";
1575 xmlFile<<
" </HEADER>\n";
1576 xmlFile<<
" <DATA_SET>\n";
1577 xmlFile<<
" <!-- optional dataset metadata -->\n\n";
1579 xmlFile<<
" <SET_BEGIN_TIMESTAMP>2009-01-01 00:00:00</SET_BEGIN_TIMESTAMP>\n";
1580 xmlFile<<
" <SET_END_TIMESTAMP>2009-01-01 00:00:00</SET_END_TIMESTAMP>\n";
1581 xmlFile<<
" <NUMBER_OF_EVENTS_IN_SET>"<<
ievt_<<
"</NUMBER_OF_EVENTS_IN_SET>\n";
1582 xmlFile<<
" <COMMENT_DESCRIPTION>Automatic DQM output</COMMENT_DESCRIPTION>\n";
1583 xmlFile<<
" <DATA_FILE_NAME>"<< xmlName <<
"</DATA_FILE_NAME>\n";
1584 xmlFile<<
" <IMAGE_FILE_NAME>data plot url or file path</IMAGE_FILE_NAME>\n";
1585 xmlFile<<
" <!-- who and when created this dataset-->\n\n";
1586 xmlFile<<
" <CREATE_TIMESTAMP>"<<TIME<<
"</CREATE_TIMESTAMP>\n";
1587 xmlFile<<
" <CREATED_BY_USER>dma</CREATED_BY_USER>\n";
1588 xmlFile<<
" <!-- version (string) and subversion (number) -->\n";
1589 xmlFile<<
" <!-- fields are used to read data back from the database -->\n\n";
1590 xmlFile<<
" <VERSION>"<<run_number<<dataset_seq_number<<
"</VERSION>\n";
1591 xmlFile<<
" <SUBVERSION>1</SUBVERSION>\n";
1592 xmlFile<<
" <!-- Assign predefined dataset attributes -->\n\n";
1593 xmlFile<<
" <PREDEFINED_ATTRIBUTES>\n";
1594 xmlFile<<
" <ATTRIBUTE>\n";
1595 xmlFile<<
" <NAME>HCAL Dataset Status</NAME>\n";
1596 xmlFile<<
" <VALUE>VALID</VALUE>\n";
1597 xmlFile<<
" </ATTRIBUTE>\n";
1598 xmlFile<<
" </PREDEFINED_ATTRIBUTES>\n";
1599 xmlFile<<
" <!-- multiple data block records -->\n\n";
1602 for(std::vector <HcalElectronicsId>::iterator eid = AllElIds.begin(); eid != AllElIds.end(); eid++){
1606 if(!(!(gid.null()) &&
1618 double e=0,e_rms=0,t=0,t_rms=0;
1644 xmlFile<<
" <DATA>\n";
1645 xmlFile<<
" <NUMBER_OF_EVENTS_USED>"<<Statistic<<
"</NUMBER_OF_EVENTS_USED>\n";
1646 xmlFile<<
" <SIGNAL_MEAN>"<<e<<
"</SIGNAL_MEAN>\n";
1647 xmlFile<<
" <SIGNAL_RMS>"<<e_rms<<
"</SIGNAL_RMS>\n";
1648 xmlFile<<
" <TIME_MEAN>"<<t<<
"</TIME_MEAN>\n";
1649 xmlFile<<
" <TIME_RMS>"<<t_rms<<
"</TIME_RMS>\n";
1650 xmlFile<<
" <CHANNEL_STATUS_WORD>"<<Status<<
"</CHANNEL_STATUS_WORD>\n";
1651 xmlFile<<
" <CHANNEL_OBJECTNAME>HcalDetId</CHANNEL_OBJECTNAME>\n";
1652 xmlFile<<
" <SUBDET>"<<subdet<<
"</SUBDET>\n";
1653 xmlFile<<
" <IETA>"<<eta<<
"</IETA>\n";
1654 xmlFile<<
" <IPHI>"<<phi<<
"</IPHI>\n";
1655 xmlFile<<
" <DEPTH>"<<depth<<
"</DEPTH>\n";
1656 xmlFile<<
" <TYPE>0</TYPE>\n";
1657 xmlFile<<
" </DATA>\n";
1660 xmlFile<<
" </DATA_SET>\n";
1661 xmlFile<<
"</ROOT>\n";
1666 sprintf(str,
"HcalDetDiagLaserCalib_%i_%i.xml",run_number,dataset_seq_number);
1668 std::ofstream xmlFileCalib;
1669 xmlFileCalib.open(xmlNameCalib.c_str());
1671 xmlFileCalib<<
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n";
1672 xmlFileCalib<<
"<ROOT>\n";
1673 xmlFileCalib<<
" <HEADER>\n";
1674 xmlFileCalib<<
" <HINTS mode='only-det-root'/>\n";
1675 xmlFileCalib<<
" <TYPE>\n";
1676 xmlFileCalib<<
" <EXTENSION_TABLE_NAME>HCAL_DETMON_LED_LASER_V1</EXTENSION_TABLE_NAME>\n";
1677 xmlFileCalib<<
" <NAME>HCAL Laser CALIB [abort gap global]</NAME>\n";
1678 xmlFileCalib<<
" </TYPE>\n";
1679 xmlFileCalib<<
" <!-- run details -->\n";
1680 xmlFileCalib<<
" <RUN>\n";
1681 xmlFileCalib<<
" <RUN_TYPE>Global-RUN</RUN_TYPE>\n";
1682 xmlFileCalib<<
" <RUN_NUMBER>"<<run_number<<
"</RUN_NUMBER>\n";
1683 xmlFileCalib<<
" <RUN_BEGIN_TIMESTAMP>2009-01-01 00:00:00</RUN_BEGIN_TIMESTAMP>\n";
1684 xmlFileCalib<<
" <COMMENT_DESCRIPTION>hcal Laser CALIB data</COMMENT_DESCRIPTION>\n";
1685 xmlFileCalib<<
" <LOCATION>P5</LOCATION>\n";
1686 xmlFileCalib<<
" <INITIATED_BY_USER>dma</INITIATED_BY_USER>\n";
1687 xmlFileCalib<<
" </RUN>\n";
1688 xmlFileCalib<<
" </HEADER>\n";
1689 xmlFileCalib<<
" <DATA_SET>\n";
1690 xmlFileCalib<<
" <!-- optional dataset metadata -->\n\n";
1691 xmlFileCalib<<
" <SET_NUMBER>"<<dataset_seq_number<<
"</SET_NUMBER>\n";
1692 xmlFileCalib<<
" <SET_BEGIN_TIMESTAMP>2009-01-01 00:00:00</SET_BEGIN_TIMESTAMP>\n";
1693 xmlFileCalib<<
" <SET_END_TIMESTAMP>2009-01-01 00:00:00</SET_END_TIMESTAMP>\n";
1694 xmlFileCalib<<
" <NUMBER_OF_EVENTS_IN_SET>"<<ievt_<<
"</NUMBER_OF_EVENTS_IN_SET>\n";
1695 xmlFileCalib<<
" <COMMENT_DESCRIPTION>Automatic DQM output</COMMENT_DESCRIPTION>\n";
1696 xmlFileCalib<<
" <DATA_FILE_NAME>"<< xmlNameCalib <<
"</DATA_FILE_NAME>\n";
1697 xmlFileCalib<<
" <IMAGE_FILE_NAME>data plot url or file path</IMAGE_FILE_NAME>\n";
1698 xmlFileCalib<<
" <!-- who and when created this dataset-->\n\n";
1699 xmlFileCalib<<
" <CREATE_TIMESTAMP>"<<TIME<<
"</CREATE_TIMESTAMP>\n";
1700 xmlFileCalib<<
" <CREATED_BY_USER>dma</CREATED_BY_USER>\n";
1701 xmlFileCalib<<
" <!-- version (string) and subversion (number) -->\n";
1702 xmlFileCalib<<
" <!-- fields are used to read data back from the database -->\n\n";
1703 xmlFileCalib<<
" <VERSION>"<<run_number<<dataset_seq_number<<
"</VERSION>\n";
1704 xmlFileCalib<<
" <SUBVERSION>1</SUBVERSION>\n";
1705 xmlFileCalib<<
" <!-- Assign predefined dataset attributes -->\n\n";
1706 xmlFileCalib<<
" <PREDEFINED_ATTRIBUTES>\n";
1707 xmlFileCalib<<
" <ATTRIBUTE>\n";
1708 xmlFileCalib<<
" <NAME>HCAL Dataset Status</NAME>\n";
1709 xmlFileCalib<<
" <VALUE>VALID</VALUE>\n";
1710 xmlFileCalib<<
" </ATTRIBUTE>\n";
1711 xmlFileCalib<<
" </PREDEFINED_ATTRIBUTES>\n";
1712 xmlFileCalib<<
" <!-- multiple data block records -->\n\n";
1716 if(
sd==1) subdet=
"HB";
1717 if(
sd==2) subdet=
"HE";
1718 if(
sd==3) subdet=
"HO";
1719 if(
sd==4) subdet=
"HF";
1721 double e=0,e_rms=0,t=0,t_rms=0;
1726 xmlFileCalib<<
" <DATA>\n";
1727 xmlFileCalib<<
" <NUMBER_OF_EVENTS_USED>"<<Statistic<<
"</NUMBER_OF_EVENTS_USED>\n";
1728 xmlFileCalib<<
" <SIGNAL_MEAN>"<<e<<
"</SIGNAL_MEAN>\n";
1729 xmlFileCalib<<
" <SIGNAL_RMS>"<<e_rms<<
"</SIGNAL_RMS>\n";
1730 xmlFileCalib<<
" <TIME_MEAN>"<<t<<
"</TIME_MEAN>\n";
1731 xmlFileCalib<<
" <TIME_RMS>"<<t_rms<<
"</TIME_RMS>\n";
1732 xmlFileCalib<<
" <CHANNEL_STATUS_WORD>"<<Status<<
"</CHANNEL_STATUS_WORD>\n";
1733 xmlFileCalib<<
" <CHANNEL_OBJECTNAME>HcalDetId</CHANNEL_OBJECTNAME>\n";
1734 xmlFileCalib<<
" <SUBDET>"<<subdet<<
"</SUBDET>\n";
1735 xmlFileCalib<<
" <IETA>"<<
eta<<
"</IETA>\n";
1736 xmlFileCalib<<
" <IPHI>"<<
phi<<
"</IPHI>\n";
1737 xmlFileCalib<<
" <DEPTH>"<<0<<
"</DEPTH>\n";
1738 xmlFileCalib<<
" <TYPE>0</TYPE>\n";
1739 xmlFileCalib<<
" </DATA>\n";
1743 xmlFileCalib<<
" </DATA_SET>\n";
1744 xmlFileCalib<<
"</ROOT>\n";
1745 xmlFileCalib.close();
1747 sprintf(str,
"zip %s.zip %s %s",xmlName.c_str(),xmlName.c_str(),xmlNameCalib.c_str());
1749 sprintf(str,
"rm -f %s %s",xmlName.c_str(),xmlNameCalib.c_str());
1751 sprintf(str,
"mv -f %s.zip %s",xmlName.c_str(),
XmlFilePath.c_str());
1771 if(!f->IsOpen())
return ;
1772 TObjString *STR=(TObjString *)f->Get(
"run number");
1776 TTree*
t=(TTree*)f->Get(
"HCAL Laser data");
1778 t->SetBranchAddress(
"Subdet", subdet);
1779 t->SetBranchAddress(
"eta", &Eta);
1780 t->SetBranchAddress(
"phi", &Phi);
1781 t->SetBranchAddress(
"depth", &Depth);
1782 t->SetBranchAddress(
"amp", &);
1783 t->SetBranchAddress(
"rms", &rms);
1784 t->SetBranchAddress(
"time", &time);
1785 t->SetBranchAddress(
"time_rms", &time_rms);
1786 for(
int ievt=0;ievt<t->GetEntries();ievt++){
1788 if(strcmp(subdet,
"HB")==0)
hb_data[Eta+42][Phi-1][Depth-1].
set_reference(amp,rms,time,time_rms);
1789 if(strcmp(subdet,
"HE")==0)
he_data[Eta+42][Phi-1][Depth-1].
set_reference(amp,rms,time,time_rms);
1790 if(strcmp(subdet,
"HO")==0)
ho_data[Eta+42][Phi-1][Depth-1].
set_reference(amp,rms,time,time_rms);
1791 if(strcmp(subdet,
"HF")==0)
hf_data[Eta+42][Phi-1][Depth-1].
set_reference(amp,rms,time,time_rms);
1802 int Eta,
Phi,Depth,Statistic;
1807 if(gSystem->AccessPathName(
DatasetName.c_str()))
return;
1810 if(!f->IsOpen())
return ;
1813 t=(TTree*)f->Get(
"HCAL Laser data");
1815 t->SetBranchAddress(
"Subdet", subdet);
1816 t->SetBranchAddress(
"eta", &Eta);
1817 t->SetBranchAddress(
"phi", &Phi);
1818 t->SetBranchAddress(
"depth", &Depth);
1819 t->SetBranchAddress(
"amp", &);
1820 t->SetBranchAddress(
"rms", &rms);
1821 t->SetBranchAddress(
"time", &time);
1822 t->SetBranchAddress(
"time_rms", &time_rms);
1823 t->SetBranchAddress(
"statistic",&Statistic);
1824 for(
int ievt=0;ievt<t->GetEntries();ievt++){
1826 if(strcmp(subdet,
"HB")==0){
nHB++;
1831 if(strcmp(subdet,
"HE")==0){
nHE++;
1836 if(strcmp(subdet,
"HO")==0){
nHO++;
1841 if(strcmp(subdet,
"HF")==0){
nHF++;
1846 if(strcmp(subdet,
"CALIB_HB")==0){
1851 if(strcmp(subdet,
"CALIB_HE")==0){
1856 if(strcmp(subdet,
"CALIB_HO")==0){
1861 if(strcmp(subdet,
"CALIB_HF")==0){
1867 TObjString *STR1=(TObjString *)f->Get(
"run number");
1870 TObjString *STR2=(TObjString *)f->Get(
"Total events processed");
1873 TObjString *STR3=(TObjString *)f->Get(
"Dataset number");
1879 float adc_range[20]={14,28,40,52,67,132,202,262,322,397,722,1072,1372,1672,2047,3672,5422,6922,8422,10297};
1880 int adc_bins[20]={1,2,3,4,5,5,10,15,20,25,25,50,75,100,125,125,250,375,500,625};
1882 TF1 *fitFunc =
new TF1(
"fitFunc",
"gaus");
1883 if(fitFunc==0)
return;
1884 for(
int i=0;
i<56;
i++){
1885 float sum1=0,sum2=0,
n=0;
1887 for(
int j=0;
j<128;
j++){
1897 for(N=1;N<19;N++) if(sum1>adc_range[N-1] && sum1<adc_range[
N])
break;
1899 for(N=1;N<19;N++) if(sum2>adc_range[N-1] && sum2<adc_range[
N])
break;
1901 sprintf(str,
"Raddam(%i,%i,%i) S1",RADDAM_CH[
i].
eta,RADDAM_CH[
i].
phi,RADDAM_CH[
i].depth);
1902 S1[
i]=
new TH1F(str,str,10000/Ws1,0,10000);
1903 sprintf(str,
"Raddam(%i,%i,%i) S2",RADDAM_CH[
i].eta,RADDAM_CH[
i].phi,RADDAM_CH[
i].depth);
1904 S2[
i]=
new TH1F(str,str,10000/Ws1,0,10000);
1905 for(
int j=0;
j<128;
j++){
1907 S2[
i]->Fill(
adc2fC[j]-2.5,Raddam_data[
i].s2_adc[j]);
1910 S1[
i]->Fit(
"fitFunc");
1911 S1[
i]->GetFunction(
"fitFunc")->GetParameters(parm);
1915 Raddam_data[
i].
S1FITMEANER=
S1[
i]->GetFunction(
"fitFunc")->GetParError(1);
1917 Raddam_data[
i].
S1CHI2=
S1[
i]->GetFunction(
"fitFunc")->GetChisquare();
1918 Raddam_data[
i].
S1NDF=
S1[
i]->GetFunction(
"fitFunc")->GetNDF();
1920 S2[
i]->Fit(
"fitFunc");
1921 S2[
i]->GetFunction(
"fitFunc")->GetParameters(parm);
1925 Raddam_data[
i].
S2FITMEANER=
S2[
i]->GetFunction(
"fitFunc")->GetParError(1);
1927 Raddam_data[
i].
S2CHI2=
S2[
i]->GetFunction(
"fitFunc")->GetChisquare();
1928 Raddam_data[
i].
S2NDF=
S2[
i]->GetFunction(
"fitFunc")->GetNDF();
1933 Long_t
t; t=
time(0); strftime(TIME,30,
"%F %T",localtime(&t));
1938 sprintf(str,
"HcalDetDiagRaddam.xml");
1942 xmlFile.open(xmlName.c_str());
1943 xmlFile<<
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\" ?>\n";
1944 xmlFile<<
"<ROOT>\n";
1945 xmlFile<<
" <HEADER>\n";
1946 xmlFile<<
" <TYPE>\n";
1947 xmlFile<<
" <EXTENSION_TABLE_NAME>HCAL_RADDAM</EXTENSION_TABLE_NAME>\n";
1948 xmlFile<<
" <NAME>HCAL Raddam</NAME>\n";
1949 xmlFile<<
" </TYPE>\n";
1950 xmlFile<<
" <!-- run details -->\n";
1951 xmlFile<<
" <RUN>\n";
1952 xmlFile<<
" <RUN_TYPE>TEST LOCAL-RUN</RUN_TYPE>\n";
1953 xmlFile<<
" <RUN_NUMBER>"<<
run_number<<
"</RUN_NUMBER>\n";
1954 xmlFile<<
" <RUN_BEGIN_TIMESTAMP>"<<TIME<<
"</RUN_BEGIN_TIMESTAMP>\n";
1955 xmlFile<<
" <COMMENT_DESCRIPTION>hcal raddam data</COMMENT_DESCRIPTION>\n";
1956 xmlFile<<
" <LOCATION>P5</LOCATION>\n";
1957 xmlFile<<
" <INITIATED_BY_USER>dma</INITIATED_BY_USER>\n";
1958 xmlFile<<
" </RUN>\n";
1959 xmlFile<<
" </HEADER>\n";
1960 xmlFile<<
" <DATA_SET>\n";
1961 xmlFile<<
" <COMMENT_DESCRIPTION>Test Raddam data</COMMENT_DESCRIPTION>\n";
1962 xmlFile<<
" <CREATE_TIMESTAMP>"<<TIME<<
"</CREATE_TIMESTAMP>\n";
1963 xmlFile<<
" <CREATED_BY_USER>dma</CREATED_BY_USER>\n";
1964 xmlFile<<
" <VERSION>Test_Version_1</VERSION>\n";
1966 for(
int i=0;
i<56;
i++){
1967 xmlFile<<
" <DATA>\n";
1968 xmlFile<<
" <SUBDET>HF</SUBDET>\n";
1969 xmlFile<<
" <IETA>"<<RADDAM_CH[
i].
eta<<
"</IETA>\n";
1970 xmlFile<<
" <IPHI>"<<RADDAM_CH[
i].
phi<<
"</IPHI>\n";
1971 xmlFile<<
" <DEPTH>"<<RADDAM_CH[
i].
depth<<
"</DEPTH>\n";
1973 xmlFile<<
" <TOTEVNT>"<<Raddam_data[
i].
TOTEVNT<<
"</TOTEVNT>\n";
1974 xmlFile<<
" <CUT1EVNT>"<<Raddam_data[
i].
CUT1EVNT<<
"</CUT1EVNT>\n";
1975 xmlFile<<
" <CUT2EVNT>"<<Raddam_data[
i].
CUT2EVNT<<
"</CUT2EVNT>\n";
1977 xmlFile<<
" <S1MEAN>"<<Raddam_data[
i].
S1MEAN <<
"</S1MEAN>\n";
1978 xmlFile<<
" <S1RMS>"<<Raddam_data[
i].
S1RMS <<
"</S1RMS>\n";
1979 xmlFile<<
" <S1FITMEAN>"<<Raddam_data[
i].
S1FITMEAN <<
"</S1FITMEAN>\n";
1980 xmlFile<<
" <S1FITMEANER>"<<Raddam_data[
i].
S1FITMEANER <<
"</S1FITMEANER>\n";
1981 xmlFile<<
" <S1FITSIGMA>"<<Raddam_data[
i].
S1FITSIGMA <<
"</S1FITSIGMA>\n";
1982 xmlFile<<
" <S1CHI2>"<<Raddam_data[
i].
S1CHI2 <<
"</S1CHI2>\n";
1983 xmlFile<<
" <S1NDF>"<<Raddam_data[
i].
S1NDF <<
"</S1NDF>\n";
1984 xmlFile<<
" <S1BINWIDTH>"<<Raddam_data[
i].
S1BINWIDTH <<
"</S1BINWIDTH>\n";
1986 xmlFile<<
" <S2MEAN>"<<Raddam_data[
i].
S2MEAN <<
"</S2MEAN>\n";
1987 xmlFile<<
" <S2RMS>"<<Raddam_data[
i].
S2RMS <<
"</S2RMS>\n";
1988 xmlFile<<
" <S2FITMEAN>"<<Raddam_data[
i].
S2FITMEAN <<
"</S2FITMEAN>\n";
1989 xmlFile<<
" <S2FITMEANER>"<<Raddam_data[
i].
S2FITMEANER <<
"</S2FITMEANER>\n";
1990 xmlFile<<
" <S2FITSIGMA>"<<Raddam_data[
i].
S2FITSIGMA <<
"</S2FITSIGMA>\n";
1991 xmlFile<<
" <S2CHI2>"<<Raddam_data[
i].
S2CHI2 <<
"</S2CHI2>\n";
1992 xmlFile<<
" <S2NDF>"<<Raddam_data[
i].
S2NDF <<
"</S2NDF>\n";
1993 xmlFile<<
" <S2BINWIDTH>"<<Raddam_data[
i].
S2BINWIDTH <<
"</S2BINWIDTH>\n";
1994 xmlFile<<
" </DATA>\n";
1996 xmlFile<<
" </DATA_SET>\n";
1997 xmlFile<<
"</ROOT>\n";
2000 sprintf(str,
"zip %s.zip %s",xmlName.c_str(),xmlName.c_str());
2002 sprintf(str,
"rm -f %s",xmlName.c_str());
2004 sprintf(str,
"mv -f %s.zip %s",xmlName.c_str(),
XmlFilePath.c_str());
2011 sprintf(str,
"%sHcalDetDiagRaddamData.root",
OutputFilePath.c_str());
2013 TFile *
theFile =
new TFile(str,
"RECREATE");
2014 if(!theFile->IsOpen())
return;
2016 for(
int i=0;
i<56;
i++){
2017 if(
S1[
i]!=0)
S1[
i]->Write();
2018 if(
S2[
i]!=0)
S2[
i]->Write();
void analyze(const edm::Event &, const edm::EventSetup &) override
T getParameter(std::string const &) const
T getUntrackedParameter(std::string const &, T const &) const
edm::EDGetTokenT< HBHEDigiCollection > tok_hbhe_
void setBinContent(int binx, double content)
set content of bin (1-D)
edm::Ref< Container > Ref
void add_statistics(double *data, int nTS)
void endRun(const edm::Run &run, const edm::EventSetup &c) override
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)
edm::EDGetTokenT< HcalCalibDigiCollection > tok_calib_
edm::EDGetTokenT< FEDRawDataCollection > tok_raw_
bool get_average_amp(double *ave, double *rms)
MonitorElement * refTime2Dho
bool get_average_amp1(double *ave, double *rms)
bool getByToken(EDGetToken token, Handle< PROD > &result) const
MonitorElement * Time2Dhbhehf
MonitorElement * hfEnergy
#define DEFINE_FWK_MODULE(type)
const HcalElectronicsMap * emap
double LaserTimingThreshold
std::vector< HFDataFrame >::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)
edm::EDGetTokenT< HFDigiCollection > tok_hf_
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
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
void beginLuminosityBlock(const edm::LuminosityBlock &lumiSeg, const edm::EventSetup &c) override
EtaPhiHists * ProblemCellsByDepth_energy_val
int ieta() const
get the cell ieta
void change_status(int val)
Abs< T >::type abs(const T &t)
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) ...
edm::EDGetTokenT< HODigiCollection > tok_ho_
int iphi() const
get the cell iphi
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
void endLuminosityBlock(const edm::LuminosityBlock &lumiSeg, const edm::EventSetup &c) override
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 beginRun(const edm::Run &run, const edm::EventSetup &c) override
const unsigned char * data() const
Return a const pointer to the beginning of the data buffer.
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]
edm::InputTag inputLabelDigi_
edm::EDGetTokenT< HcalTBTriggerData > tok_tb_
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