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}};
206 int MaxI=0;
double Energy,MaxE=0;
207 for(
int j=0;
j<
n;++
j)
if(MaxE<data[
j]){ MaxE=data[
j]; MaxI=
j; }
209 if(MaxI>0) Energy+=data[MaxI-1];
210 if(MaxI>1) Energy+=data[MaxI-2];
211 if(MaxI<(n-1)) Energy+=data[MaxI+1];
212 if(MaxI<(n-2)) Energy+=data[MaxI+2];
216 int MaxI=-100;
double Time=-9999,SumT=0,MaxT=-10;
217 for(
int j=0;
j<
n;++
j)
if(MaxT<data[
j]){ MaxT=data[
j]; MaxI=
j; }
220 Time=MaxI*data[MaxI];
222 if(MaxI>0){ Time+=(MaxI-1)*data[MaxI-1]; SumT+=data[MaxI-1]; }
223 if(MaxI<(n-1)){ Time+=(MaxI+1)*data[MaxI+1]; SumT+=data[MaxI+1]; }
255 if(sd.compare(
"HB")==0) SD=1;
256 if(sd.compare(
"HE")==0) SD=2;
257 if(sd.compare(
"HO")==0) SD=3;
258 if(sd.compare(
"HF")==0) SD=4;
260 if(eta>0)
ETA=1;
else ETA=-1;
261 if(phi==71 ||phi==72 || phi==1 || phi==2)
PHI=71;
else PHI=((phi-3)/4)*4+3;
265 if(phi==71 ||phi==72 || phi==1 || phi==2 || phi==3 || phi==4)
PHI=71;
else PHI=((phi-5)/6)*6+5;
270 if(phi==71 ||phi==72 || (phi>=1 && phi<=10))
PHI=71;
else PHI=((phi-11)/12)*12+11;
273 if(eta>0)
ETA=1;
else ETA=-1;
274 if(phi>=1 && phi<=18)
PHI=1;
275 if(phi>=19 && phi<=36)
PHI=19;
276 if(phi>=37 && phi<=54)
PHI=37;
277 if(phi>=55 && phi<=72)
PHI=55;
298 bool get_ave_subdet(
int sd,
float *ave_t,
float *ave_e,
float *ave_t_r,
float *ave_e_r);
395 if (prefixME_.size()>0 && prefixME_.substr(prefixME_.size()-1,prefixME_.size())!=
"/")
396 prefixME_.append(
"/");
415 for (std::vector<DetId>::const_iterator
i = mydetids.begin();
i!=mydetids.end();++
i){
426 emap=conditions_->getHcalMapping();
469 name=
"HO Laser Timing Distribution";
hoTime =
dbe_->
book1D(name,name,200,0,10);
473 name=
"HF Laser Timing Distribution";
hfTime =
dbe_->
book1D(name,name,200,0,10);
530 for(
int i=0;
i<56;
i++){
531 sprintf(str,
"RADDAM (%i %i)",RADDAM_CH[
i].
eta,RADDAM_CH[
i].
phi);
553 static bool HBHEseq,HOseq,HFseq;
554 static int lastHBHEorbit,lastHOorbit,lastHForbit,nChecksHBHE,nChecksHO,nChecksHF,ievt_hbhe,ievt_ho,ievt_hf;
556 ievt_=0;HBHEseq=HOseq=HFseq=
false; lastHBHEorbit=lastHOorbit=lastHForbit=-1;nChecksHBHE=nChecksHO=nChecksHF=0;
557 ievt_hbhe=0,ievt_ho=0,ievt_hf=0;
561 bool LaserEvent=
false;
562 bool LaserRaddam=
false;
569 if(trigger_data->wasLaserTrigger()) LaserEvent=
true;
573 if(HBHEseq && (orbit-lastHBHEorbit)>(11223*10) && ievt_hbhe>40){
583 if(HOseq && (orbit-lastHOorbit)>(11223*10) && ievt_ho>40){
591 if(HFseq && (orbit-lastHForbit)>(11223*10) && ievt_hf>40){
597 if(nChecksHF==1 || (nChecksHF>1 && ((nChecksHF-1)%12)==0)){
605 if(
LocalRun==
false || LaserEvent==
false){
613 if ( fedData.
size() < 24 )
continue ;
615 if(value==
hc_HBHEHPD){ HBHEseq=
true; HOseq=HFseq=
false; lastHBHEorbit=orbit; ievt_hbhe++; }
616 if(value==
hc_HOHPD){ HOseq=
true; HBHEseq=HFseq=
false; lastHOorbit=orbit; ievt_ho++; }
617 if(value==
hc_HFPMT){ HFseq=
true; HBHEseq=HOseq=
false; lastHForbit=orbit; ievt_hf++; }
620 if(value==
hc_RADDAM){ LaserEvent=
true; LaserRaddam=
true;
break;}
623 if(!LaserEvent)
return;
637 eta=digi->id().ieta(); phi=digi->id().iphi(); depth=digi->id().depth();
639 for(
int i=0;
i<digi->size();
i++) e+=
adc2fC[digi->sample(
i).adc()&0xff]-2.5;
648 eta=digi->id().ieta(); phi=digi->id().iphi(); depth=digi->id().depth(); nTS=digi->size();
650 for(N=0;N<56;N++)
if(eta==RADDAM_CH[N].eta && phi==RADDAM_CH[N].phi && depth==RADDAM_CH[N].depth)
break;
654 for(
int i=0;
i<nTS;
i++){
655 if(max1<
adc2fC[digi->sample(
i).adc()&0xff]){ nmax1=
i; max1=
adc2fC[digi->sample(
i).adc()&0xff]; }
658 for(
int i=0;
i<nTS;
i++){
659 if(
i==nmax1)
continue;
660 if(max2<
adc2fC[digi->sample(
i).adc()&0xff]){ nmax2=
i; max2=
adc2fC[digi->sample(
i).adc()&0xff]; }
664 nmax2=nmax1;nmax1=tmp1;
666 if(nmax1==0 || nmax2==(nTS-1))
continue;
667 if(nmax2!=(nmax1+1))
continue;
671 max1-=2.5; max2-=2.5;
673 float S4=S2+
adc2fC[digi->sample(nmax1-1).adc()&0xff]+
adc2fC[digi->sample(nmax2+1).adc()&0xff]-5.0;
676 Raddam_data[
N].
s1_adc[digi->sample(nmax1).adc()&0xff]++;
677 Raddam_data[
N].
s2_adc[digi->sample(nmax2).adc()&0xff]++;
688 eta=digi->id().ieta(); phi=digi->id().iphi(); depth=digi->id().depth(); nTS=digi->size();
689 double ped=(
adc2fC[digi->sample(0).adc()&0xff]+
adc2fC[digi->sample(1).adc()&0xff])/2.0;
691 for(
int i=0;
i<nTS;
i++) data[
i]=
adc2fC[digi->sample(
i).adc()&0xff]-ped;
695 for(
int i=0;
i<nTS;
i++) data[
i]=
adc2fC[digi->sample(
i).adc()&0xff]-ped;
702 eta=digi->id().ieta(); phi=digi->id().iphi(); depth=digi->id().depth(); nTS=digi->size();
703 double ped=(
adc2fC[digi->sample(0).adc()&0xff]+
adc2fC[digi->sample(1).adc()&0xff])/2.0;
704 if((eta>=11 && eta<=15 && phi>=59 && phi<=70) || (eta>=5 && eta<=10 && phi>=47 && phi<=58)){
705 for(
int i=0;
i<nTS;
i++) data[
i]=
adc2fC[digi->sample(
i).adc()&0xff]-ped;
707 for(
int i=0;
i<nTS;
i++) data[
i]=
adc2fC[digi->sample(
i).adc()&0xff]-ped;
714 eta=digi->id().ieta(); phi=digi->id().iphi(); depth=digi->id().depth(); nTS=digi->size();
715 double ped=
adc2fC[digi->sample(0).adc()&0xff];
716 for(
int i=0;
i<nTS;
i++) data[
i]=
adc2fC[digi->sample(
i).adc()&0xff]-ped;
721 if(digi->id().cboxChannel()!=0 || digi->id().hcalSubdet()==0)
continue;
724 for(
int i=0;
i<nTS;
i++){ data[
i]=
adc2fC[digi->sample(
i).adc()&0xff]; e+=data[
i];}
730 eta=digi->id().ieta(); phi=digi->id().iphi(); depth=digi->id().depth(); nTS=digi->size();
732 for(N=0;N<56;N++)
if(eta==RADDAM_CH[N].eta && phi==RADDAM_CH[N].phi && depth==RADDAM_CH[N].depth)
break;
741 double T=0,nT=0,E=0,nE=0,Tr=0,nTr=0,Er=0,nEr=0;
743 for(
int depth=1;depth<=2;depth++){
745 double ave=0,
rms=0,
time=0,time_rms=0;
748 T+=
time; nT++; E+=ave; nE++;
750 Tr+=
time; nTr++; Er+=ave; nEr++;}
756 for(
int depth=1;depth<=3;depth++){
758 double ave=0;
double rms=0;
double time=0;
double time_rms=0;
761 T+=
time; nT++; E+=ave; nE++;
762 if(
he_data[
eta+42][
phi-1][depth-1].get_reference(&ave,&rms,&time,&time_rms)){
763 Tr+=
time; nTr++; Er+=ave; nEr++;}
769 for(
int depth=1;depth<=2;depth++){
771 double ave=0;
double rms=0;
double time=0;
double time_rms=0;
774 T+=
time; nT++; E+=ave; nE++;
775 if(
hf_data[
eta+42][
phi-1][depth-1].get_reference(&ave,&rms,&time,&time_rms)){
776 Tr+=
time; nTr++; Er+=ave; nEr++;}
782 for(
int depth=4;depth<=4;depth++){
784 double ave=0;
double rms=0;
double time=0;
double time_rms=0;
787 T+=
time; nT++; E+=ave; nE++;
788 if(
ho_data[
eta+42][
phi-1][depth-1].get_reference(&ave,&rms,&time,&time_rms)){
789 Tr+=
time; nTr++; Er+=ave; nEr++;}
793 if(nT<200 || nE<200 || nTr<200 || nEr<200)
return false;
802 float ave_t,ave_e,ave_t_r,ave_e_r;
805 for(
int i=0;
i<4;
i++){
811 for (std::vector <HcalElectronicsId>::iterator eid = AllElIds.begin(); eid != AllElIds.end(); eid++){
815 if(!(!(gid.null()) &&
829 double val=0,
rms=0,
time=0,time_rms=0,VAL=0,RMS=0,TIME=0,TIME_RMS=0;
830 if(!
hb_data[eta+42][
phi-1][depth-1].get_reference(&val,&
rms,&
time,&time_rms))
continue;
831 if(!
hb_data[eta+42][
phi-1][depth-1].get_average_amp(&VAL,&RMS))
continue;
832 if(!
hb_data[eta+42][
phi-1][depth-1].get_average_time(&TIME,&TIME_RMS))
continue;
834 float diff_t=(TIME-ave_t)-(
time-ave_t_r);
if(diff_t<0) diff_t=-diff_t;
839 if(VAL!=0 && val!=0 && ave_e!=0 && ave_e_r!=0){
840 float diff_e=((VAL/ave_e))/(val/ave_e_r);
848 double val=0,
rms=0,
time=0,time_rms=0,VAL=0,RMS=0,TIME=0,TIME_RMS=0;
849 if(!
he_data[eta+42][
phi-1][depth-1].get_reference(&val,&
rms,&
time,&time_rms))
continue;
850 if(!
he_data[eta+42][
phi-1][depth-1].get_average_amp(&VAL,&RMS))
continue;
851 if(!
he_data[eta+42][
phi-1][depth-1].get_average_time(&TIME,&TIME_RMS))
continue;
853 float diff_t=(TIME-ave_t)-(
time-ave_t_r);
if(diff_t<0) diff_t=-diff_t;
858 if(VAL!=0 && val!=0 && ave_e!=0 && ave_e_r!=0){
859 float diff_e=((VAL/ave_e))/(val/ave_e_r);
867 double val=0,
rms=0,
time=0,time_rms=0,VAL=0,RMS=0,TIME=0,TIME_RMS=0;
868 if(!
ho_data[eta+42][
phi-1][depth-1].get_reference(&val,&
rms,&
time,&time_rms))
continue;
869 if(!
ho_data[eta+42][
phi-1][depth-1].get_average_amp(&VAL,&RMS))
continue;
870 if(!
ho_data[eta+42][
phi-1][depth-1].get_average_time(&TIME,&TIME_RMS))
continue;
872 float diff_t=(TIME-ave_t)-(
time-ave_t_r);
if(diff_t<0) diff_t=-diff_t;
877 if(VAL!=0 && val!=0 && ave_e!=0 && ave_e_r!=0){
878 float diff_e=((VAL/ave_e))/(val/ave_e_r);
886 double val=0,
rms=0,
time=0,time_rms=0,VAL=0,RMS=0,TIME=0,TIME_RMS=0;
887 if(!
hf_data[eta+42][
phi-1][depth-1].get_reference(&val,&
rms,&
time,&time_rms))
continue;
888 if(!
hf_data[eta+42][
phi-1][depth-1].get_average_amp(&VAL,&RMS))
continue;
889 if(!
hf_data[eta+42][
phi-1][depth-1].get_average_time(&TIME,&TIME_RMS))
continue;
891 float diff_t=(TIME-ave_t)-(
time-ave_t_r);
if(diff_t<0) diff_t=-diff_t;
896 if(VAL!=0 && val!=0 && ave_e!=0 && ave_e_r!=0){
897 float diff_e=((VAL/ave_e))/(val/ave_e_r);
905 for (std::vector <HcalElectronicsId>::iterator eid = AllElIds.begin(); eid != AllElIds.end(); eid++){
909 if(!(!(gid.null()) &&
921 if(
hb_data[eta+42][
phi-1][depth-1].nBadTime>0){
926 if(
hb_data[eta+42][
phi-1][depth-1].nBadEnergy>0){
933 if(
he_data[eta+42][
phi-1][depth-1].nBadTime>0){
938 if(
he_data[eta+42][
phi-1][depth-1].nBadEnergy>0){
945 if(
ho_data[eta+42][
phi-1][depth-1].nBadTime>0){
950 if(
ho_data[eta+42][
phi-1][depth-1].nBadEnergy>0){
957 if(
hf_data[eta+42][
phi-1][depth-1].nBadTime>0){
962 if(
hf_data[eta+42][
phi-1][depth-1].nBadEnergy>0){
973 int eta_min=0,eta_max=0,
n=0;
975 if(side>0){eta_min=1; eta_max=29;}
976 if(side<0){eta_min=-29; eta_max=-1;}
978 for(
int i=eta_min;
i<=eta_max;
i++)
for(
int j=71;
j<=72;
j++)
for(
int k=1;
k<=3;
k++){
980 double TIME,TIME_RMS;
981 if(!
hb_data[
i+42][
j-1][
k-1].get_reference(&val,&rms,&time,&time_rms))
continue;
982 if(!
hb_data[
i+42][
j-1][
k-1].get_average_time(&TIME,&TIME_RMS))
continue;
983 xt+=TIME-
time; xxt+=(TIME-
time)*(TIME-time);
n++;
985 for(
int i=eta_min;
i<=eta_max;
i++)
for(
int j=1;
j<=2;
j++)
for(
int k=1;
k<=3;
k++){
987 double TIME,TIME_RMS;
988 if(!
hb_data[
i+42][
j-1][
k-1].get_reference(&val,&rms,&time,&time_rms))
continue;
989 if(!
hb_data[
i+42][
j-1][
k-1].get_average_time(&TIME,&TIME_RMS))
continue;
990 xt+=TIME-
time; xxt+=(TIME-
time)*(TIME-time);
n++;
994 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++){
996 double TIME,TIME_RMS;
997 if(!
hb_data[
i+42][
j-1][
k-1].get_reference(&val,&rms,&time,&time_rms))
continue;
998 if(!
hb_data[
i+42][
j-1][
k-1].get_average_time(&TIME,&TIME_RMS))
continue;
999 xt+=TIME-
time; xxt+=(TIME-
time)*(TIME-time);
n++;
1004 if(side>0){eta_min=1; eta_max=29;}
1005 if(side<0){eta_min=-29; eta_max=-1;}
1007 for(
int i=eta_min;
i<=eta_max;
i++)
for(
int j=71;
j<=72;
j++)
for(
int k=1;
k<=3;
k++){
1009 double TIME,TIME_RMS;
1010 if(!
he_data[
i+42][
j-1][
k-1].get_reference(&val,&rms,&time,&time_rms))
continue;
1011 if(!
he_data[
i+42][
j-1][
k-1].get_average_time(&TIME,&TIME_RMS))
continue;
1012 xt+=TIME-
time; xxt+=(TIME-
time)*(TIME-time);
n++;
1014 for(
int i=eta_min;
i<=eta_max;
i++)
for(
int j=1;
j<=2;
j++)
for(
int k=1;
k<=3;
k++){
1016 double TIME,TIME_RMS;
1017 if(!
he_data[
i+42][
j-1][
k-1].get_reference(&val,&rms,&time,&time_rms))
continue;
1018 if(!
he_data[
i+42][
j-1][
k-1].get_average_time(&TIME,&TIME_RMS))
continue;
1019 xt+=TIME-
time; xxt+=(TIME-
time)*(TIME-time);
n++;
1023 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++){
1025 double TIME,TIME_RMS;
1026 if(!
he_data[
i+42][
j-1][
k-1].get_reference(&val,&rms,&time,&time_rms))
continue;
1027 if(!
he_data[
i+42][
j-1][
k-1].get_average_time(&TIME,&TIME_RMS))
continue;
1028 xt+=TIME-
time; xxt+=(TIME-
time)*(TIME-time);
n++;
1033 if(side>0){eta_min=29; eta_max=40;}
1034 if(side<0){eta_min=-40; eta_max=-29;}
1035 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++){
1037 double TIME,TIME_RMS;
1038 if(!
hf_data[
i+42][
j-1][
k-1].get_reference(&val,&rms,&time,&time_rms))
continue;
1039 if(!
hf_data[
i+42][
j-1][
k-1].get_average_time(&TIME,&TIME_RMS))
continue;
1040 xt+=TIME-
time; xxt+=(TIME-
time)*(TIME-time);
n++;
1045 eta_min=-4,eta_max=4;
1047 for(
int i=eta_min;
i<=eta_max;
i++)
for(
int j=71;
j<=72;
j++){
1049 double TIME,TIME_RMS;
1050 if(!
ho_data[
i+42][
j-1][4-1].get_reference(&val,&rms,&time,&time_rms))
continue;
1051 if(!
ho_data[
i+42][
j-1][4-1].get_average_time(&TIME,&TIME_RMS))
continue;
1052 xt+=TIME-
time; xxt+=(TIME-
time)*(TIME-time);
n++;
1054 for(
int i=eta_min;
i<=eta_max;
i++)
for(
int j=1;
j<=4;
j++){
1056 double TIME,TIME_RMS;
1057 if(!
ho_data[
i+42][
j-1][4-1].get_reference(&val,&rms,&time,&time_rms))
continue;
1058 if(!
ho_data[
i+42][
j-1][4-1].get_average_time(&TIME,&TIME_RMS))
continue;
1059 xt+=TIME-
time; xxt+=(TIME-
time)*(TIME-time);
n++;
1063 for(
int i=eta_min;
i<=eta_max;
i++)
for(
int j=((rbx-1)*6-1);
j<=((rbx-1)*6+4);
j++){
1065 double TIME,TIME_RMS;
1066 if(!
ho_data[
i+42][
j-1][4-1].get_reference(&val,&rms,&time,&time_rms))
continue;
1067 if(!
ho_data[
i+42][
j-1][4-1].get_average_time(&TIME,&TIME_RMS))
continue;
1068 xt+=TIME-
time; xxt+=(TIME-
time)*(TIME-time);
n++;
1072 if(side==-1){ eta_min=-10,eta_max=-5;}
1073 if(side==-2){ eta_min=-15,eta_max=-11;}
1074 if(side==1) { eta_min=5, eta_max=10;}
1075 if(side==2) { eta_min=11, eta_max=15;}
1078 for(
int i=eta_min;
i<=eta_max;
i++)
for(
int j=71;
j<=72;
j++){
1080 double TIME,TIME_RMS;
1081 if(!
ho_data[
i+42][
j-1][4-1].get_reference(&val,&rms,&time,&time_rms))
continue;
1082 if(!
ho_data[
i+42][
j-1][4-1].get_average_time(&TIME,&TIME_RMS))
continue;
1083 xt+=TIME-
time; xxt+=(TIME-
time)*(TIME-time);
n++;
1085 for(
int i=eta_min;
i<=eta_max;
i++)
for(
int j=1;
j<=10;
j++){
1087 double TIME,TIME_RMS;
1088 if(!
ho_data[
i+42][
j-1][4-1].get_reference(&val,&rms,&time,&time_rms))
continue;
1089 if(!
ho_data[
i+42][
j-1][4-1].get_average_time(&TIME,&TIME_RMS))
continue;
1090 xt+=TIME-
time; xxt+=(TIME-
time)*(TIME-time);
n++;
1094 for(
int i=eta_min;
i<=eta_max;
i++)
for(
int j=((rbx-1)*12-1);
j<=((rbx-1)*12+10);
j++){
1096 double TIME,TIME_RMS;
1097 if(!
ho_data[
i+42][
j-1][4-1].get_reference(&val,&rms,&time,&time_rms))
continue;
1098 if(!
ho_data[
i+42][
j-1][4-1].get_average_time(&TIME,&TIME_RMS))
continue;
1099 xt+=TIME-
time; xxt+=(TIME-
time)*(TIME-time);
n++;
1104 if(
n<10)
return false;
1106 *rms=
sqrt(xxt/
n-(xt*xt)/(
n*
n));
1141 double T=0,nT=0,E=0,nE=0;
1142 for(
int depth=1;depth<=2;depth++){
1154 T+=
time; nT++; E+=ave; nE++;
1161 double T=0,nT=0,E=0,nE=0;
1162 for(
int depth=1;depth<=3;depth++){
1164 double ave=0;
double rms=0;
double time=0;
double time_rms=0;
1171 T+=
time; nT++; E+=ave; nE++;
1181 double T=0,nT=0,E=0,nE=0;
1182 for(
int depth=1;depth<=2;depth++){
1184 double ave=0;
double rms=0;
double time=0;
double time_rms=0;
1190 T+=
time; nT++; E+=ave; nE++;
1202 double T=0,nT=0,E=0,nE=0;
1203 for(
int depth=4;depth<=4;depth++){
1205 double ave=0;
double rms=0;
double time=0;
double time_rms=0;
1211 T+=
time; nT++; E+=ave; nE++;
1222 double T=0,nT=0,E=0,nE=0;
1223 for(
int depth=1;depth<=2;depth++){
1225 double val=0,
rms=0,
time=0,time_rms=0;
1226 double VAL=0,RMS=0,TIME=0,TIME_RMS=0;
1228 if(!
hb_data[
eta+42][
phi-1][depth-1].get_average_amp(&VAL,&RMS))
continue;
1229 if(!
hb_data[
eta+42][
phi-1][depth-1].get_average_time(&TIME,&TIME_RMS))
continue;
1238 double T=0,nT=0,E=0,nE=0;
1239 for(
int depth=1;depth<=3;depth++){
1241 double val=0,
rms=0,
time=0,time_rms=0;
1242 double VAL=0,RMS=0,TIME=0,TIME_RMS=0;
1244 if(!
he_data[
eta+42][
phi-1][depth-1].get_average_amp(&VAL,&RMS))
continue;
1245 if(!
he_data[
eta+42][
phi-1][depth-1].get_average_time(&TIME,&TIME_RMS))
continue;
1258 double T=0,nT=0,E=0,nE=0;
1259 for(
int depth=1;depth<=2;depth++){
1261 double val=0,
rms=0,
time=0,time_rms=0;
1262 double VAL=0,RMS=0,TIME=0,TIME_RMS=0;
1264 if(!
hf_data[
eta+42][
phi-1][depth-1].get_average_amp(&VAL,&RMS))
continue;
1265 if(!
hf_data[
eta+42][
phi-1][depth-1].get_average_time(&TIME,&TIME_RMS))
continue;
1279 double T=0,nT=0,E=0,nE=0;
1280 for(
int depth=4;depth<=4;depth++){
1282 double val=0,
rms=0,
time=0,time_rms=0;
1283 double VAL=0,RMS=0,TIME=0,TIME_RMS=0;
1285 if(!
ho_data[
eta+42][
phi-1][depth-1].get_average_amp(&VAL,&RMS))
continue;
1286 if(!
ho_data[
eta+42][
phi-1][depth-1].get_average_time(&TIME,&TIME_RMS))
continue;
1299 for(
int i=1;
i<=18;
i++){
1300 float ave=-10,
rms=-10;
1304 if(ave<min) min=ave;
1305 if(ave>max) max=ave;
1308 for(
int i=1;
i<=18;
i++){
1309 float ave=-10,
rms=-10;
1313 if(ave<min) min=ave;
1314 if(ave>max) max=ave;
1319 for(
int i=1;
i<=18;
i++){
1320 float ave=-10,
rms=-10;
1324 if(ave<min) min=ave;
1325 if(ave>max) max=ave;
1328 for(
int i=1;
i<=18;
i++){
1329 float ave=-10,
rms=-10;
1333 if(ave<min) min=ave;
1334 if(ave>max) max=ave;
1342 for(
int i=1;
i<=6;
i++){
1343 float ave=-10,
rms=-10;
1347 if(ave<min) min=ave;
1348 if(ave>max) max=ave;
1351 for(
int i=1;
i<=6;
i++){
1352 float ave=-10,
rms=-10;
1356 if(ave<min) min=ave;
1357 if(ave>max) max=ave;
1360 for(
int i=1;
i<=12;
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<=6;
i++){
1379 float ave=-10,
rms=-10;
1383 if(ave<min) min=ave;
1384 if(ave>max) max=ave;
1392 for(
int i=1;
i<=12;
i++){
1393 float ave=-10,
rms=-10;
1397 if(ave<min) min=ave;
1398 if(ave>max) max=ave;
1401 for(
int i=1;
i<=12;
i++){
1402 float ave=-10,
rms=-10;
1406 if(ave<min) min=ave;
1407 if(ave>max) max=ave;
1415 double amp,
rms,Time,time_rms;
1417 char Subdet[10],str[500];
1422 sprintf(str,
"%sHcalDetDiagLaserData.root",
OutputFilePath.c_str());
1424 TFile *
theFile =
new TFile(str,
"RECREATE");
1425 if(!theFile->IsOpen())
return;
1427 sprintf(str,
"%d",
run_number); TObjString
run(str); run.Write(
"run number");
1428 sprintf(str,
"%d",
ievt_); TObjString
events(str); events.Write(
"Total events processed");
1429 sprintf(str,
"%d",
dataset_seq_number); TObjString dsnum(str); dsnum.Write(
"Dataset number");
1430 Long_t
t; t=
time(0); strftime(str,30,
"%F %T",localtime(&t)); TObjString tm(str); tm.Write(
"Dataset creation time");
1432 TTree *
tree =
new TTree(
"HCAL Laser data",
"HCAL Laser data");
1434 tree->Branch(
"Subdet", &Subdet,
"Subdet/C");
1435 tree->Branch(
"eta", &Eta,
"Eta/I");
1436 tree->Branch(
"phi", &Phi,
"Phi/I");
1437 tree->Branch(
"depth", &Depth,
"Depth/I");
1438 tree->Branch(
"statistic",&Statistic,
"Statistic/I");
1439 tree->Branch(
"status", &Status,
"Status/I");
1440 tree->Branch(
"amp", &,
"amp/D");
1441 tree->Branch(
"rms", &rms,
"rms/D");
1442 tree->Branch(
"time", &Time,
"time/D");
1443 tree->Branch(
"time_rms", &time_rms,
"time_rms/D");
1444 sprintf(Subdet,
"HB");
1445 for(
int eta=-16;
eta<=16;
eta++)
for(
int phi=1;
phi<=72;
phi++)
for(
int depth=1;depth<=2;depth++){
1446 if((Statistic=
hb_data[
eta+42][
phi-1][depth-1].get_statistics1())>10){
1447 Eta=
eta; Phi=
phi; Depth=depth;
1454 sprintf(Subdet,
"HE");
1455 for(
int eta=-29;
eta<=29;
eta++)
for(
int phi=1;
phi<=72;
phi++)
for(
int depth=1;depth<=3;depth++){
1456 if((Statistic=
he_data[
eta+42][
phi-1][depth-1].get_statistics1())>10){
1457 Eta=
eta; Phi=
phi; Depth=depth;
1464 sprintf(Subdet,
"HO");
1465 for(
int eta=-15;
eta<=15;
eta++)
for(
int phi=1;
phi<=72;
phi++)
for(
int depth=4;depth<=4;depth++){
1466 if((Statistic=
ho_data[
eta+42][
phi-1][depth-1].get_statistics1())>10){
1467 Eta=
eta; Phi=
phi; Depth=depth;
1474 sprintf(Subdet,
"HF");
1475 for(
int eta=-42;
eta<=42;
eta++)
for(
int phi=1;
phi<=72;
phi++)
for(
int depth=1;depth<=2;depth++){
1476 if((Statistic=
hf_data[
eta+42][
phi-1][depth-1].get_statistics1())>10){
1477 Eta=
eta; Phi=
phi; Depth=depth;
1484 sprintf(Subdet,
"CALIB_HB");
1487 Eta=
eta; Phi=
phi; Depth=0;
1494 sprintf(Subdet,
"CALIB_HE");
1497 Eta=
eta; Phi=
phi; Depth=0;
1504 sprintf(Subdet,
"CALIB_HO");
1507 Eta=
eta; Phi=
phi; Depth=0;
1514 sprintf(Subdet,
"CALIB_HF");
1517 Eta=
eta; Phi=
phi; Depth=0;
1529 Long_t
t; t=
time(0); strftime(TIME,30,
"%F %T",localtime(&t));
1534 sprintf(str,
"HcalDetDiagLaser.xml");
1536 std::string xmlName=str;
1538 xmlFile.open(xmlName.c_str());
1540 xmlFile<<
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n";
1541 xmlFile<<
"<ROOT>\n";
1542 xmlFile<<
" <HEADER>\n";
1543 xmlFile<<
" <HINTS mode='only-det-root'/>\n";
1544 xmlFile<<
" <TYPE>\n";
1545 xmlFile<<
" <EXTENSION_TABLE_NAME>HCAL_DETMON_LED_LASER_V1</EXTENSION_TABLE_NAME>\n";
1546 xmlFile<<
" <NAME>HCAL Laser HBHE HPD [abort gap global]</NAME>\n";
1547 xmlFile<<
" </TYPE>\n";
1548 xmlFile<<
" <!-- run details -->\n";
1549 xmlFile<<
" <RUN>\n";
1550 xmlFile<<
" <RUN_TYPE>GLOBAL-RUN</RUN_TYPE>\n";
1551 xmlFile<<
" <RUN_NUMBER>"<<
run_number<<
"</RUN_NUMBER>\n";
1552 xmlFile<<
" <RUN_BEGIN_TIMESTAMP>2009-01-01 00:00:00</RUN_BEGIN_TIMESTAMP>\n";
1553 xmlFile<<
" <COMMENT_DESCRIPTION>hcal laser data</COMMENT_DESCRIPTION>\n";
1554 xmlFile<<
" <LOCATION>P5</LOCATION>\n";
1555 xmlFile<<
" <INITIATED_BY_USER>dma</INITIATED_BY_USER>\n";
1556 xmlFile<<
" </RUN>\n";
1557 xmlFile<<
" </HEADER>\n";
1558 xmlFile<<
" <DATA_SET>\n";
1559 xmlFile<<
" <!-- optional dataset metadata -->\n\n";
1561 xmlFile<<
" <SET_BEGIN_TIMESTAMP>2009-01-01 00:00:00</SET_BEGIN_TIMESTAMP>\n";
1562 xmlFile<<
" <SET_END_TIMESTAMP>2009-01-01 00:00:00</SET_END_TIMESTAMP>\n";
1563 xmlFile<<
" <NUMBER_OF_EVENTS_IN_SET>"<<
ievt_<<
"</NUMBER_OF_EVENTS_IN_SET>\n";
1564 xmlFile<<
" <COMMENT_DESCRIPTION>Automatic DQM output</COMMENT_DESCRIPTION>\n";
1565 xmlFile<<
" <DATA_FILE_NAME>"<< xmlName <<
"</DATA_FILE_NAME>\n";
1566 xmlFile<<
" <IMAGE_FILE_NAME>data plot url or file path</IMAGE_FILE_NAME>\n";
1567 xmlFile<<
" <!-- who and when created this dataset-->\n\n";
1568 xmlFile<<
" <CREATE_TIMESTAMP>"<<TIME<<
"</CREATE_TIMESTAMP>\n";
1569 xmlFile<<
" <CREATED_BY_USER>dma</CREATED_BY_USER>\n";
1570 xmlFile<<
" <!-- version (string) and subversion (number) -->\n";
1571 xmlFile<<
" <!-- fields are used to read data back from the database -->\n\n";
1572 xmlFile<<
" <VERSION>"<<run_number<<dataset_seq_number<<
"</VERSION>\n";
1573 xmlFile<<
" <SUBVERSION>1</SUBVERSION>\n";
1574 xmlFile<<
" <!-- Assign predefined dataset attributes -->\n\n";
1575 xmlFile<<
" <PREDEFINED_ATTRIBUTES>\n";
1576 xmlFile<<
" <ATTRIBUTE>\n";
1577 xmlFile<<
" <NAME>HCAL Dataset Status</NAME>\n";
1578 xmlFile<<
" <VALUE>VALID</VALUE>\n";
1579 xmlFile<<
" </ATTRIBUTE>\n";
1580 xmlFile<<
" </PREDEFINED_ATTRIBUTES>\n";
1581 xmlFile<<
" <!-- multiple data block records -->\n\n";
1584 for(std::vector <HcalElectronicsId>::iterator eid = AllElIds.begin(); eid != AllElIds.end(); eid++){
1588 if(!(!(gid.null()) &&
1594 std::string subdet=
"";
1600 double e=0,e_rms=0,t=0,t_rms=0;
1626 xmlFile<<
" <DATA>\n";
1627 xmlFile<<
" <NUMBER_OF_EVENTS_USED>"<<Statistic<<
"</NUMBER_OF_EVENTS_USED>\n";
1628 xmlFile<<
" <SIGNAL_MEAN>"<<e<<
"</SIGNAL_MEAN>\n";
1629 xmlFile<<
" <SIGNAL_RMS>"<<e_rms<<
"</SIGNAL_RMS>\n";
1630 xmlFile<<
" <TIME_MEAN>"<<t<<
"</TIME_MEAN>\n";
1631 xmlFile<<
" <TIME_RMS>"<<t_rms<<
"</TIME_RMS>\n";
1632 xmlFile<<
" <CHANNEL_STATUS_WORD>"<<Status<<
"</CHANNEL_STATUS_WORD>\n";
1633 xmlFile<<
" <CHANNEL_OBJECTNAME>HcalDetId</CHANNEL_OBJECTNAME>\n";
1634 xmlFile<<
" <SUBDET>"<<subdet<<
"</SUBDET>\n";
1635 xmlFile<<
" <IETA>"<<eta<<
"</IETA>\n";
1636 xmlFile<<
" <IPHI>"<<phi<<
"</IPHI>\n";
1637 xmlFile<<
" <DEPTH>"<<depth<<
"</DEPTH>\n";
1638 xmlFile<<
" <TYPE>0</TYPE>\n";
1639 xmlFile<<
" </DATA>\n";
1642 xmlFile<<
" </DATA_SET>\n";
1643 xmlFile<<
"</ROOT>\n";
1648 sprintf(str,
"HcalDetDiagLaserCalib_%i_%i.xml",run_number,dataset_seq_number);
1649 std::string xmlNameCalib=str;
1650 ofstream xmlFileCalib;
1651 xmlFileCalib.open(xmlNameCalib.c_str());
1653 xmlFileCalib<<
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n";
1654 xmlFileCalib<<
"<ROOT>\n";
1655 xmlFileCalib<<
" <HEADER>\n";
1656 xmlFileCalib<<
" <HINTS mode='only-det-root'/>\n";
1657 xmlFileCalib<<
" <TYPE>\n";
1658 xmlFileCalib<<
" <EXTENSION_TABLE_NAME>HCAL_DETMON_LED_LASER_V1</EXTENSION_TABLE_NAME>\n";
1659 xmlFileCalib<<
" <NAME>HCAL Laser CALIB [abort gap global]</NAME>\n";
1660 xmlFileCalib<<
" </TYPE>\n";
1661 xmlFileCalib<<
" <!-- run details -->\n";
1662 xmlFileCalib<<
" <RUN>\n";
1663 xmlFileCalib<<
" <RUN_TYPE>Global-RUN</RUN_TYPE>\n";
1664 xmlFileCalib<<
" <RUN_NUMBER>"<<run_number<<
"</RUN_NUMBER>\n";
1665 xmlFileCalib<<
" <RUN_BEGIN_TIMESTAMP>2009-01-01 00:00:00</RUN_BEGIN_TIMESTAMP>\n";
1666 xmlFileCalib<<
" <COMMENT_DESCRIPTION>hcal Laser CALIB data</COMMENT_DESCRIPTION>\n";
1667 xmlFileCalib<<
" <LOCATION>P5</LOCATION>\n";
1668 xmlFileCalib<<
" <INITIATED_BY_USER>dma</INITIATED_BY_USER>\n";
1669 xmlFileCalib<<
" </RUN>\n";
1670 xmlFileCalib<<
" </HEADER>\n";
1671 xmlFileCalib<<
" <DATA_SET>\n";
1672 xmlFileCalib<<
" <!-- optional dataset metadata -->\n\n";
1673 xmlFileCalib<<
" <SET_NUMBER>"<<dataset_seq_number<<
"</SET_NUMBER>\n";
1674 xmlFileCalib<<
" <SET_BEGIN_TIMESTAMP>2009-01-01 00:00:00</SET_BEGIN_TIMESTAMP>\n";
1675 xmlFileCalib<<
" <SET_END_TIMESTAMP>2009-01-01 00:00:00</SET_END_TIMESTAMP>\n";
1676 xmlFileCalib<<
" <NUMBER_OF_EVENTS_IN_SET>"<<ievt_<<
"</NUMBER_OF_EVENTS_IN_SET>\n";
1677 xmlFileCalib<<
" <COMMENT_DESCRIPTION>Automatic DQM output</COMMENT_DESCRIPTION>\n";
1678 xmlFileCalib<<
" <DATA_FILE_NAME>"<< xmlNameCalib <<
"</DATA_FILE_NAME>\n";
1679 xmlFileCalib<<
" <IMAGE_FILE_NAME>data plot url or file path</IMAGE_FILE_NAME>\n";
1680 xmlFileCalib<<
" <!-- who and when created this dataset-->\n\n";
1681 xmlFileCalib<<
" <CREATE_TIMESTAMP>"<<TIME<<
"</CREATE_TIMESTAMP>\n";
1682 xmlFileCalib<<
" <CREATED_BY_USER>dma</CREATED_BY_USER>\n";
1683 xmlFileCalib<<
" <!-- version (string) and subversion (number) -->\n";
1684 xmlFileCalib<<
" <!-- fields are used to read data back from the database -->\n\n";
1685 xmlFileCalib<<
" <VERSION>"<<run_number<<dataset_seq_number<<
"</VERSION>\n";
1686 xmlFileCalib<<
" <SUBVERSION>1</SUBVERSION>\n";
1687 xmlFileCalib<<
" <!-- Assign predefined dataset attributes -->\n\n";
1688 xmlFileCalib<<
" <PREDEFINED_ATTRIBUTES>\n";
1689 xmlFileCalib<<
" <ATTRIBUTE>\n";
1690 xmlFileCalib<<
" <NAME>HCAL Dataset Status</NAME>\n";
1691 xmlFileCalib<<
" <VALUE>VALID</VALUE>\n";
1692 xmlFileCalib<<
" </ATTRIBUTE>\n";
1693 xmlFileCalib<<
" </PREDEFINED_ATTRIBUTES>\n";
1694 xmlFileCalib<<
" <!-- multiple data block records -->\n\n";
1697 std::string subdet=
"";
1698 if(
sd==1) subdet=
"HB";
1699 if(
sd==2) subdet=
"HE";
1700 if(
sd==3) subdet=
"HO";
1701 if(
sd==4) subdet=
"HF";
1703 double e=0,e_rms=0,t=0,t_rms=0;
1708 xmlFileCalib<<
" <DATA>\n";
1709 xmlFileCalib<<
" <NUMBER_OF_EVENTS_USED>"<<Statistic<<
"</NUMBER_OF_EVENTS_USED>\n";
1710 xmlFileCalib<<
" <SIGNAL_MEAN>"<<e<<
"</SIGNAL_MEAN>\n";
1711 xmlFileCalib<<
" <SIGNAL_RMS>"<<e_rms<<
"</SIGNAL_RMS>\n";
1712 xmlFileCalib<<
" <TIME_MEAN>"<<t<<
"</TIME_MEAN>\n";
1713 xmlFileCalib<<
" <TIME_RMS>"<<t_rms<<
"</TIME_RMS>\n";
1714 xmlFileCalib<<
" <CHANNEL_STATUS_WORD>"<<Status<<
"</CHANNEL_STATUS_WORD>\n";
1715 xmlFileCalib<<
" <CHANNEL_OBJECTNAME>HcalDetId</CHANNEL_OBJECTNAME>\n";
1716 xmlFileCalib<<
" <SUBDET>"<<subdet<<
"</SUBDET>\n";
1717 xmlFileCalib<<
" <IETA>"<<
eta<<
"</IETA>\n";
1718 xmlFileCalib<<
" <IPHI>"<<
phi<<
"</IPHI>\n";
1719 xmlFileCalib<<
" <DEPTH>"<<0<<
"</DEPTH>\n";
1720 xmlFileCalib<<
" <TYPE>0</TYPE>\n";
1721 xmlFileCalib<<
" </DATA>\n";
1725 xmlFileCalib<<
" </DATA_SET>\n";
1726 xmlFileCalib<<
"</ROOT>\n";
1727 xmlFileCalib.close();
1729 sprintf(str,
"zip %s.zip %s %s",xmlName.c_str(),xmlName.c_str(),xmlNameCalib.c_str());
1731 sprintf(str,
"rm -f %s %s",xmlName.c_str(),xmlNameCalib.c_str());
1733 sprintf(str,
"mv -f %s.zip %s",xmlName.c_str(),
XmlFilePath.c_str());
1753 if(!f->IsOpen())
return ;
1754 TObjString *STR=(TObjString *)f->Get(
"run number");
1758 TTree*
t=(TTree*)f->Get(
"HCAL Laser data");
1760 t->SetBranchAddress(
"Subdet", subdet);
1761 t->SetBranchAddress(
"eta", &Eta);
1762 t->SetBranchAddress(
"phi", &Phi);
1763 t->SetBranchAddress(
"depth", &Depth);
1764 t->SetBranchAddress(
"amp", &);
1765 t->SetBranchAddress(
"rms", &rms);
1766 t->SetBranchAddress(
"time", &time);
1767 t->SetBranchAddress(
"time_rms", &time_rms);
1768 for(
int ievt=0;ievt<t->GetEntries();ievt++){
1770 if(strcmp(subdet,
"HB")==0)
hb_data[Eta+42][Phi-1][Depth-1].
set_reference(amp,rms,time,time_rms);
1771 if(strcmp(subdet,
"HE")==0)
he_data[Eta+42][Phi-1][Depth-1].
set_reference(amp,rms,time,time_rms);
1772 if(strcmp(subdet,
"HO")==0)
ho_data[Eta+42][Phi-1][Depth-1].
set_reference(amp,rms,time,time_rms);
1773 if(strcmp(subdet,
"HF")==0)
hf_data[Eta+42][Phi-1][Depth-1].
set_reference(amp,rms,time,time_rms);
1784 int Eta,
Phi,Depth,Statistic;
1789 if(gSystem->AccessPathName(
DatasetName.c_str()))
return;
1792 if(!f->IsOpen())
return ;
1795 t=(TTree*)f->Get(
"HCAL Laser data");
1797 t->SetBranchAddress(
"Subdet", subdet);
1798 t->SetBranchAddress(
"eta", &Eta);
1799 t->SetBranchAddress(
"phi", &Phi);
1800 t->SetBranchAddress(
"depth", &Depth);
1801 t->SetBranchAddress(
"amp", &);
1802 t->SetBranchAddress(
"rms", &rms);
1803 t->SetBranchAddress(
"time", &time);
1804 t->SetBranchAddress(
"time_rms", &time_rms);
1805 t->SetBranchAddress(
"statistic",&Statistic);
1806 for(
int ievt=0;ievt<t->GetEntries();ievt++){
1808 if(strcmp(subdet,
"HB")==0){
nHB++;
1813 if(strcmp(subdet,
"HE")==0){
nHE++;
1818 if(strcmp(subdet,
"HO")==0){
nHO++;
1823 if(strcmp(subdet,
"HF")==0){
nHF++;
1828 if(strcmp(subdet,
"CALIB_HB")==0){
1833 if(strcmp(subdet,
"CALIB_HE")==0){
1838 if(strcmp(subdet,
"CALIB_HO")==0){
1843 if(strcmp(subdet,
"CALIB_HF")==0){
1849 TObjString *STR1=(TObjString *)f->Get(
"run number");
1852 TObjString *STR2=(TObjString *)f->Get(
"Total events processed");
1855 TObjString *STR3=(TObjString *)f->Get(
"Dataset number");
1861 float adc_range[20]={14,28,40,52,67,132,202,262,322,397,722,1072,1372,1672,2047,3672,5422,6922,8422,10297};
1862 int adc_bins[20]={1,2,3,4,5,5,10,15,20,25,25,50,75,100,125,125,250,375,500,625};
1864 TF1 *fitFunc =
new TF1(
"fitFunc",
"gaus");
1865 if(fitFunc==0)
return;
1866 for(
int i=0;
i<56;
i++){
1867 float sum1=0,sum2=0,
n=0;
1869 for(
int j=0;
j<128;
j++){
1879 for(N=1;N<19;N++) if(sum1>adc_range[N-1] && sum1<adc_range[
N])
break;
1881 for(N=1;N<19;N++) if(sum2>adc_range[N-1] && sum2<adc_range[
N])
break;
1883 sprintf(str,
"Raddam(%i,%i,%i) S1",RADDAM_CH[
i].
eta,RADDAM_CH[
i].
phi,RADDAM_CH[
i].depth);
1884 S1[
i]=
new TH1F(str,str,10000/Ws1,0,10000);
1885 sprintf(str,
"Raddam(%i,%i,%i) S2",RADDAM_CH[
i].eta,RADDAM_CH[
i].phi,RADDAM_CH[
i].depth);
1886 S2[
i]=
new TH1F(str,str,10000/Ws1,0,10000);
1887 for(
int j=0;
j<128;
j++){
1889 S2[
i]->Fill(
adc2fC[j]-2.5,Raddam_data[
i].s2_adc[j]);
1892 S1[
i]->Fit(
"fitFunc");
1893 S1[
i]->GetFunction(
"fitFunc")->GetParameters(parm);
1897 Raddam_data[
i].
S1FITMEANER=
S1[
i]->GetFunction(
"fitFunc")->GetParError(1);
1899 Raddam_data[
i].
S1CHI2=
S1[
i]->GetFunction(
"fitFunc")->GetChisquare();
1900 Raddam_data[
i].
S1NDF=
S1[
i]->GetFunction(
"fitFunc")->GetNDF();
1902 S2[
i]->Fit(
"fitFunc");
1903 S2[
i]->GetFunction(
"fitFunc")->GetParameters(parm);
1907 Raddam_data[
i].
S2FITMEANER=
S2[
i]->GetFunction(
"fitFunc")->GetParError(1);
1909 Raddam_data[
i].
S2CHI2=
S2[
i]->GetFunction(
"fitFunc")->GetChisquare();
1910 Raddam_data[
i].
S2NDF=
S2[
i]->GetFunction(
"fitFunc")->GetNDF();
1915 Long_t
t; t=
time(0); strftime(TIME,30,
"%F %T",localtime(&t));
1920 sprintf(str,
"HcalDetDiagRaddam.xml");
1922 std::string xmlName=str;
1924 xmlFile.open(xmlName.c_str());
1925 xmlFile<<
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\" ?>\n";
1926 xmlFile<<
"<ROOT>\n";
1927 xmlFile<<
" <HEADER>\n";
1928 xmlFile<<
" <TYPE>\n";
1929 xmlFile<<
" <EXTENSION_TABLE_NAME>HCAL_RADDAM</EXTENSION_TABLE_NAME>\n";
1930 xmlFile<<
" <NAME>HCAL Raddam</NAME>\n";
1931 xmlFile<<
" </TYPE>\n";
1932 xmlFile<<
" <!-- run details -->\n";
1933 xmlFile<<
" <RUN>\n";
1934 xmlFile<<
" <RUN_TYPE>TEST LOCAL-RUN</RUN_TYPE>\n";
1935 xmlFile<<
" <RUN_NUMBER>"<<
run_number<<
"</RUN_NUMBER>\n";
1936 xmlFile<<
" <RUN_BEGIN_TIMESTAMP>"<<TIME<<
"</RUN_BEGIN_TIMESTAMP>\n";
1937 xmlFile<<
" <COMMENT_DESCRIPTION>hcal raddam data</COMMENT_DESCRIPTION>\n";
1938 xmlFile<<
" <LOCATION>P5</LOCATION>\n";
1939 xmlFile<<
" <INITIATED_BY_USER>dma</INITIATED_BY_USER>\n";
1940 xmlFile<<
" </RUN>\n";
1941 xmlFile<<
" </HEADER>\n";
1942 xmlFile<<
" <DATA_SET>\n";
1943 xmlFile<<
" <COMMENT_DESCRIPTION>Test Raddam data</COMMENT_DESCRIPTION>\n";
1944 xmlFile<<
" <CREATE_TIMESTAMP>"<<TIME<<
"</CREATE_TIMESTAMP>\n";
1945 xmlFile<<
" <CREATED_BY_USER>dma</CREATED_BY_USER>\n";
1946 xmlFile<<
" <VERSION>Test_Version_1</VERSION>\n";
1948 for(
int i=0;
i<56;
i++){
1949 xmlFile<<
" <DATA>\n";
1950 xmlFile<<
" <SUBDET>HF</SUBDET>\n";
1951 xmlFile<<
" <IETA>"<<RADDAM_CH[
i].
eta<<
"</IETA>\n";
1952 xmlFile<<
" <IPHI>"<<RADDAM_CH[
i].
phi<<
"</IPHI>\n";
1953 xmlFile<<
" <DEPTH>"<<RADDAM_CH[
i].
depth<<
"</DEPTH>\n";
1955 xmlFile<<
" <TOTEVNT>"<<Raddam_data[
i].
TOTEVNT<<
"</TOTEVNT>\n";
1956 xmlFile<<
" <CUT1EVNT>"<<Raddam_data[
i].
CUT1EVNT<<
"</CUT1EVNT>\n";
1957 xmlFile<<
" <CUT2EVNT>"<<Raddam_data[
i].
CUT2EVNT<<
"</CUT2EVNT>\n";
1959 xmlFile<<
" <S1MEAN>"<<Raddam_data[
i].
S1MEAN <<
"</S1MEAN>\n";
1960 xmlFile<<
" <S1RMS>"<<Raddam_data[
i].
S1RMS <<
"</S1RMS>\n";
1961 xmlFile<<
" <S1FITMEAN>"<<Raddam_data[
i].
S1FITMEAN <<
"</S1FITMEAN>\n";
1962 xmlFile<<
" <S1FITMEANER>"<<Raddam_data[
i].
S1FITMEANER <<
"</S1FITMEANER>\n";
1963 xmlFile<<
" <S1FITSIGMA>"<<Raddam_data[
i].
S1FITSIGMA <<
"</S1FITSIGMA>\n";
1964 xmlFile<<
" <S1CHI2>"<<Raddam_data[
i].
S1CHI2 <<
"</S1CHI2>\n";
1965 xmlFile<<
" <S1NDF>"<<Raddam_data[
i].
S1NDF <<
"</S1NDF>\n";
1966 xmlFile<<
" <S1BINWIDTH>"<<Raddam_data[
i].
S1BINWIDTH <<
"</S1BINWIDTH>\n";
1968 xmlFile<<
" <S2MEAN>"<<Raddam_data[
i].
S2MEAN <<
"</S2MEAN>\n";
1969 xmlFile<<
" <S2RMS>"<<Raddam_data[
i].
S2RMS <<
"</S2RMS>\n";
1970 xmlFile<<
" <S2FITMEAN>"<<Raddam_data[
i].
S2FITMEAN <<
"</S2FITMEAN>\n";
1971 xmlFile<<
" <S2FITMEANER>"<<Raddam_data[
i].
S2FITMEANER <<
"</S2FITMEANER>\n";
1972 xmlFile<<
" <S2FITSIGMA>"<<Raddam_data[
i].
S2FITSIGMA <<
"</S2FITSIGMA>\n";
1973 xmlFile<<
" <S2CHI2>"<<Raddam_data[
i].
S2CHI2 <<
"</S2CHI2>\n";
1974 xmlFile<<
" <S2NDF>"<<Raddam_data[
i].
S2NDF <<
"</S2NDF>\n";
1975 xmlFile<<
" <S2BINWIDTH>"<<Raddam_data[
i].
S2BINWIDTH <<
"</S2BINWIDTH>\n";
1976 xmlFile<<
" </DATA>\n";
1978 xmlFile<<
" </DATA_SET>\n";
1979 xmlFile<<
"</ROOT>\n";
1982 sprintf(str,
"zip %s.zip %s",xmlName.c_str(),xmlName.c_str());
1984 sprintf(str,
"rm -f %s",xmlName.c_str());
1986 sprintf(str,
"mv -f %s.zip %s",xmlName.c_str(),
XmlFilePath.c_str());
1993 sprintf(str,
"%sHcalDetDiagRaddamData.root",
OutputFilePath.c_str());
1995 TFile *
theFile =
new TFile(str,
"RECREATE");
1996 if(!theFile->IsOpen())
return;
1998 for(
int i=0;
i<56;
i++){
1999 if(
S1[
i]!=0)
S1[
i]->Write();
2000 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)
static const float adc2fC[128]
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)
bool getByType(Handle< PROD > &result) const
MonitorElement * hbheTimeRMS
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
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
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.
const Item * getValues(DetId fId) const
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