40 #define TWOPI 6.283185308
75 if ( clusPhiSize_ % 2 == 0 || clusEtaSize_ % 2 == 0)
76 edm::LogError(
"AlCaPi0RecHitsProducerError") <<
"Size of eta/phi for simple clustering should be odd numbers";
354 std::vector<EcalRecHit> seeds;
357 vector<EBDetId> usedXtals;
400 if (rhEBpi0.
isValid() && (rhEBpi0->size() > 0)){
405 for(itb=rhEBpi0->begin(); itb!=rhEBpi0->end(); ++itb){
408 double energy = itb->energy();
423 etot+= itb->energy();
440 vector<float> etClus;
441 vector<float> etaClus;
442 vector<float> thetaClus;
443 vector<float> phiClus;
444 vector<EBDetId> max_hit;
446 vector< vector<EcalRecHit> > RecHitsCluster;
447 vector< vector<EcalRecHit> > RecHitsCluster5x5;
448 vector<float> s4s9Clus;
449 vector<float> s9s25Clus;
458 for (std::vector<EcalRecHit>::iterator itseed=seeds.begin(); itseed!=seeds.end(); itseed++) {
459 EBDetId seed_id = itseed->id();
460 std::vector<EBDetId>::const_iterator usedIds;
462 bool seedAlreadyUsed=
false;
463 for(usedIds=usedXtals.begin(); usedIds!=usedXtals.end(); usedIds++){
464 if(*usedIds==seed_id){
465 seedAlreadyUsed=
true;
470 if(seedAlreadyUsed)
continue;
472 std::vector<std::pair<DetId,float> > clus_used;
475 vector<EcalRecHit> RecHitsInWindow;
476 vector<EcalRecHit> RecHitsInWindow5x5;
478 double simple_energy = 0;
480 for (std::vector<DetId >::iterator det=clus_v.begin(); det!=clus_v.end(); det++) {
483 bool HitAlreadyUsed=
false;
484 for(usedIds=usedXtals.begin(); usedIds!=usedXtals.end(); usedIds++){
490 if(HitAlreadyUsed)
continue;
497 usedXtals.push_back(*det);
498 RecHitsInWindow.push_back(
EBRecHits[nn]);
499 clus_used.push_back(std::make_pair(*det,1));
500 simple_energy = simple_energy +
EBRecHits[nn].energy();
505 if(simple_energy <= 0)
continue;
512 float theta_s = 2. * atan(
exp(-clus_pos.eta()));
518 float et_s = simple_energy *
sin(theta_s);
525 for(
int i=0;
i<4;
i++)s4s9_tmp[
i]= 0;
527 int seed_ieta = seed_id.
ieta();
528 int seed_iphi = seed_id.
iphi();
535 for(
unsigned int j=0;
j<RecHitsInWindow.size();
j++){
538 int ieta = det.
ieta();
539 int iphi = det.
iphi();
543 float en = RecHitsInWindow[
j].energy();
548 if(dx <= 0 && dy <=0) s4s9_tmp[0] += en;
549 if(dx >= 0 && dy <=0) s4s9_tmp[1] += en;
550 if(dx <= 0 && dy >=0) s4s9_tmp[2] += en;
551 if(dx >= 0 && dy >=0) s4s9_tmp[3] += en;
559 if(e3x3 <= 0)
continue;
561 float s4s9_max = *max_element( s4s9_tmp,s4s9_tmp+4)/e3x3;
565 std::vector<DetId> clus_v5x5 = topology_p->
getWindow(seed_id,5,5);
566 for( std::vector<DetId>::const_iterator idItr = clus_v5x5.begin(); idItr != clus_v5x5.end(); idItr++){
570 std::vector<EBDetId>::iterator itdet0 =
find(usedXtals.begin(),usedXtals.end(),det);
573 if(itdet0 != usedXtals.end())
continue;
581 RecHitsInWindow5x5.push_back(
EBRecHits[nn]);
588 if(e5x5 <= 0)
continue;
590 eClus.push_back(simple_energy);
591 etClus.push_back(et_s);
592 etaClus.push_back(clus_pos.eta());
593 thetaClus.push_back(theta_s);
594 phiClus.push_back(clus_pos.phi());
595 s4s9Clus.push_back(s4s9_max);
596 s9s25Clus.push_back(e3x3/e5x5);
597 RecHitsCluster.push_back(RecHitsInWindow);
598 RecHitsCluster5x5.push_back(RecHitsInWindow5x5);
615 for(Int_t
i=0 ;
i<nClus ;
i++){
616 for(Int_t
j=
i+1 ;
j<nClus ;
j++){
621 float p0x = etClus[
i] *
cos(phiClus[
i]);
622 float p1x = etClus[
j] *
cos(phiClus[
j]);
623 float p0y = etClus[
i] *
sin(phiClus[i]);
624 float p1y = etClus[
j] *
sin(phiClus[j]);
625 float p0z = eClus[
i] *
cos(thetaClus[i]);
626 float p1z = eClus[
j] *
cos(thetaClus[j]);
629 float pt_pair =
sqrt( (p0x+p1x)*(p0x+p1x) + (p0y+p1y)*(p0y+p1y));
633 float m_inv =
sqrt ( (eClus[i] + eClus[j])*(eClus[i] + eClus[j]) - (p0x+p1x)*(p0x+p1x) - (p0y+p1y)*(p0y+p1y) - (p0z+p1z)*(p0z+p1z) );
640 TVector3 pairVect = TVector3((p0x+p1x), (p0y+p1y), (p0z+p1z));
641 for(Int_t
k=0 ;
k<nClus ;
k++){
646 if(
k==i ||
k==j)
continue;
647 TVector3 ClusVect = TVector3(etClus[
k] *
cos(phiClus[
k]), etClus[k] *
sin(phiClus[k]) , eClus[k] *
cos(thetaClus[k]));
649 float dretacl = fabs(etaClus[k] - pairVect.Eta());
650 float drcl = ClusVect.DeltaR(pairVect);
654 Iso = Iso + etClus[
k];
655 IsoClus.push_back(k);
697 if (rhEBeta.
isValid() && (rhEBeta->size() > 0)){
702 for(itb=rhEBeta->begin(); itb!=rhEBeta->end(); ++itb){
705 double energy = itb->energy();
720 etot+= itb->energy();
737 vector<float> etClus;
738 vector<float> etaClus;
739 vector<float> thetaClus;
740 vector<float> phiClus;
741 vector<EBDetId> max_hit;
743 vector< vector<EcalRecHit> > RecHitsCluster;
744 vector< vector<EcalRecHit> > RecHitsCluster5x5;
745 vector<float> s4s9Clus;
746 vector<float> s9s25Clus;
754 for (std::vector<EcalRecHit>::iterator itseed=seeds.begin(); itseed!=seeds.end(); itseed++) {
755 EBDetId seed_id = itseed->id();
756 std::vector<EBDetId>::const_iterator usedIds;
758 bool seedAlreadyUsed=
false;
759 for(usedIds=usedXtals.begin(); usedIds!=usedXtals.end(); usedIds++){
760 if(*usedIds==seed_id){
761 seedAlreadyUsed=
true;
766 if(seedAlreadyUsed)
continue;
768 std::vector<std::pair<DetId,float> > clus_used;
771 vector<EcalRecHit> RecHitsInWindow;
772 vector<EcalRecHit> RecHitsInWindow5x5;
774 double simple_energy = 0;
776 for (std::vector<DetId>::iterator det=clus_v.begin(); det!=clus_v.end(); det++) {
779 bool HitAlreadyUsed=
false;
780 for(usedIds=usedXtals.begin(); usedIds!=usedXtals.end(); usedIds++){
786 if(HitAlreadyUsed)
continue;
793 usedXtals.push_back(*det);
794 RecHitsInWindow.push_back(
EBRecHits[nn]);
795 clus_used.push_back(std::make_pair(*det,1));
796 simple_energy = simple_energy +
EBRecHits[nn].energy();
801 if(simple_energy <= 0)
continue;
808 float theta_s = 2. * atan(
exp(-clus_pos.eta()));
814 float et_s = simple_energy *
sin(theta_s);
821 for(
int i=0;
i<4;
i++)s4s9_tmp[
i]= 0;
823 int seed_ieta = seed_id.
ieta();
824 int seed_iphi = seed_id.
iphi();
831 for(
unsigned int j=0;
j<RecHitsInWindow.size();
j++){
834 int ieta = det.
ieta();
835 int iphi = det.
iphi();
839 float en = RecHitsInWindow[
j].energy();
844 if(dx <= 0 && dy <=0) s4s9_tmp[0] += en;
845 if(dx >= 0 && dy <=0) s4s9_tmp[1] += en;
846 if(dx <= 0 && dy >=0) s4s9_tmp[2] += en;
847 if(dx >= 0 && dy >=0) s4s9_tmp[3] += en;
855 if(e3x3 <= 0)
continue;
857 float s4s9_max = *max_element( s4s9_tmp,s4s9_tmp+4)/e3x3;
861 std::vector<DetId> clus_v5x5 = topology_p->
getWindow(seed_id,5,5);
862 for( std::vector<DetId>::const_iterator idItr = clus_v5x5.begin(); idItr != clus_v5x5.end(); idItr++){
866 std::vector<EBDetId>::iterator itdet0 =
find(usedXtals.begin(),usedXtals.end(),det);
869 if(itdet0 != usedXtals.end())
continue;
877 RecHitsInWindow5x5.push_back(
EBRecHits[nn]);
884 if(e5x5 <= 0)
continue;
886 eClus.push_back(simple_energy);
887 etClus.push_back(et_s);
888 etaClus.push_back(clus_pos.eta());
889 thetaClus.push_back(theta_s);
890 phiClus.push_back(clus_pos.phi());
891 s4s9Clus.push_back(s4s9_max);
892 s9s25Clus.push_back(e3x3/e5x5);
893 RecHitsCluster.push_back(RecHitsInWindow);
894 RecHitsCluster5x5.push_back(RecHitsInWindow5x5);
911 for(Int_t
i=0 ;
i<nClus ;
i++){
912 for(Int_t
j=
i+1 ;
j<nClus ;
j++){
917 float p0x = etClus[
i] *
cos(phiClus[
i]);
918 float p1x = etClus[
j] *
cos(phiClus[
j]);
919 float p0y = etClus[
i] *
sin(phiClus[i]);
920 float p1y = etClus[
j] *
sin(phiClus[j]);
921 float p0z = eClus[
i] *
cos(thetaClus[i]);
922 float p1z = eClus[
j] *
cos(thetaClus[j]);
925 float pt_pair =
sqrt( (p0x+p1x)*(p0x+p1x) + (p0y+p1y)*(p0y+p1y));
929 float m_inv =
sqrt ( (eClus[i] + eClus[j])*(eClus[i] + eClus[j]) - (p0x+p1x)*(p0x+p1x) - (p0y+p1y)*(p0y+p1y) - (p0z+p1z)*(p0z+p1z) );
936 TVector3 pairVect = TVector3((p0x+p1x), (p0y+p1y), (p0z+p1z));
937 for(Int_t
k=0 ;
k<nClus ;
k++){
942 if(
k==i ||
k==j)
continue;
943 TVector3 ClusVect = TVector3(etClus[
k] *
cos(phiClus[
k]), etClus[k] *
sin(phiClus[k]) , eClus[k] *
cos(thetaClus[k]));
945 float dretacl = fabs(etaClus[k] - pairVect.Eta());
946 float drcl = ClusVect.DeltaR(pairVect);
950 Iso = Iso + etClus[
k];
951 IsoClus.push_back(k);
1002 if (rhEEpi0.
isValid() && (rhEEpi0->size() > 0)){
1012 std::vector<EcalRecHit> seedsEndCap;
1013 seedsEndCap.clear();
1015 vector<EEDetId> usedXtalsEndCap;
1016 usedXtalsEndCap.clear();
1021 for (ite=rhEEpi0->begin(); ite!=rhEEpi0->end(); ite++) {
1022 double energy = ite->energy();
1038 etot+= ite->energy();
1048 vector<float> eClusEndCap;
1049 vector<float> etClusEndCap;
1050 vector<float> etaClusEndCap;
1051 vector<float> thetaClusEndCap;
1052 vector<float> phiClusEndCap;
1053 vector< vector<EcalRecHit> > RecHitsClusterEndCap;
1054 vector< vector<EcalRecHit> > RecHitsCluster5x5EndCap;
1055 vector<float> s4s9ClusEndCap;
1056 vector<float> s9s25ClusEndCap;
1065 for (std::vector<EcalRecHit>::iterator itseed=seedsEndCap.begin(); itseed!=seedsEndCap.end(); itseed++) {
1066 EEDetId seed_id = itseed->id();
1067 std::vector<EEDetId>::const_iterator usedIds;
1069 bool seedAlreadyUsed=
false;
1070 for(usedIds=usedXtalsEndCap.begin(); usedIds!=usedXtalsEndCap.end(); usedIds++){
1071 if(*usedIds==seed_id){
1072 seedAlreadyUsed=
true;
1077 if(seedAlreadyUsed)
continue;
1079 std::vector<std::pair<DetId,float> > clus_used;
1082 vector<EcalRecHit> RecHitsInWindow;
1083 vector<EcalRecHit> RecHitsInWindow5x5;
1085 float simple_energy = 0;
1087 for (std::vector<DetId>::iterator det=clus_v.begin(); det!=clus_v.end(); det++) {
1090 bool HitAlreadyUsed=
false;
1091 for(usedIds=usedXtalsEndCap.begin(); usedIds!=usedXtalsEndCap.end(); usedIds++){
1093 HitAlreadyUsed=
true;
1098 if(HitAlreadyUsed)
continue;
1105 usedXtalsEndCap.push_back(*det);
1106 RecHitsInWindow.push_back(
EERecHits[nn]);
1107 clus_used.push_back(std::make_pair(*det,1));
1108 simple_energy = simple_energy +
EERecHits[nn].energy();
1113 if( simple_energy <= 0)
continue;
1118 float theta_s = 2. * atan(
exp(-clus_pos.eta()));
1119 float et_s = simple_energy *
sin(theta_s);
1128 for(
int i=0;
i<4;
i++) s4s9_tmp[
i]= 0;
1130 int ixSeed = seed_id.
ix();
1131 int iySeed = seed_id.
iy();
1135 for(
unsigned int j=0;
j<RecHitsInWindow.size();
j++){
1137 int dx = ixSeed - det_this.
ix();
1138 int dy = iySeed - det_this.
iy();
1140 float en = RecHitsInWindow[
j].energy();
1142 if(dx <= 0 && dy <=0) s4s9_tmp[0] += en;
1143 if(dx >= 0 && dy <=0) s4s9_tmp[1] += en;
1144 if(dx <= 0 && dy >=0) s4s9_tmp[2] += en;
1145 if(dx >= 0 && dy >=0) s4s9_tmp[3] += en;
1153 if(e3x3 <= 0)
continue;
1155 eClusEndCap.push_back(simple_energy);
1156 etClusEndCap.push_back(et_s);
1157 etaClusEndCap.push_back(clus_pos.eta());
1158 thetaClusEndCap.push_back(theta_s);
1159 phiClusEndCap.push_back(clus_pos.phi());
1160 s4s9ClusEndCap.push_back(*max_element( s4s9_tmp,s4s9_tmp+4)/e3x3);
1161 s9s25ClusEndCap.push_back(e3x3/e5x5);
1162 RecHitsClusterEndCap.push_back(RecHitsInWindow);
1163 RecHitsCluster5x5EndCap.push_back(RecHitsInWindow5x5);
1181 for(Int_t
i=0 ;
i<nClusEndCap ;
i++){
1182 for(Int_t
j=
i+1 ;
j<nClusEndCap ;
j++){
1186 float p0x = etClusEndCap[
i] *
cos(phiClusEndCap[
i]);
1187 float p1x = etClusEndCap[
j] *
cos(phiClusEndCap[
j]);
1188 float p0y = etClusEndCap[
i] *
sin(phiClusEndCap[i]);
1189 float p1y = etClusEndCap[
j] *
sin(phiClusEndCap[j]);
1190 float p0z = eClusEndCap[
i] *
cos(thetaClusEndCap[i]);
1191 float p1z = eClusEndCap[
j] *
cos(thetaClusEndCap[j]);
1194 float pt_pair =
sqrt( (p0x+p1x)*(p0x+p1x) + (p0y+p1y)*(p0y+p1y));
1196 float m_inv =
sqrt ( (eClusEndCap[i] + eClusEndCap[j])*(eClusEndCap[i] + eClusEndCap[j]) - (p0x+p1x)*(p0x+p1x) - (p0y+p1y)*(p0y+p1y) - (p0z+p1z)*(p0z+p1z) );
1203 vector<int> IsoClus;
1206 TVector3 pairVect = TVector3((p0x+p1x), (p0y+p1y), (p0z+p1z));
1207 for(Int_t
k=0 ;
k<nClusEndCap ;
k++){
1212 if(
k==i ||
k==j)
continue;
1215 TVector3 clusVect = TVector3(etClusEndCap[
k] *
cos(phiClusEndCap[
k]), etClusEndCap[k] *
sin(phiClusEndCap[k]) , eClusEndCap[k] *
cos(thetaClusEndCap[k]) ) ;
1216 float dretacl = fabs(etaClusEndCap[k] - pairVect.Eta());
1217 float drcl = clusVect.DeltaR(pairVect);
1220 Iso = Iso + etClusEndCap[
k];
1221 IsoClus.push_back(k);
1257 if (rhEEeta.
isValid() && (rhEEeta->size() > 0)){
1266 std::vector<EcalRecHit> seedsEndCap;
1267 seedsEndCap.clear();
1269 vector<EEDetId> usedXtalsEndCap;
1270 usedXtalsEndCap.clear();
1275 for (ite=rhEEeta->begin(); ite!=rhEEeta->end(); ite++) {
1276 double energy = ite->energy();
1292 etot+= ite->energy();
1302 vector<float> eClusEndCap;
1303 vector<float> etClusEndCap;
1304 vector<float> etaClusEndCap;
1305 vector<float> thetaClusEndCap;
1306 vector<float> phiClusEndCap;
1307 vector< vector<EcalRecHit> > RecHitsClusterEndCap;
1308 vector< vector<EcalRecHit> > RecHitsCluster5x5EndCap;
1309 vector<float> s4s9ClusEndCap;
1310 vector<float> s9s25ClusEndCap;
1319 for (std::vector<EcalRecHit>::iterator itseed=seedsEndCap.begin(); itseed!=seedsEndCap.end(); itseed++) {
1320 EEDetId seed_id = itseed->id();
1321 std::vector<EEDetId>::const_iterator usedIds;
1323 bool seedAlreadyUsed=
false;
1324 for(usedIds=usedXtalsEndCap.begin(); usedIds!=usedXtalsEndCap.end(); usedIds++){
1325 if(*usedIds==seed_id){
1326 seedAlreadyUsed=
true;
1331 if(seedAlreadyUsed)
continue;
1333 std::vector<std::pair<DetId,float> > clus_used;
1336 vector<EcalRecHit> RecHitsInWindow;
1337 vector<EcalRecHit> RecHitsInWindow5x5;
1339 float simple_energy = 0;
1341 for (std::vector<DetId>::iterator det=clus_v.begin(); det!=clus_v.end(); det++) {
1344 bool HitAlreadyUsed=
false;
1345 for(usedIds=usedXtalsEndCap.begin(); usedIds!=usedXtalsEndCap.end(); usedIds++){
1347 HitAlreadyUsed=
true;
1352 if(HitAlreadyUsed)
continue;
1359 usedXtalsEndCap.push_back(*det);
1360 RecHitsInWindow.push_back(
EERecHits[nn]);
1361 clus_used.push_back(std::make_pair(*det,1));
1362 simple_energy = simple_energy +
EERecHits[nn].energy();
1367 if( simple_energy <= 0)
continue;
1372 float theta_s = 2. * atan(
exp(-clus_pos.eta()));
1373 float et_s = simple_energy *
sin(theta_s);
1382 for(
int i=0;
i<4;
i++) s4s9_tmp[
i]= 0;
1384 int ixSeed = seed_id.
ix();
1385 int iySeed = seed_id.
iy();
1389 for(
unsigned int j=0;
j<RecHitsInWindow.size();
j++){
1391 int dx = ixSeed - det_this.
ix();
1392 int dy = iySeed - det_this.
iy();
1394 float en = RecHitsInWindow[
j].energy();
1396 if(dx <= 0 && dy <=0) s4s9_tmp[0] += en;
1397 if(dx >= 0 && dy <=0) s4s9_tmp[1] += en;
1398 if(dx <= 0 && dy >=0) s4s9_tmp[2] += en;
1399 if(dx >= 0 && dy >=0) s4s9_tmp[3] += en;
1407 if(e3x3 <= 0)
continue;
1409 eClusEndCap.push_back(simple_energy);
1410 etClusEndCap.push_back(et_s);
1411 etaClusEndCap.push_back(clus_pos.eta());
1412 thetaClusEndCap.push_back(theta_s);
1413 phiClusEndCap.push_back(clus_pos.phi());
1414 s4s9ClusEndCap.push_back(*max_element( s4s9_tmp,s4s9_tmp+4)/e3x3);
1415 s9s25ClusEndCap.push_back(e3x3/e5x5);
1416 RecHitsClusterEndCap.push_back(RecHitsInWindow);
1417 RecHitsCluster5x5EndCap.push_back(RecHitsInWindow5x5);
1432 for(Int_t
i=0 ;
i<nClusEndCap ;
i++){
1433 for(Int_t
j=
i+1 ;
j<nClusEndCap ;
j++){
1437 float p0x = etClusEndCap[
i] *
cos(phiClusEndCap[
i]);
1438 float p1x = etClusEndCap[
j] *
cos(phiClusEndCap[
j]);
1439 float p0y = etClusEndCap[
i] *
sin(phiClusEndCap[i]);
1440 float p1y = etClusEndCap[
j] *
sin(phiClusEndCap[j]);
1441 float p0z = eClusEndCap[
i] *
cos(thetaClusEndCap[i]);
1442 float p1z = eClusEndCap[
j] *
cos(thetaClusEndCap[j]);
1445 float pt_pair =
sqrt( (p0x+p1x)*(p0x+p1x) + (p0y+p1y)*(p0y+p1y));
1447 float m_inv =
sqrt ( (eClusEndCap[i] + eClusEndCap[j])*(eClusEndCap[i] + eClusEndCap[j]) - (p0x+p1x)*(p0x+p1x) - (p0y+p1y)*(p0y+p1y) - (p0z+p1z)*(p0z+p1z) );
1454 vector<int> IsoClus;
1457 TVector3 pairVect = TVector3((p0x+p1x), (p0y+p1y), (p0z+p1z));
1458 for(Int_t
k=0 ;
k<nClusEndCap ;
k++){
1463 if(
k==i ||
k==j)
continue;
1466 TVector3 clusVect = TVector3(etClusEndCap[
k] *
cos(phiClusEndCap[
k]), etClusEndCap[k] *
sin(phiClusEndCap[k]) , eClusEndCap[k] *
cos(thetaClusEndCap[k]) ) ;
1467 float dretacl = fabs(etaClusEndCap[k] - pairVect.Eta());
1468 float drcl = clusVect.DeltaR(pairVect);
1471 Iso = Iso + etClusEndCap[
k];
1472 IsoClus.push_back(k);
1539 if(neta > 0) neta -= 1;
1540 if(nphi > 359) nphi=nphi-360;
1546 mdiff=(neta1-neta2);
1558 if(nphi1>nphi2) mdiff=-mdiff;
edm::EDGetTokenT< EcalRecHitCollection > productMonitoredEEeta_
double seleEtaBeltDREndCap_
T getParameter(std::string const &) const
MonitorElement * hiYDistrEEeta_
Distribution of rechits in iy EE (eta)
T getUntrackedParameter(std::string const &, T const &) const
MonitorElement * hMinvPi0EE_
Pi0 invariant mass in EE.
double seleMinvMinPi0EndCap_
MonitorElement * hiXDistrEEeta_
Distribution of rechits in ix EE (eta)
MonitorElement * hiPhiDistrEBpi0_
Distribution of rechits in iPhi (pi0)
MonitorElement * hPt1Pi0EB_
Pt of the 1st most energetic Pi0 photon in EB.
MonitorElement * hPt2Pi0EE_
Pt of the 2nd most energetic Pi0 photon in EE.
MonitorElement * hiYDistrEEpi0_
Distribution of rechits in iy EE (pi0)
MonitorElement * book1D(const char *name, const char *title, int nchX, double lowX, double highX)
Book 1D histogram.
double ptMinForIsolationEtaEndCap_
MonitorElement * hPtPi0EE_
Pi0 Pt in EE.
MonitorElement * hMinvEtaEB_
Eta invariant mass in EB.
bool getByToken(EDGetToken token, Handle< PROD > &result) const
std::vector< EEDetId > detIdEERecHits
void endRun(const edm::Run &r, const edm::EventSetup &c)
PositionCalc posCalculator_
double seleMinvMinEtaEndCap_
MonitorElement * hS4S92EtaEB_
S4S9 of the 2nd most energetic eta photon.
std::vector< EBDetId > detIdEBRecHits
edm::EDGetTokenT< EcalRecHitCollection > productMonitoredEBeta_
double selePtGammaEndCap_
for pi0->gg endcap
MonitorElement * hMeanRecHitEnergyEBeta_
Distribution of Mean energy per rechit EB (eta)
Sin< T >::type sin(const T &t)
double seleMinvMaxPi0EndCap_
std::string folderName_
DQM folder name.
std::vector< EcalRecHit >::const_iterator const_iterator
MonitorElement * hMeanRecHitEnergyEEpi0_
Distribution of Mean energy per rechit EE (pi0)
MonitorElement * hNRecHitsEBpi0_
Distribution of number of RecHits EB (pi0)
MonitorElement * hPt2EtaEE_
Pt of the 2nd most energetic Eta photon in EE.
MonitorElement * hRechitEnergyEBpi0_
Energy Distribution of rechits EB (pi0)
std::string fileName_
Output file name if required.
MonitorElement * hRechitEnergyEEpi0_
Energy Distribution of rechits EE (pi0)
double seleMinvMaxEtaEndCap_
std::vector< EcalRecHit > EERecHits
MonitorElement * hPtEtaEB_
Eta Pt in EB.
MonitorElement * hIsoEtaEB_
Eta Iso EB.
bool saveToFile_
Write to file.
double seleS4S9GammaEtaEndCap_
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
MonitorElement * hIsoPi0EB_
Pi0 Iso EB.
MonitorElement * hS4S91Pi0EE_
S4S9 of the 1st most energetic pi0 photon EE.
MonitorElement * hS4S91EtaEB_
S4S9 of the 1st most energetic eta photon.
double ptMinForIsolationEta_
int iphi() const
get the crystal iphi
MonitorElement * hMinvPi0EB_
Pi0 invariant mass in EB.
MonitorElement * hS4S92Pi0EE_
S4S9 of the 2nd most energetic pi0 photon EE.
void convxtalid(int &, int &)
double ptMinForIsolationEndCap_
MonitorElement * hiEtaDistrEBpi0_
Distribution of rechits in iEta (pi0)
double selePi0BeltDetaEndCap_
void beginRun(const edm::Run &r, const edm::EventSetup &c)
MonitorElement * hS4S91Pi0EB_
S4S9 of the 1st most energetic pi0 photon.
MonitorElement * hiXDistrEEpi0_
Distribution of rechits in ix EE (pi0)
MonitorElement * hiEtaDistrEBeta_
Distribution of rechits in iEta (eta)
edm::EDGetTokenT< EcalRecHitCollection > productMonitoredEBpi0_
object to monitor
bool isMonEBpi0_
which subdet will be monitored
double selePtGammaEtaEndCap_
for eta->gg endcap
Cos< T >::type cos(const T &t)
int diff_nphi_s(int, int)
double ptMinForIsolation_
int diff_neta_s(int, int)
double seleXtalMinEnergy_
Abs< T >::type abs(const T &t)
DQMSourcePi0(const edm::ParameterSet &)
void save(const std::string &filename, const std::string &path="", const std::string &pattern="", const std::string &rewrite="", const uint32_t run=0, SaveReferenceTag ref=SaveWithReference, int minStatus=dqm::qstatus::STATUS_OK, const std::string &fileupdate="RECREATE")
int ieta() const
get the crystal ieta
MonitorElement * hPtEtaEE_
Eta Pt in EE.
double seleXtalMinEnergyEndCap_
double seleS9S25GammaEtaEndCap_
MonitorElement * hEventEnergyEEpi0_
Distribution of total event energy EE (pi0)
void endLuminosityBlock(const edm::LuminosityBlock &lumiSeg, const edm::EventSetup &c)
MonitorElement * hNRecHitsEEeta_
Distribution of number of RecHits EE (eta)
double selePtGammaEta_
for eta->gg barrel
edm::EDGetTokenT< EcalRecHitCollection > productMonitoredEEpi0_
object to monitor
void analyze(const edm::Event &e, const edm::EventSetup &c)
virtual std::vector< DetId > getWindow(const DetId &id, const int &northSouthSize, const int &eastWestSize) const
double seleEtaBeltDetaEndCap_
XYZPointD XYZPoint
point in space with cartesian internal representation
MonitorElement * hiPhiDistrEBeta_
Distribution of rechits in iPhi (eta)
MonitorElement * hRechitEnergyEBeta_
Energy Distribution of rechits EB (eta)
T const * product() const
MonitorElement * hPt1EtaEE_
Pt of the 1st most energetic Eta photon in EE.
MonitorElement * hEventEnergyEBpi0_
Distribution of total event energy EB (pi0)
void beginLuminosityBlock(const edm::LuminosityBlock &lumiSeg, const edm::EventSetup &context)
MonitorElement * hPt1EtaEB_
Pt of the 1st most energetic Eta photon in EB.
MonitorElement * hEventEnergyEBeta_
Distribution of total event energy EB (eta)
MonitorElement * hIsoEtaEE_
Eta Iso EE.
MonitorElement * hS4S92Pi0EB_
S4S9 of the 2nd most energetic pi0 photon.
MonitorElement * hPt2EtaEB_
Pt of the 2nd most energetic Eta photon in EB.
std::vector< EcalRecHit > EBRecHits
MonitorElement * hMinvEtaEE_
Eta invariant mass in EE.
MonitorElement * hPtPi0EB_
Pi0 Pt in EB.
math::XYZPoint Calculate_Location(const HitsAndFractions &iDetIds, const edm::SortedCollection< HitType > *iRecHits, const CaloSubdetectorGeometry *iSubGeom, const CaloSubdetectorGeometry *iESGeom=0)
MonitorElement * hS4S92EtaEE_
S4S9 of the 2nd most energetic eta photon EE.
unsigned int prescaleFactor_
Monitor every prescaleFactor_ events.
MonitorElement * hMeanRecHitEnergyEEeta_
Distribution of Mean energy per rechit EE (eta)
MonitorElement * hIsoPi0EE_
Pi0 Iso EE.
double seleS4S9GammaEndCap_
MonitorElement * hNRecHitsEBeta_
Distribution of number of RecHits EB (eta)
MonitorElement * hPt1Pi0EE_
Pt of the 1st most energetic Pi0 photon in EE.
MonitorElement * hS4S91EtaEE_
S4S9 of the 1st most energetic eta photon EE.
MonitorElement * hRechitEnergyEEeta_
Energy Distribution of rechits EE (eta)
MonitorElement * hMeanRecHitEnergyEBpi0_
Distribution of Mean energy per rechit EB (pi0)
MonitorElement * hEventEnergyEEeta_
Distribution of total event energy EE (eta)
void setAxisTitle(const std::string &title, int axis=1)
set x-, y- or z-axis title (axis=1, 2, 3 respectively)
MonitorElement * hNRecHitsEEpi0_
Distribution of number of RecHits EE (pi0)
double selePi0BeltDREndCap_
void setCurrentFolder(const std::string &fullpath)
double seleS9S25GammaEta_
MonitorElement * hPt2Pi0EB_
Pt of the 2nd most energetic Pi0 photon in EB.
double clusSeedThrEndCap_