116 #include "CLHEP/Vector/LorentzVector.h"
138 #include "TProfile.h"
150 using namespace reco;
169 static const unsigned int nL1mx=140;
184 void findHOEtaPhi(
int iphsect,
int& ietaho,
int& iphiho);
187 virtual void endJob() ;
241 TH1F* ho_occupency[5];
296 : muonTags_(iConfig.getUntrackedParameter<edm::
InputTag>(
"muons"))
308 if(m_startTS<0) m_startTS=0;
321 produces<HOCalibVariableCollection>(
"HOCalibVariableCollection").setBranchAlias(
"HOCalibVariableCollection");
332 for (
int ij=0; ij<=
ntrgp_gm; ij++) {
333 sprintf(title,
"hotime_trgp_%i", ij+1);
335 sprintf(title,
"hopeak_trgp_%i", ij+1);
345 hst_hopedrms = fs->
make<TH1F>(
"hst_hopedrms",
"hst_hopedrms", 100, 0.0, 0.1);
346 for (
int ij=0; ij<=
ntrgp_gm; ij++) {
347 sprintf(title,
"Nhotime_trgp_%i", ij+1);
362 for (
int i=0;
i<5;
i++) {
363 sprintf(title,
"ho_occupency (>%i #sigma)",
i+2);
380 for (
int ij=0; ij<=
ntrgp_gm; ij++) {
387 float xx =
hopedpr->GetBinError(
i+1);
388 if (
hopedpr->GetBinEntries(
i+1) >0) {
404 for (
int i=0;
i<5;
i++) {
422 int irun = iEvent.
id().
run();
426 m_shape = (*conditions_).getHcalShape();
444 int tmpeta1 = (
i>0) ?
i -1 : -
i +14;
445 if (tmpeta1 <0 || tmpeta1 >
netamx)
continue;
488 if ((*ho).size()>0) {
491 int tmpeta=
id.
ieta();
492 int tmpphi=
id.iphi();
493 m_coder = (*conditions_).getHcalCoder(
id);
495 int tmpeta1 = (tmpeta>0) ? tmpeta -1 : -tmpeta +14;
496 for (
int i=0;
i<(*j).size() &&
i<
nchnmx;
i++) {
503 if ((*hbhe).size()>0) {
506 int tmpeta=
id.
ieta();
507 int tmpphi=
id.iphi();
508 int tmpdepth =
id.depth();
509 m_coder = (*conditions_).getHcalCoder(
id);
510 int tmpeta1 = (tmpeta>0) ? tmpeta -15 : -tmpeta + 1;
511 if (tmpdepth==1) tmpeta1 = (tmpeta>0) ? tmpeta -1 : -tmpeta +29;
512 for (
int i=0;
i<(*j).size() &&
i<
nchnmx;
i++) {
515 allhb1->Fill(
nphimx*nchnmx*tmpeta1 + nchnmx*(tmpphi-1) +
i, signal);
517 hb1pedpr->Fill(
nphimx*nchnmx*tmpeta1 + nchnmx*(tmpphi-1) +
i, signal);}
519 allhb2->Fill(
nphimx*nchnmx*tmpeta1 + nchnmx*(tmpphi-1) +
i, signal);
522 allhb3->Fill(
nphimx*nchnmx*tmpeta1 + nchnmx*(tmpphi-1) +
i, signal);
529 double pival = acos(-1.);
534 if (cosmicmuon->size()>0) {
539 int ntrgpas_gm[
ntrgp_gm]={0,0,0,0,0,0,0,0,0,0};
580 int Noccu_old =
Noccu;
582 for(reco::TrackCollection::const_iterator ncosm = cosmicmuon->begin();
583 ncosm != cosmicmuon->end(); ++ncosm) {
585 if ((*ncosm).ndof() < 15)
continue;
586 if ((*ncosm).normalizedChi2() >30.0)
continue;
590 tmpHOCalib.
trig1 = l1trg;
591 tmpHOCalib.
trig2 = hlttr;
593 int charge = ncosm->charge();
595 double innerr = (*ncosm).innerPosition().Perp2();
596 double outerr = (*ncosm).outerPosition().Perp2();
597 int iiner = (innerr <outerr) ? 1 : 0;
608 double posx, posy, posz;
609 double momx, momy, momz;
612 posx = (*ncosm).innerPosition().X();
613 posy = (*ncosm).innerPosition().Y();
614 posz = (*ncosm).innerPosition().Z();
616 momx = (*ncosm).innerMomentum().X();
617 momy = (*ncosm).innerMomentum().Y();
618 momz = (*ncosm).innerMomentum().Z();
621 posx = (*ncosm).outerPosition().X();
622 posy = (*ncosm).outerPosition().Y();
623 posz = (*ncosm).outerPosition().Z();
625 momx = (*ncosm).outerMomentum().X();
626 momy = (*ncosm).outerMomentum().Y();
627 momz = (*ncosm).outerMomentum().Z();
633 CLHEP::Hep3Vector tmpmuon3v(posx, posy, posz);
634 CLHEP::Hep3Vector tmpmuondir(momx, momy, momz);
636 bool samedir = (tmpmuon3v.dot(tmpmuondir) >0) ?
true :
false;
637 for (
int i=0;
i<3;
i++) {tmpHOCalib.
caloen[
i] = 0.0;}
639 for(reco::TrackCollection::const_iterator ncosmcor = cosmicmuon->begin();
640 ncosmcor != cosmicmuon->end(); ++ncosmcor) {
641 if (ncosmcor==ncosm)
continue;
643 CLHEP::Hep3Vector tmpmuon3vcor;
644 CLHEP::Hep3Vector tmpmom3v;
646 tmpmuon3vcor = CLHEP::Hep3Vector((*ncosmcor).innerPosition().X(),(*ncosmcor).innerPosition().Y(),(*ncosmcor).innerPosition().Z());
647 tmpmom3v = CLHEP::Hep3Vector((*ncosmcor).innerMomentum().X(),(*ncosmcor).innerMomentum().Y(),(*ncosmcor).innerMomentum().Z());
649 tmpmuon3vcor = CLHEP::Hep3Vector((*ncosmcor).outerPosition().X(),(*ncosmcor).outerPosition().Y(),(*ncosmcor).outerPosition().Z());
650 tmpmom3v = CLHEP::Hep3Vector((*ncosmcor).outerMomentum().X(),(*ncosmcor).outerMomentum().Y(),(*ncosmcor).outerMomentum().Z());
653 if (tmpmom3v.mag()<0.2 || (*ncosmcor).ndof()<5)
continue;
655 double angle = tmpmuon3v.angle(tmpmuon3vcor);
656 if (angle < 7.5*pival/180.) {inearbymuon=1;}
659 if (angle <7.5*pival/180.) { tmpHOCalib.
caloen[0] +=1.;}
660 if (angle <15.0*pival/180.) { tmpHOCalib.
caloen[1] +=1.;}
661 if (angle <35.0*pival/180.) { tmpHOCalib.
caloen[2] +=1.;}
673 calt !=calotower->end(); calt++) {
675 double ith = (*calt).momentum().theta();
676 double iph = (*calt).momentum().phi();
678 CLHEP::Hep3Vector calo3v(
sin(ith)*
cos(iph),
sin(ith)*
sin(iph),
cos(ith));
680 double angle = tmpmuon3v.angle(calo3v);
682 if (angle < 7.5*pival/180.) {tmpHOCalib.
caloen[0] += calt->emEnergy()+calt->hadEnergy();}
683 if (angle < 15*pival/180.) {tmpHOCalib.
caloen[1] += calt->emEnergy()+calt->hadEnergy();}
684 if (angle < 35*pival/180.) {tmpHOCalib.
caloen[2] += calt->emEnergy()+calt->hadEnergy();}
689 if (tmpHOCalib.
caloen[0] >10.0)
continue;
693 double mom =
sqrt(momx*momx + momy*momy +momz*momz);
701 tmpHOCalib.
trkdr = (*ncosm).d0();
702 tmpHOCalib.
trkdz = (*ncosm).dz();
704 tmpHOCalib.
nmuon = cosmicmuon->size();
705 tmpHOCalib.
trkvx = glbpt.
x();
706 tmpHOCalib.
trkvy = glbpt.
y();
707 tmpHOCalib.
trkvz = glbpt.
z();
712 tmpHOCalib.
ndof = (inearbymuon ==0) ? (
int)(*ncosm).ndof() : -(int)(*ncosm).ndof();
713 tmpHOCalib.
chisq = (*ncosm).normalizedChi2();
714 tmpHOCalib.
therr = 0.;
715 tmpHOCalib.
pherr = 0.;
719 tmpHOCalib.
therr = innercov(1,1);
720 tmpHOCalib.
pherr = innercov(2,2);
723 tmpHOCalib.
therr = outercov(1,1);
724 tmpHOCalib.
pherr = outercov(2,2);
736 double phiho = trkpos.
phi();
737 if (phiho<0) phiho +=2*pival;
739 int iphisect_dt=int(6*(phiho+pival/18.)/pival);
740 if (iphisect_dt>=12) iphisect_dt=0;
745 for (
int kl = 0; kl<=2; kl++) {
747 int iphisecttmp = (kl<2) ? iphisect_dt + kl : iphisect_dt - 1;
748 if (iphisecttmp <0) iphisecttmp = 11;
749 if (iphisecttmp >=12) iphisecttmp = 0;
751 double phipos = iphisecttmp*pival/6.;
752 double phirot = phipos;
765 for (
int ik=1; ik>=0; ik--) {
767 double radial = 407.0;
768 if (ik==0) radial = 382.0;
777 if (steppingHelixstateinfo_.
isValid()) {
780 CLHEP::Hep3Vector hotrkdir2(steppingHelixstateinfo_.
momentum().
x(), steppingHelixstateinfo_.
momentum().
y(),steppingHelixstateinfo_.
momentum().
z());
784 double xx = lclvt0.
x();
785 double yy = lclvt0.y();
788 if ((
std::abs(yy) < 130 && xx >-64.7 && xx <138.2)
791 iphisect = iphisecttmp;
795 if (iphisect != iphisecttmp)
continue;
807 tmpHOCalib.
hoang = CLHEP::Hep3Vector(zLocal.
x(),zLocal.
y(),zLocal.
z()).
dot(hotrkdir2.unit());
822 for (
int i=0;
i<9;
i++) {tmpHOCalib.
hosig[
i]=-100.0;}
823 for (
int i=0;
i<18;
i++) {tmpHOCalib.
hocorsig[
i]=-100.0;}
824 for (
int i=0;
i<9;
i++) {tmpHOCalib.
hbhesig[
i]=-100.0;}
825 tmpHOCalib.
hocro = -100;
826 tmpHOCalib.
htime = -1000;
836 if (iphiho<0) isect -=2000000;
837 tmpHOCalib.
isect = isect;
849 if (
iring==1) {etamn=5; etamx = 10;}
850 if (
iring==2) {etamn=11; etamx = 16;}
851 if (
iring==-1){etamn=-10; etamx = -5;}
852 if (
iring==-2){etamn=-16; etamx = -11;}
857 phimx =2*int((iphiho+1)/2.);
860 phimn = 3*int((iphiho+1)/3.) - 1;
864 if (phimn <1) phimn +=
nphimx;
865 if (phimx >72) phimx -=
nphimx;
876 for (
int i=0;
i<9;
i++) {tmpHOCalib.
hbhesig[
i]=-100.0;}
879 if ((*hbhe).size() >0) {
884 int tmpeta=
id.
ieta();
885 int tmpphi=
id.iphi();
886 m_coder = (*conditions_).getHcalCoder(
id);
889 int deta = tmpeta-ietaho;
890 if (tmpeta==-1 && ietaho== 1) deta = -1;
891 if (tmpeta== 1 && ietaho==-1) deta = 1;
892 int dphi = tmpphi-iphiho;
894 if (dphi==71) dphi=-1;
895 if (dphi==-71) dphi=1;
900 if (ipass2 ==0 )
continue;
903 for (
int i=0;
i<(*j).size() &&
i<
nchnmx;
i++) {
908 for (
int i=1;
i<(*j).size() &&
i<=8;
i++) {
913 if (3*(deta+1)+dphi+1<9) tmpHOCalib.
hbhesig[3*(deta+1)+dphi+1] = signal;
924 if ((*hbheht).size()>0) {
925 if(!(*hbheht).size())
throw (
int)(*hbheht).size();
931 int tmpeta=
id.
ieta();
932 int tmpphi=
id.iphi();
934 int deta = tmpeta-ietaho;
935 if (tmpeta==-1 && ietaho== 1) deta = -1;
936 if (tmpeta== 1 && ietaho==-1) deta = 1;
937 int dphi = tmpphi-iphiho;
939 if (dphi==71) dphi=-1;
940 if (dphi==-71) dphi=1;
944 if ( ipass2 ==0 )
continue;
946 float signal = (*j).energy();
948 if (3*(deta+1)+dphi+1<9) tmpHOCalib.
hbhesig[3*(deta+1)+dphi+1] = signal;
957 if ((*ho).size()>0) {
969 int tmpeta=
id.
ieta();
970 int tmpphi=
id.iphi();
971 m_coder = (*conditions_).getHcalCoder(
id);
974 if (tmpeta >=etamn && tmpeta <=etamx) {
976 ipass1 = (tmpphi >=phimn && tmpphi <=phimx ) ? 1 : 0;
978 ipass1 = (tmpphi==71 || tmpphi ==72 || tmpphi==1) ? 1 : 0;
982 int deta = tmpeta-ietaho;
983 if (tmpeta==-1 && ietaho== 1) deta = -1;
984 if (tmpeta== 1 && ietaho==-1) deta = 1;
986 int dphi = tmpphi -iphiho;
988 if (dphi==71) dphi=-1;
989 if (dphi==-71) dphi=1;
994 int tmpeta1 = (tmpeta>0) ? tmpeta -1 : -tmpeta +14;
996 float tmpdata[
nchnmx]={0,0,0,0,0,0,0,0,0,0};
997 float sigvall[
nsigpk]={0,0,0,0,0,0,0};
999 for (
int i=0;
i<(*j).size() &&
i<
nchnmx;
i++) {
1001 if (deta==0 && dphi==0) {
1002 double tmpE = tmpdata[
i] -
pedestal[tmpeta1][tmpphi-1][(*j).sample(
i).capid()];
1010 for (
int ncap=0; ncap<
nsigpk; ncap++) {
1012 sigvall[ncap] +=tmpdata[
i];
1016 if (
i==(*j).size()-1) {
1019 for (
int ij=0; ij<
nsigpk; ij++) {
1020 if (sigvall[ij] > mxled) {mxled = sigvall[ij]; imxled=ij;}
1023 for (
int ij=0; ij<4; ij++) {
1024 pedx +=pedestal[tmpeta1][tmpphi-1][ij];
1026 if (mxled-pedx >2 && mxled-pedx <20 ) {
1028 for (
int jk=0; jk<
ntrgp_gm; jk++) {
1029 if (ntrgpas_gm[jk]>0) {
1030 hopeak[jk]->Fill(nphimx*tmpeta1 + tmpphi-1, imxled+
nstrbn);
1033 if (tmpdata[5]+tmpdata[6] >1) {
1034 horatio->Fill(nphimx*tmpeta1 + tmpphi-1, (tmpdata[5]-tmpdata[6])/(tmpdata[5]+tmpdata[6]));
1036 for (
int ij=0; ij<(*j).size() && ij<
nchnmx; ij++) {
1037 hotime[
ntrgp_gm]->Fill(nphimx*nchnmx*tmpeta1 + nchnmx*(tmpphi-1) + ij, tmpdata[ij]);
1038 Nhotime[
ntrgp_gm]->Fill(nphimx*nchnmx*tmpeta1 + nchnmx*(tmpphi-1) + ij, 1.);
1039 for (
int jk=0; jk<
ntrgp_gm; jk++) {
1040 if (ntrgpas_gm[jk]>0) {
1041 hotime[jk]->Fill(nphimx*nchnmx*tmpeta1 + nchnmx*(tmpphi-1) + ij, tmpdata[ij]);
1042 Nhotime[jk]->Fill(nphimx*nchnmx*tmpeta1 + nchnmx*(tmpphi-1) + ij, 1.);
1052 if (
std::abs(tmpeta) <=15 && deta==0 && dphi ==0) {
1055 for (
int i =0;
i<nchnmx &&
i< (*j).size();
i++) {
1056 if (
i >=sigstr &&
i<=sigend)
continue;
1057 signal += tmpdata[
i] -
pedestal[tmpeta1][tmpphi-1][(*j).sample(
i).capid()];
1058 if (++icnt >=4)
break;
1060 tmpHOCalib.
hocro = signal;
1064 if (ipass1 ==0 && ipass2 ==0 && cosmicmuon->size()<=2) {
1066 if ((iphiho >=1 && iphiho<=nphimx/2 && tmpphi >=1 && tmpphi <=nphimx/2) ||
1067 (iphiho >nphimx/2 && iphiho<=nphimx && tmpphi >nphimx/2 && tmpphi <=
nphimx)) {
1068 if (isFilled[nphimx*tmpeta1+tmpphi-1]==0) {
1069 isFilled[nphimx*tmpeta1+tmpphi-1]=1;
1070 for (
int i=0;
i<(*j).size() &&
i<
nchnmx;
i++) {
1071 hopedtime->Fill(nphimx*nchnmx*tmpeta1 + nchnmx*(tmpphi-1) +
i, tmpdata[
i]);
1072 Nhopedtime->Fill(nphimx*nchnmx*tmpeta1 + nchnmx*(tmpphi-1) + i, 1.);
1073 hopedpr->Fill(nphimx*nchnmx*tmpeta1 + nchnmx*(tmpphi-1) + i, tmpdata[i]);
1081 if (ipass1 ==0 && ipass2 ==0 )
continue;
1084 for (
int i=sigstr;
i<(*j).size() &&
i<=sigend;
i++) {
1085 signal += tmpdata[
i] -
pedestal[tmpeta1][tmpphi-1][(*j).sample(
i).capid()];
1087 if (signal <-100 || signal >100000) signal = -100;
1089 if (signal >-100 &&
Noccu == Noccu_old) {
1090 for (
int i=0;
i<5;
i++) {
1098 if (ipass1 ==0 && ipass2 ==0 )
continue;
1101 int tmpdph = tmpphi-phimn;
1102 if (tmpdph<0) tmpdph = 2;
1104 int ilog = 2*(tmpeta-etamn)+tmpdph;
1107 ilog = 3*(tmpeta-etamn)+tmpdph;
1109 ilog = 3*(etamx-tmpeta)+tmpdph;
1112 if (ilog>-1 && ilog<18) {
1113 tmpHOCalib.
hocorsig[ilog] = signal;
1118 if (3*(deta+1)+dphi+1<9) tmpHOCalib.
hosig[3*(deta+1)+dphi+1] = signal;
1151 tmpHOCalib.
htime = sumEt/
max(sumE,1.e-6);
1158 if ((*hoht).size()>0) {
1163 int tmpeta=
id.
ieta();
1164 int tmpphi=
id.iphi();
1167 if (tmpeta >=etamn && tmpeta <=etamx) {
1168 if (phimn < phimx) {
1169 ipass1 = (tmpphi >=phimn && tmpphi <=phimx ) ? 1 : 0;
1171 ipass1 = (tmpphi==71 || tmpphi ==72 || tmpphi==1) ? 1 : 0;
1175 int deta = tmpeta-ietaho;
1176 if (tmpeta==-1 && ietaho== 1) deta = -1;
1177 if (tmpeta== 1 && ietaho==-1) deta = 1;
1179 int dphi = tmpphi -iphiho;
1181 if (dphi==71) dphi=-1;
1182 if (dphi==-71) dphi=1;
1185 float signal = (*j).energy();
1187 int tmpeta1 = (tmpeta>0) ? tmpeta -1 : -tmpeta +14;
1188 if (signal >-100 &&
Noccu == Noccu_old) {
1189 for (
int i=0;
i<5;
i++) {
1199 if (ipass1 ==0 && ipass2 ==0 )
continue;
1202 int tmpdph = tmpphi-phimn;
1203 if (tmpdph<0) tmpdph = 2;
1205 int ilog = 2*(tmpeta-etamn)+tmpdph;
1208 ilog = 3*(tmpeta-etamn)+tmpdph;
1210 ilog = 3*(etamx-tmpeta)+tmpdph;
1213 if (ilog>-1 && ilog<18) {
1214 tmpHOCalib.
hocorsig[ilog] = signal;
1220 if (3*(deta+1)+dphi+1<9) {
1221 tmpHOCalib.
hosig[3*(deta+1)+dphi+1] = signal;
1225 if (deta==0 && dphi ==0) {
1226 tmpHOCalib.
htime = (*j).time();
1227 int crphi = tmpphi + 6;
1228 if (crphi >72) crphi -=72;
1233 int etacr= idcr.
ieta();
1234 int phicr= idcr.
iphi();
1235 if (tmpeta==etacr && crphi ==phicr) {
1248 hostore->push_back(tmpHOCalib);
1256 iEvent.
put(hostore,
"HOCalibVariableCollection");
1298 double etalow[
netabin]={ 0.025, 35.195, 70.625, 106.595, 141.565, 180.765, 220.235, 261.385, 304.525, 349.975, 410.025, 452.085, 506.645, 565.025, 627.725, 660.25};
1299 double etahgh[
netabin]={ 35.145, 70.575, 106.545, 125.505, 180.715, 220.185, 261.335, 304.475, 349.925, 392.575, 452.035, 506.595, 564.975, 627.675, 661.075, 700.25};
1301 double philow[6]={-76.27, -35.11, 0.35, 35.81, 71.77, 108.93};
1302 double phihgh[6]={-35.81, -0.35, 35.11, 71.07, 108.23, 140.49};
1304 double philow00[6]={-60.27, -32.91, 0.35, 33.61, 67.37, 102.23};
1305 double phihgh00[6]={-33.61, -0.35, 32.91, 66.67, 101.53, 129.49};
1307 double philow01[6]={-64.67, -34.91, 0.35, 35.61, 71.37, 108.33};
1308 double phihgh01[6]={-35.61, -0.35, 34.91, 70.67, 107.63, 138.19};
1315 if (tmpdy >etalow[
i] && tmpdy <etahgh[
i]) {
1317 float tmp1 = fabs(tmpdy-etalow[i]);
1318 float tmp2 = fabs(tmpdy-etahgh[i]);
1323 if (i>=4 && i<10)
iring=1;
1324 if (i>=10 && i<netabin)
iring=2;
1333 for (
int i=0;
i<6;
i++) {
1336 float tmp1 = fabs(
xhor1-philow[i]);
1337 float tmp2 = fabs(
xhor1-phihgh[i]);
1343 for (
int i=0;
i<6;
i++) {
1346 float tmp1 = fabs(
xhor1-philow01[i]);
1347 float tmp2 = fabs(
xhor1-phihgh01[i]);
1353 for (
int i=0;
i<6;
i++) {
1356 float tmp1 = fabs(
xhor0-philow00[i]);
1357 float tmp2 = fabs(
xhor0-phihgh00[i]);
1365 for (
int i=0;
i<4;
i++) {
1366 if (tmpdy >etalow[
i] && tmpdy <etahgh[
i]) {
1367 float tmp1 = fabs(tmpdy-etalow[i]);
1368 float tmp2 = fabs(tmpdy-etahgh[i]);
1377 iphiho = 6*iphisect -2 + tmpphi;
1378 if (iphiho <=0) iphiho +=
nphimx;
1401 if (dir) gmom *=-1.;
1408 if (dir) gmom *=-1.;
T getParameter(std::string const &) const
Basic3DVector< float > DirectionType
T getUntrackedParameter(std::string const &, T const &) const
TProfile * hopeak[ntrgp_gm+1]
FreeTrajectoryState getFreeTrajectoryState(const reco::Track &tk, const MagneticField *field, int itag, bool dir)
double outerPy() const
y coordinate of momentum vector at the outermost hit position
const TrackExtraRef & extra() const
reference to "extra" object
HcalCalibrations calibped
#define DEFINE_FWK_MODULE(type)
Sin< T >::type sin(const T &t)
Geom::Theta< T > theta() const
ReturnType plane(const PositionType &pos, const RotationType &rot) const
std::vector< T >::const_iterator const_iterator
edm::ESHandle< HcalDbService > conditions_
std::map< std::string, bool > fired
double pedestal(int fCapId) const
get pedestal for capid=0..3
Geom::Phi< T > phi() const
const HcalQIEShape * m_shape
virtual void produce(edm::Event &, const edm::EventSetup &)
GlobalVector momentum() const
void findHOEtaPhi(int iphsect, int &ietaho, int &iphiho)
double outerZ() const
z coordinate of the outermost hit position
static const unsigned int nL1mx
const math::XYZPoint & innerPosition() const
position of the innermost hit
const HcalQIECoder * m_coder
const T & max(const T &a, const T &b)
void applyRadX0Correction(bool applyRadX0Correction)
OrphanHandle< PROD > put(std::auto_ptr< PROD > product)
Put a new product.
GlobalPoint position() const
static const unsigned int nL1trg
Basic3DVector< float > RotationType
Vector3DBase< typename PreciseFloatType< T, U >::Type, FrameTag > cross(const Vector3DBase< U, FrameTag > &v) const
Cos< T >::type cos(const T &t)
int ieta() const
get the cell ieta
math::Error< 5 >::type CovarianceMatrix
std::string theRootFileName
Basic3DVector< float > PositionType
edm::InputTag towerLabel_
double outerX() const
x coordinate of the outermost hit position
virtual TrajectoryStateOnSurface propagate(const FreeTrajectoryState &ftsStart, const Plane &pDest) const
Propagate to Plane given a starting point.
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
float pedestal[netamx][nphimx][ncidmx]
double outerPz() const
z coordinate of momentum vector at the outermost hit position
int iphi() const
get the cell iphi
TH1F * Nhotime[ntrgp_gm+1]
std::vector< HOCalibVariables > HOCalibVariableCollection
collection of HOcalibration variabale
AlCaHOCalibProducer(const edm::ParameterSet &)
T dot(const Basic3DVector &v) const
Scalar product, or "dot" product, with a vector of same type.
const math::XYZVector & innerMomentum() const
momentum vector at the innermost hit position
double outerY() const
y coordinate of the outermost hit position
T * make() const
make new ROOT object
HcalCalibrationWidths calibwidth
int charge() const
track electric charge
TH1F * hotime[ntrgp_gm+1]
static const unsigned int nHLTmx
void setMaterialMode(bool noMaterial)
Switch for material effects mode: no material effects if true.
HcalDetId id() const
get the id
double outerPx() const
x coordinate of momentum vector at the outermost hit position
math::Error< dimension >::type CovarianceMatrix
5 parameter covariance matrix
const double par[8 *NPar][4]
T angle(T x1, T y1, T z1, T x2, T y2, T z2)
float charge(const HcalQIEShape &fShape, unsigned fAdc, unsigned fCapId) const
ADC [0..127] + capid [0..3] -> fC conversion.