91 hOWires =
new TH2I(
"hOWires",
"Wire Digi Occupancy",36,0.5,36.5,20,0.5,20.5);
92 hOStrips =
new TH2I(
"hOStrips",
"Strip Digi Occupancy",36,0.5,36.5,20,0.5,20.5);
93 hORecHits =
new TH2I(
"hORecHits",
"RecHit Occupancy",36,0.5,36.5,20,0.5,20.5);
94 hOSegments =
new TH2I(
"hOSegments",
"Segments Occupancy",36,0.5,36.5,20,0.5,20.5);
97 hSSTE =
new TH1F(
"hSSTE",
"hSSTE",40,0,40);
98 hRHSTE =
new TH1F(
"hRHSTE",
"hRHSTE",40,0,40);
99 hSEff =
new TH1F(
"hSEff",
"Segment Efficiency",20,0.5,20.5);
100 hRHEff =
new TH1F(
"hRHEff",
"recHit Efficiency",20,0.5,20.5);
102 const int nChambers = 36;
103 const int nTypes = 18;
105 float nCh_max =
float(nChambers) + 0.5;
107 float nT_max =
float(nTypes) + 0.5;
109 hSSTE2 =
new TH2F(
"hSSTE2",
"hSSTE2",nChambers,nCH_min,nCh_max, nTypes, nT_min, nT_max);
110 hRHSTE2 =
new TH2F(
"hRHSTE2",
"hRHSTE2",nChambers,nCH_min,nCh_max, nTypes, nT_min, nT_max);
111 hStripSTE2 =
new TH2F(
"hStripSTE2",
"hStripSTE2",nChambers,nCH_min,nCh_max, nTypes, nT_min, nT_max);
112 hWireSTE2 =
new TH2F(
"hWireSTE2",
"hWireSTE2",nChambers,nCH_min,nCh_max, nTypes, nT_min, nT_max);
115 hEffDenominator =
new TH2F(
"hEffDenominator",
"hEffDenominator",nChambers,nCH_min,nCh_max, nTypes, nT_min, nT_max);
116 hSEff2 =
new TH2F(
"hSEff2",
"Segment Efficiency 2D",nChambers,nCH_min,nCh_max, nTypes, nT_min, nT_max);
117 hRHEff2 =
new TH2F(
"hRHEff2",
"recHit Efficiency 2D",nChambers,nCH_min,nCh_max, nTypes, nT_min, nT_max);
119 hStripEff2 =
new TH2F(
"hStripEff2",
"strip Efficiency 2D",nChambers,nCH_min,nCh_max, nTypes, nT_min, nT_max);
120 hWireEff2 =
new TH2F(
"hWireEff2",
"wire Efficiency 2D",nChambers,nCH_min,nCh_max, nTypes, nT_min, nT_max);
122 hSensitiveAreaEvt =
new TH2F(
"hSensitiveAreaEvt",
"events in sensitive area",nChambers,nCH_min,nCh_max, nTypes, nT_min, nT_max);
125 if (writeTreeToFile)
histos->setupTrees();
136 histoEfficiency(hRHSTE,hRHEff);
137 histoEfficiency(hSSTE,hSEff);
138 hSEff2->Divide(hSSTE2,hEffDenominator,1.,1.,
"B");
139 hRHEff2->Divide(hRHSTE2,hEffDenominator,1.,1.,
"B");
140 hStripEff2->Divide(hStripSTE2,hEffDenominator,1.,1.,
"B");
141 hWireEff2->Divide(hWireSTE2,hEffDenominator,1.,1.,
"B");
143 histos->insertPlot(hRHSTE,
"hRHSTE",
"Efficiency");
144 histos->insertPlot(hSSTE,
"hSSTE",
"Efficiency");
145 histos->insertPlot(hSSTE2,
"hSSTE2",
"Efficiency");
146 histos->insertPlot(hEffDenominator,
"hEffDenominator",
"Efficiency");
147 histos->insertPlot(hRHSTE2,
"hRHSTE2",
"Efficiency");
148 histos->insertPlot(hStripSTE2,
"hStripSTE2",
"Efficiency");
149 histos->insertPlot(hWireSTE2,
"hWireSTE2",
"Efficiency");
152 histos->insertPlot(hSEff,
"hSEff",
"Efficiency");
153 histos->insertPlot(hRHEff,
"hRHEff",
"Efficiency");
155 histos->insertPlot(hSEff2,
"hSEff2",
"Efficiency");
156 histos->insertPlot(hRHEff2,
"hRHEff2",
"Efficiency");
157 histos->insertPlot(hStripEff2,
"hStripff2",
"Efficiency");
158 histos->insertPlot(hWireEff2,
"hWireff2",
"Efficiency");
160 histos->insertPlot(hSensitiveAreaEvt,
"",
"Efficiency");
163 histos->insertPlot(hOWires,
"hOWires",
"Digis");
164 histos->insertPlot(hOStrips,
"hOStrips",
"Digis");
165 histos->insertPlot(hORecHits,
"hORecHits",
"recHits");
166 histos->insertPlot(hOSegments,
"hOSegments",
"Segments");
194 event.getByToken( sd_token, strips );
195 event.getByToken( wd_token, wires );
196 event.getByToken( cd_token, compars );
197 event.getByToken( al_token, alcts );
198 event.getByToken( cl_token, clcts );
199 event.getByToken( co_token, correlatedlcts );
208 event.getByToken( rh_token, recHits );
218 if ( isSimulation )
event.getByToken( sh_token, simHits );
222 event.getByToken( se_token, cscSegments );
226 if (makeTriggerPlots || useTriggerFilter || (useDigis && makeTimeMonitorPlots)){
227 event.getByToken( l1_token, pCollection );
231 event.getByToken( tr_token, hlt );
236 if (makeStandalonePlots || useQualityFilter) {
237 event.getByToken( sa_token, saMuons );
247 if (nEventsAnalyzed == 1 && makeCalibPlots) doCalibrations(eventSetup);
252 if (makeTriggerPlots || useTriggerFilter) CSCL1A = doTrigger(pCollection);
253 if (!useTriggerFilter) CSCL1A =
true;
257 if (makeStandalonePlots || useQualityFilter) cleanEvent = filterEvents(recHits,cscSegments,saMuons);
258 if (!useQualityFilter) cleanEvent =
true;
263 if (makeOccupancyPlots && CSCL1A) doOccupancies(strips,wires,recHits,cscSegments);
266 if (makeHLTPlots) doHLT(hlt);
269 if (cleanEvent && CSCL1A){
272 if (makeStripPlots && useDigis) doStripDigis(strips);
275 if (makeWirePlots && useDigis) doWireDigis(wires);
279 if (makeRecHitPlots) doRecHits(recHits,cscGeom);
282 if (isSimulation && makeSimHitPlots)
doSimHits(recHits,simHits);
285 if (makeSegmentPlots) doSegments(cscSegments,cscGeom);
288 if (makeResolutionPlots) doResolution(cscSegments,cscGeom);
292 if (makePedNoisePlots && useDigis) doPedestalNoise(strips);
295 if (makeEfficiencyPlots) doEfficiencies(wires,strips, recHits, cscSegments,cscGeom);
298 if (makeGasGainPlots && useDigis) doGasGain(*wires,*strips,*recHits);
302 if (makeAFEBTimingPlots && useDigis) doAFEBTiming(*wires);
305 if (makeCompTimingPlots && useDigis) doCompTiming(*compars);
308 if (makeADCTimingPlots) doADCTiming(*recHits);
313 if (makeRHNoisePlots && useDigis) doNoiseHits(recHits,cscSegments,cscGeom,strips);
316 if (makeStandalonePlots) doStandalone(saMuons);
319 if (makeTimeMonitorPlots) doTimeMonitoring(recHits,cscSegments, alcts, clcts, correlatedlcts, pCollection,cscGeom, eventSetup, event);
338 if (recHits->size() < 4 || recHits->size() > 100)
return false;
339 if (cscSegments->size() < 1 || cscSegments->size() > 15)
return false;
415 bool wireo[2][4][4][36];
416 bool stripo[2][4][4][36];
417 bool rechito[2][4][4][36];
418 bool segmento[2][4][4][36];
420 bool hasWires =
false;
421 bool hasStrips =
false;
422 bool hasRecHits =
false;
423 bool hasSegments =
false;
425 for (
int e = 0;
e < 2;
e++){
426 for (
int s = 0;
s < 4;
s++){
427 for (
int r = 0;
r < 4;
r++){
428 for (
int c = 0;
c < 36;
c++){
429 wireo[
e][
s][
r][
c] =
false;
430 stripo[
e][
s][
r][
c] =
false;
431 rechito[
e][
s][
r][
c] =
false;
432 segmento[
e][
s][
r][
c] =
false;
442 int kEndcap =
id.
endcap();
443 int kRing =
id.ring();
444 int kStation =
id.station();
445 int kChamber =
id.chamber();
446 std::vector<CSCWireDigi>::const_iterator wireIt = (*wi).second.first;
447 std::vector<CSCWireDigi>::const_iterator lastWire = (*wi).second.second;
448 for( ; wireIt != lastWire; ++wireIt){
449 if (!wireo[kEndcap-1][kStation-1][kRing-1][kChamber-1]){
450 wireo[kEndcap-1][kStation-1][kRing-1][kChamber-1] =
true;
451 hOWires->Fill(kChamber,typeIndex(
id));
452 histos->fill1DHist(chamberSerial(
id),
"hOWireSerial",
"Wire Occupancy by Chamber Serial",601,-0.5,600.5,
"Digis");
461 int kEndcap =
id.
endcap();
462 int kRing =
id.ring();
463 int kStation =
id.station();
464 int kChamber =
id.chamber();
465 std::vector<CSCStripDigi>::const_iterator stripIt = (*si).second.first;
466 std::vector<CSCStripDigi>::const_iterator lastStrip = (*si).second.second;
467 for( ; stripIt != lastStrip; ++stripIt) {
468 std::vector<int> myADCVals = stripIt->getADCCounts();
469 bool thisStripFired =
false;
470 float thisPedestal = 0.5*(
float)(myADCVals[0]+myADCVals[1]);
473 for (
unsigned int iCount = 0; iCount < myADCVals.size(); iCount++) {
474 diff = (
float)myADCVals[iCount]-thisPedestal;
475 if (diff > threshold) { thisStripFired =
true; }
477 if (thisStripFired) {
478 if (!stripo[kEndcap-1][kStation-1][kRing-1][kChamber-1]){
479 stripo[kEndcap-1][kStation-1][kRing-1][kChamber-1] =
true;
480 hOStrips->Fill(kChamber,typeIndex(
id));
481 histos->fill1DHist(chamberSerial(
id),
"hOStripSerial",
"Strip Occupancy by Chamber Serial",601,-0.5,600.5,
"Digis");
491 for (recIt = recHits->begin(); recIt != recHits->end(); recIt++) {
493 int kEndcap = idrec.
endcap();
494 int kRing = idrec.
ring();
495 int kStation = idrec.
station();
496 int kChamber = idrec.
chamber();
497 if (!rechito[kEndcap-1][kStation-1][kRing-1][kChamber-1]){
498 rechito[kEndcap-1][kStation-1][kRing-1][kChamber-1] =
true;
499 histos->fill1DHist(chamberSerial(idrec),
"hORecHitsSerial",
"RecHit Occupancy by Chamber Serial",601,-0.5,600.5,
"recHits");
500 hORecHits->Fill(kChamber,typeIndex(idrec));
508 int kEndcap =
id.
endcap();
509 int kRing =
id.ring();
510 int kStation =
id.station();
511 int kChamber =
id.chamber();
512 if (!segmento[kEndcap-1][kStation-1][kRing-1][kChamber-1]){
513 segmento[kEndcap-1][kStation-1][kRing-1][kChamber-1] =
true;
514 histos->fill1DHist(chamberSerial(
id),
"hOSegmentsSerial",
"Segment Occupancy by Chamber Serial",601,-0.5,600.5,
"Segments");
515 hOSegments->Fill(kChamber,typeIndex(
id));
521 histos->fill1DHist(1,
"hCSCOccupancy",
"overall CSC occupancy",15,-0.5,14.5,
"GeneralHists");
522 if (hasWires)
histos->fill1DHist(3,
"hCSCOccupancy",
"overall CSC occupancy",15,-0.5,14.5,
"GeneralHists");
523 if (hasStrips)
histos->fill1DHist(5,
"hCSCOccupancy",
"overall CSC occupancy",15,-0.5,14.5,
"GeneralHists");
524 if (hasWires && hasStrips)
histos->fill1DHist(7,
"hCSCOccupancy",
"overall CSC occupancy",15,-0.5,14.5,
"GeneralHists");
525 if (hasRecHits)
histos->fill1DHist(9,
"hCSCOccupancy",
"overall CSC occupancy",15,-0.5,14.5,
"GeneralHists");
526 if (hasSegments)
histos->fill1DHist(11,
"hCSCOccupancy",
"overall CSC occupancy",15,-0.5,14.5,
"GeneralHists");
527 if (!cleanEvent)
histos->fill1DHist(13,
"hCSCOccupancy",
"overall CSC occupancy",15,-0.5,14.5,
"GeneralHists");
539 std::vector<L1MuGMTReadoutRecord> L1Mrec = pCollection->
getRecords();
540 std::vector<L1MuGMTReadoutRecord>::const_iterator igmtrr;
542 bool csc_l1a =
false;
544 bool rpcf_l1a =
false;
545 bool rpcb_l1a =
false;
546 bool beamHaloTrigger =
false;
548 int myBXNumber = -1000;
550 for(igmtrr=L1Mrec.begin(); igmtrr!=L1Mrec.end(); igmtrr++) {
551 std::vector<L1MuRegionalCand>::const_iterator iter1;
552 std::vector<L1MuRegionalCand> rmc;
556 rmc = igmtrr->getCSCCands();
557 for(iter1=rmc.begin(); iter1!=rmc.end(); iter1++) {
558 if ( !(*iter1).empty() ) {
560 int kQuality = (*iter1).quality();
561 if (kQuality == 1) beamHaloTrigger =
true;
564 if (igmtrr->getBxInEvent() == 0 && icsc>0) csc_l1a =
true;
565 if (igmtrr->getBxInEvent() == 0 ) { myBXNumber = igmtrr->getBxNr(); }
569 rmc = igmtrr->getDTBXCands();
570 for(iter1=rmc.begin(); iter1!=rmc.end(); iter1++) {
571 if ( !(*iter1).empty() ) {
575 if(igmtrr->getBxInEvent()==0 && idt>0) dt_l1a =
true;
579 rmc = igmtrr->getBrlRPCCands();
580 for(iter1=rmc.begin(); iter1!=rmc.end(); iter1++) {
581 if ( !(*iter1).empty() ) {
585 if(igmtrr->getBxInEvent()==0 && irpcb>0) rpcb_l1a =
true;
589 rmc = igmtrr->getFwdRPCCands();
590 for(iter1=rmc.begin(); iter1!=rmc.end(); iter1++) {
591 if ( !(*iter1).empty() ) {
595 if(igmtrr->getBxInEvent()==0 && irpcf>0) rpcf_l1a =
true;
600 if (csc_l1a)
histos->fill1DHist(myBXNumber,
"vtBXNumber",
"BX Number",4001,-0.5,4000.5,
"Trigger");
601 if (csc_l1a)
histos->fill1DHist(1,
"vtBits",
"trigger bits",11,-0.5,10.5,
"Trigger");
602 if (dt_l1a)
histos->fill1DHist(2,
"vtBits",
"trigger bits",11,-0.5,10.5,
"Trigger");
603 if (rpcb_l1a)
histos->fill1DHist(3,
"vtBits",
"trigger bits",11,-0.5,10.5,
"Trigger");
604 if (rpcf_l1a)
histos->fill1DHist(4,
"vtBits",
"trigger bits",11,-0.5,10.5,
"Trigger");
605 if (beamHaloTrigger)
histos->fill1DHist(8,
"vtBits",
"trigger bits",11,-0.5,10.5,
"Trigger");
608 histos->fill1DHist(1,
"vtCSCY",
"trigger bits",11,-0.5,10.5,
"Trigger");
609 if (dt_l1a)
histos->fill1DHist(2,
"vtCSCY",
"trigger bits",11,-0.5,10.5,
"Trigger");
610 if (rpcb_l1a)
histos->fill1DHist(3,
"vtCSCY",
"trigger bits",11,-0.5,10.5,
"Trigger");
611 if (rpcf_l1a)
histos->fill1DHist(4,
"vtCSCY",
"trigger bits",11,-0.5,10.5,
"Trigger");
612 if ( dt_l1a || rpcb_l1a || rpcf_l1a)
histos->fill1DHist(5,
"vtCSCY",
"trigger bits",11,-0.5,10.5,
"Trigger");
613 if (!(dt_l1a || rpcb_l1a || rpcf_l1a))
histos->fill1DHist(6,
"vtCSCY",
"trigger bits",11,-0.5,10.5,
"Trigger");
615 histos->fill1DHist(1,
"vtCSCN",
"trigger bits",11,-0.5,10.5,
"Trigger");
616 if (dt_l1a)
histos->fill1DHist(2,
"vtCSCN",
"trigger bits",11,-0.5,10.5,
"Trigger");
617 if (rpcb_l1a)
histos->fill1DHist(3,
"vtCSCN",
"trigger bits",11,-0.5,10.5,
"Trigger");
618 if (rpcf_l1a)
histos->fill1DHist(4,
"vtCSCN",
"trigger bits",11,-0.5,10.5,
"Trigger");
619 if ( dt_l1a || rpcb_l1a || rpcf_l1a)
histos->fill1DHist(5,
"vtCSCN",
"trigger bits",11,-0.5,10.5,
"Trigger");
620 if (!(dt_l1a || rpcb_l1a || rpcf_l1a))
histos->fill1DHist(6,
"vtCSCN",
"trigger bits",11,-0.5,10.5,
"Trigger");
625 if (csc_l1a)
return true;
640 int hltSize = hlt->
size();
641 for (
int i = 0;
i < hltSize; ++
i){
642 if (hlt->
accept(
i))
histos->fill1DHist(
i,
"hltBits",
"HLT Trigger Bits",hltSize+1,-0.5,(
float)hltSize+0.5,
"Trigger");
658 if (nEventsAnalyzed == 1){
660 LogDebug(
"Calibrations") <<
"Loading Calibrations...";
679 LogDebug(
"Calibrations") <<
"Calibrations Loaded!";
681 for (
int i = 0;
i < 400;
i++){
683 histos->fillCalibHist(pGains->
gains[
i].gain_slope,
"hCalibGainsS",
"Gains Slope",400,0,400,bin,
"Calib");
684 histos->fillCalibHist(pCrosstalk->
crosstalk[
i].xtalk_slope_left,
"hCalibXtalkSL",
"Xtalk Slope Left",400,0,400,bin,
"Calib");
685 histos->fillCalibHist(pCrosstalk->
crosstalk[
i].xtalk_slope_right,
"hCalibXtalkSR",
"Xtalk Slope Right",400,0,400,bin,
"Calib");
686 histos->fillCalibHist(pCrosstalk->
crosstalk[
i].xtalk_intercept_left,
"hCalibXtalkIL",
"Xtalk Intercept Left",400,0,400,bin,
"Calib");
687 histos->fillCalibHist(pCrosstalk->
crosstalk[
i].xtalk_intercept_right,
"hCalibXtalkIR",
"Xtalk Intercept Right",400,0,400,bin,
"Calib");
688 histos->fillCalibHist(pPedestals->
pedestals[
i].ped,
"hCalibPedsP",
"Peds",400,0,400,bin,
"Calib");
689 histos->fillCalibHist(pPedestals->
pedestals[
i].rms,
"hCalibPedsR",
"Peds RMS",400,0,400,bin,
"Calib");
690 histos->fillCalibHist(pNoiseMatrix->
matrix[
i].elem33,
"hCalibNoise33",
"Noise Matrix 33",400,0,400,bin,
"Calib");
691 histos->fillCalibHist(pNoiseMatrix->
matrix[
i].elem34,
"hCalibNoise34",
"Noise Matrix 34",400,0,400,bin,
"Calib");
692 histos->fillCalibHist(pNoiseMatrix->
matrix[
i].elem35,
"hCalibNoise35",
"Noise Matrix 35",400,0,400,bin,
"Calib");
693 histos->fillCalibHist(pNoiseMatrix->
matrix[
i].elem44,
"hCalibNoise44",
"Noise Matrix 44",400,0,400,bin,
"Calib");
694 histos->fillCalibHist(pNoiseMatrix->
matrix[
i].elem45,
"hCalibNoise45",
"Noise Matrix 45",400,0,400,bin,
"Calib");
695 histos->fillCalibHist(pNoiseMatrix->
matrix[
i].elem46,
"hCalibNoise46",
"Noise Matrix 46",400,0,400,bin,
"Calib");
696 histos->fillCalibHist(pNoiseMatrix->
matrix[
i].elem55,
"hCalibNoise55",
"Noise Matrix 55",400,0,400,bin,
"Calib");
697 histos->fillCalibHist(pNoiseMatrix->
matrix[
i].elem56,
"hCalibNoise56",
"Noise Matrix 56",400,0,400,bin,
"Calib");
698 histos->fillCalibHist(pNoiseMatrix->
matrix[
i].elem57,
"hCalibNoise57",
"Noise Matrix 57",400,0,400,bin,
"Calib");
699 histos->fillCalibHist(pNoiseMatrix->
matrix[
i].elem66,
"hCalibNoise66",
"Noise Matrix 66",400,0,400,bin,
"Calib");
700 histos->fillCalibHist(pNoiseMatrix->
matrix[
i].elem67,
"hCalibNoise67",
"Noise Matrix 67",400,0,400,bin,
"Calib");
701 histos->fillCalibHist(pNoiseMatrix->
matrix[
i].elem77,
"hCalibNoise77",
"Noise Matrix 77",400,0,400,bin,
"Calib");
720 int nWireGroupsTotal = 0;
723 std::vector<CSCWireDigi>::const_iterator wireIter = (*dWDiter).second.first;
724 std::vector<CSCWireDigi>::const_iterator lWire = (*dWDiter).second.second;
725 for( ; wireIter != lWire; ++wireIter) {
726 int myWire = wireIter->getWireGroup();
727 int myTBin = wireIter->getTimeBin();
729 histos->fill1DHistByType(myWire,
"hWireWire",
"Wiregroup Numbers Fired",
id,113,-0.5,112.5,
"Digis");
730 histos->fill1DHistByType(myTBin,
"hWireTBin",
"Wire TimeBin Fired",
id,17,-0.5,16.5,
"Digis");
731 histos->fillProfile(chamberSerial(
id),myTBin,
"hWireTBinProfile",
"Wire TimeBin Fired",601,-0.5,600.5,-0.5,16.5,
"Digis");
732 if (detailedAnalysis){
733 histos->fill1DHistByLayer(myWire,
"hWireWire",
"Wiregroup Numbers Fired",
id,113,-0.5,112.5,
"WireNumberByLayer");
734 histos->fill1DHistByLayer(myTBin,
"hWireTBin",
"Wire TimeBin Fired",
id,17,-0.5,16.5,
"WireTimeByLayer");
740 if (nWireGroupsTotal == 0) nWireGroupsTotal = -1;
742 histos->fill1DHist(nWireGroupsTotal,
"hWirenGroupsTotal",
"Wires Fired Per Event",151,-0.5,150.5,
"Digis");
754 int nStripsFired = 0;
757 std::vector<CSCStripDigi>::const_iterator stripIter = (*dSDiter).second.first;
758 std::vector<CSCStripDigi>::const_iterator lStrip = (*dSDiter).second.second;
759 for( ; stripIter != lStrip; ++stripIter) {
760 int myStrip = stripIter->getStrip();
761 std::vector<int> myADCVals = stripIter->getADCCounts();
762 bool thisStripFired =
false;
763 float thisPedestal = 0.5*(
float)(myADCVals[0]+myADCVals[1]);
766 for (
unsigned int iCount = 0; iCount < myADCVals.size(); iCount++) {
767 diff = (
float)myADCVals[iCount]-thisPedestal;
768 if (diff > threshold) { thisStripFired =
true; }
770 if (thisStripFired) {
773 histos->fill1DHistByType(myStrip,
"hStripStrip",
"Strip Number",
id,81,-0.5,80.5,
"Digis");
774 if (detailedAnalysis){
775 histos->fill1DHistByLayer(myStrip,
"hStripStrip",
"Strip Number",
id,81,-0.5,80.5,
"StripNumberByLayer");
781 if (nStripsFired == 0) nStripsFired = -1;
783 histos->fill1DHist(nStripsFired,
"hStripNFired",
"Fired Strips per Event",251,-0.5,250.5,
"Digis");
797 std::vector<CSCStripDigi>::const_iterator pedIt = (*dPNiter).second.first;
798 std::vector<CSCStripDigi>::const_iterator lStrip = (*dPNiter).second.second;
799 for( ; pedIt != lStrip; ++pedIt) {
800 int myStrip = pedIt->getStrip();
801 std::vector<int> myADCVals = pedIt->getADCCounts();
802 float TotalADC = getSignal(*strips,
id, myStrip);
803 bool thisStripFired =
false;
804 float thisPedestal = 0.5*(
float)(myADCVals[0]+myADCVals[1]);
805 float thisSignal = (1./6)*(myADCVals[2]+myADCVals[3]+myADCVals[4]+myADCVals[5]+myADCVals[6]+myADCVals[7]);
807 if(
id.
station() == 1 &&
id.ring() == 4)
809 if(myStrip <= 16) myStrip += 64;
811 if (TotalADC > threshold) { thisStripFired =
true;}
812 if (!thisStripFired){
813 float ADC = thisSignal - thisPedestal;
814 histos->fill1DHist(ADC,
"hStripPed",
"Pedestal Noise Distribution",50,-25.,25.,
"PedestalNoise");
815 histos->fill1DHistByType(ADC,
"hStripPedME",
"Pedestal Noise Distribution",
id,50,-25.,25.,
"PedestalNoise");
816 histos->fillProfile(chamberSerial(
id),ADC,
"hStripPedMEProfile",
"Wire TimeBin Fired",601,-0.5,600.5,-25,25,
"PedestalNoise");
817 if (detailedAnalysis){
818 histos->fill1DHistByLayer(ADC,
"hStripPedME",
"Pedestal Noise Distribution",
id,50,-25.,25.,
"PedestalNoiseByLayer");
836 int nRecHits = recHits->size();
845 for (dRHIter = recHits->begin(); dRHIter != recHits->end(); dRHIter++) {
850 int kEndcap = idrec.
endcap();
851 int kRing = idrec.
ring();
852 int kStation = idrec.
station();
853 int kChamber = idrec.
chamber();
857 LocalPoint rhitlocal = (*dRHIter).localPosition();
858 float xreco = rhitlocal.
x();
859 float yreco = rhitlocal.
y();
860 LocalError rerrlocal = (*dRHIter).localPositionError();
862 float xxerr = rerrlocal.
xx();
863 float yyerr = rerrlocal.
yy();
864 float xyerr = rerrlocal.
xy();
866 float stpos = (*dRHIter).positionWithinStrip();
867 float sterr = (*dRHIter).errorWithinStrip();
872 int adcsize=dRHIter->nStrips()*dRHIter->nTimeBins();
873 for (
unsigned int i=0;
i< dRHIter->nStrips();
i++) {
874 for (
unsigned int j=0; j< dRHIter->nTimeBins()-1; j++) {
875 rHSumQ+=dRHIter->adcs(
i,j);
876 if (
i!=1) sumsides+=dRHIter->adcs(
i,j);
880 float rHratioQ = sumsides/rHSumQ;
881 if (adcsize != 12) rHratioQ = -99;
885 rHtime = (*dRHIter).tpeak()/50.;
892 float grecx = rhitglobal.
x();
893 float grecy = rhitglobal.
y();
896 if (writeTreeToFile && rhTreeCount < 1500000){
897 histos->fillRechitTree(xreco, yreco, grecx, grecy, kEndcap, kStation, kRing, kChamber, kLayer);
903 histos->fill2DHistByStation(grecx,grecy,
"hRHGlobal",
"recHit Global Position",idrec,100,-800.,800.,100,-800.,800.,
"recHits");
904 if (kStation == 1 && (kRing == 1 || kRing == 4))
histos->fill1DHistByType(rHSumQ,
"hRHSumQ",
"Sum 3x3 recHit Charge",idrec,125,0,4000,
"recHits");
905 else histos->fill1DHistByType(rHSumQ,
"hRHSumQ",
"Sum 3x3 recHit Charge",idrec,125,0,2000,
"recHits");
906 histos->fill1DHistByType(rHratioQ,
"hRHRatioQ",
"Charge Ratio (Ql+Qr)/Qt",idrec,120,-0.1,1.1,
"recHits");
907 histos->fill1DHistByType(rHtime,
"hRHTiming",
"recHit Timing",idrec,200,-10,10,
"recHits");
908 histos->fill1DHistByType(
sqrt(xxerr),
"hRHxerr",
"RecHit Error on Local X",idrec,100,-0.1,2,
"recHits");
909 histos->fill1DHistByType(
sqrt(yyerr),
"hRHyerr",
"RecHit Error on Local Y",idrec,100,-0.1,2,
"recHits");
910 histos->fill1DHistByType(xyerr,
"hRHxyerr",
"Corr. RecHit XY Error",idrec,100,-1,2,
"recHits");
911 if (adcsize == 12)
histos->fill1DHistByType(stpos,
"hRHstpos",
"Reconstructed Position on Strip",idrec,120,-0.6,0.6,
"recHits");
912 histos->fill1DHistByType(sterr,
"hRHsterr",
"Estimated Error on Strip Measurement",idrec,120,-0.05,0.25,
"recHits");
913 histos->fillProfile(chamberSerial(idrec),rHSumQ,
"hRHSumQProfile",
"Sum 3x3 recHit Charge",601,-0.5,600.5,0,4000,
"recHits");
914 histos->fillProfile(chamberSerial(idrec),rHtime,
"hRHTimingProfile",
"recHit Timing",601,-0.5,600.5,-11,11,
"recHits");
915 if (detailedAnalysis){
916 if (kStation == 1 && (kRing == 1 || kRing == 4))
histos->fill1DHistByLayer(rHSumQ,
"hRHSumQ",
"Sum 3x3 recHit Charge",idrec,125,0,4000,
"RHQByLayer");
917 else histos->fill1DHistByLayer(rHSumQ,
"hRHSumQ",
"Sum 3x3 recHit Charge",idrec,125,0,2000,
"RHQByLayer");
918 histos->fill1DHistByLayer(rHratioQ,
"hRHRatioQ",
"Charge Ratio (Ql+Qr)/Qt",idrec,120,-0.1,1.1,
"RHQByLayer");
919 histos->fill1DHistByLayer(rHtime,
"hRHTiming",
"recHit Timing",idrec,200,-10,10,
"RHTimingByLayer");
920 histos->fill2DHistByLayer(xreco,yreco,
"hRHLocalXY",
"recHit Local Position",idrec,50,-100.,100.,75,-150.,150.,
"RHLocalXYByLayer");
921 histos->fill1DHistByLayer(
sqrt(xxerr),
"hRHxerr",
"RecHit Error on Local X",idrec,100,-0.1,2,
"RHErrorsByLayer");
922 histos->fill1DHistByLayer(
sqrt(yyerr),
"hRHyerr",
"RecHit Error on Local Y",idrec,100,-0.1,2,
"RHErrorsByLayer");
923 histos->fill1DHistByType(stpos,
"hRHstpos",
"Reconstructed Position on Strip",idrec,120,-0.6,0.6,
"RHStripPosByLayer");
924 histos->fill1DHistByType(sterr,
"hRHsterr",
"Estimated Error on Strip Measurement",idrec,120,-0.05,0.25,
"RHStripPosByLayer");
929 if (nRecHits == 0) nRecHits = -1;
931 histos->fill1DHist(nRecHits,
"hRHnrechits",
"recHits per Event (all chambers)",151,-0.5,150.5,
"recHits");
944 for (dSHrecIter = recHits->begin(); dSHrecIter != recHits->end(); dSHrecIter++) {
947 LocalPoint rhitlocal = (*dSHrecIter).localPosition();
948 float xreco = rhitlocal.
x();
949 float yreco = rhitlocal.
y();
950 float xError =
sqrt((*dSHrecIter).localPositionError().xx());
951 float yError =
sqrt((*dSHrecIter).localPositionError().yy());
952 float simHitXres = -99;
953 float simHitYres = -99;
959 PSimHitContainer::const_iterator dSHsimIter;
960 for (dSHsimIter = simHits->begin(); dSHsimIter != simHits->end(); dSHsimIter++){
965 if (sId == idrec &&
abs((*dSHsimIter).particleType()) == 13){
967 LocalPoint sHitlocal = (*dSHsimIter).localPosition();
970 if ((sHitlocal.
x() - xreco) < mindiffX && (sHitlocal.
y() - yreco) < mindiffY){
971 simHitXres = (sHitlocal.
x() - xreco);
972 simHitYres = (sHitlocal.
y() - yreco);
973 mindiffX = (sHitlocal.
x() - xreco);
974 xPull = simHitXres/xError;
975 yPull = simHitYres/yError;
980 histos->fill1DHistByType(simHitXres,
"hSimXResid",
"SimHitX - Reconstructed X",idrec,100,-1.0,1.0,
"Resolution");
981 histos->fill1DHistByType(simHitYres,
"hSimYResid",
"SimHitY - Reconstructed Y",idrec,100,-5.0,5.0,
"Resolution");
982 histos->fill1DHistByType(xPull,
"hSimXPull",
"Local X Pulls",idrec,100,-5.0,5.0,
"Resolution");
983 histos->fill1DHistByType(yPull,
"hSimYPull",
"Local Y Pulls",idrec,100,-5.0,5.0,
"Resolution");
998 int nSegments = cscSegments->size();
1008 int kEndcap =
id.
endcap();
1009 int kRing =
id.ring();
1010 int kStation =
id.station();
1011 int kChamber =
id.chamber();
1014 float chisq = (*dSiter).chi2();
1015 int nhits = (*dSiter).nRecHits();
1016 int nDOF = 2*nhits-4;
1018 LocalPoint localPos = (*dSiter).localPosition();
1019 float segX = localPos.
x();
1020 float segY = localPos.
y();
1027 float globTheta = 0.;
1032 globX = globalPosition.
x();
1033 globY = globalPosition.
y();
1035 globTheta = globalDirection.
theta();
1036 globPhi = globalDirection.
phi();
1041 if (writeTreeToFile && segTreeCount < 1500000){
1042 histos->fillSegmentTree(segX, segY, globX, globY, kEndcap, kStation, kRing, kChamber);
1047 histos->fill2DHistByStation(globX,globY,
"hSGlobal",
"Segment Global Positions;global x (cm)",
id,100,-800.,800.,100,-800.,800.,
"Segments");
1048 histos->fill1DHistByType(nhits,
"hSnHits",
"N hits on Segments",
id,8,-0.5,7.5,
"Segments");
1049 histos->fill1DHistByType(theta,
"hSTheta",
"local theta segments",
id,128,-3.2,3.2,
"Segments");
1050 histos->fill1DHistByType((chisq/nDOF),
"hSChiSq",
"segments chi-squared/ndof",
id,110,-0.05,10.5,
"Segments");
1051 histos->fill1DHistByType(chisqProb,
"hSChiSqProb",
"segments chi-squared probability",
id,110,-0.05,1.05,
"Segments");
1052 histos->fill1DHist(globTheta,
"hSGlobalTheta",
"segment global theta",128,0,3.2,
"Segments");
1053 histos->fill1DHist(globPhi,
"hSGlobalPhi",
"segment global phi",128,-3.2,3.2,
"Segments");
1054 histos->fillProfile(chamberSerial(
id),nhits,
"hSnHitsProfile",
"N hits on Segments",601,-0.5,600.5,-0.5,7.5,
"Segments");
1055 if (detailedAnalysis){
1056 histos->fill1DHistByChamber(nhits,
"hSnHits",
"N hits on Segments",
id,8,-0.5,7.5,
"HitsOnSegmentByChamber");
1057 histos->fill1DHistByChamber(theta,
"hSTheta",
"local theta segments",
id,128,-3.2,3.2,
"DetailedSegments");
1058 histos->fill1DHistByChamber((chisq/nDOF),
"hSChiSq",
"segments chi-squared/ndof",
id,110,-0.05,10.5,
"SegChi2ByChamber");
1059 histos->fill1DHistByChamber(chisqProb,
"hSChiSqProb",
"segments chi-squared probability",
id,110,-0.05,1.05,
"SegChi2ByChamber");
1064 if (nSegments == 0) nSegments = -1;
1066 histos->fill1DHist(nSegments,
"hSnSegments",
"Segments per Event",31,-0.5,30.5,
"Segments");
1085 std::vector<CSCRecHit2D> theseRecHits = (*dSiter).specificRecHits();
1086 int nRH = (*dSiter).nRecHits();
1088 CLHEP::HepMatrix sp(6,1);
1089 CLHEP::HepMatrix se(6,1);
1090 for ( std::vector<CSCRecHit2D>::const_iterator iRH = theseRecHits.begin(); iRH != theseRecHits.end(); iRH++) {
1093 int kRing = idRH.
ring();
1094 int kStation = idRH.
station();
1098 int centerid = iRH->nStrips()/2;
1099 int centerStrip = iRH->channels(centerid);
1103 float stpos = (*iRH).positionWithinStrip();
1104 se(kLayer,1) = (*iRH).errorWithinStrip();
1106 if (kStation == 1 && (kRing == 1 || kRing == 4)) sp(kLayer,1) = stpos + centerStrip;
1108 if (kLayer == 1 || kLayer == 3 || kLayer == 5) sp(kLayer,1) = stpos + centerStrip;
1109 if (kLayer == 2 || kLayer == 4 || kLayer == 6) sp(kLayer,1) = stpos - 0.5 + centerStrip;
1115 float residual = -99;
1119 float expected = fitX(sp,se);
1120 residual = expected - sp(3,1);
1121 pull = residual/se(3,1);
1125 histos->fill1DHistByType(residual,
"hSResid",
"Fitted Position on Strip - Reconstructed for Layer 3",
id,100,-0.5,0.5,
"Resolution");
1126 histos->fill1DHistByType(pull,
"hSStripPosPull",
"Strip Measurement Pulls",
id,100,-5.0,5.0,
"Resolution");
1127 histos->fillProfile(chamberSerial(
id),residual,
"hSResidProfile",
"Fitted Position on Strip - Reconstructed for Layer 3",601,-0.5,600.5,-0.5,0.5,
"Resolution");
1128 if (detailedAnalysis){
1129 histos->fill1DHistByChamber(residual,
"hSResid",
"Fitted Position on Strip - Reconstructed for Layer 3",
id,100,-0.5,0.5,
"DetailedResolution");
1130 histos->fill1DHistByChamber(pull,
"hSStripPosPull",
"Strip Measurement Pulls",
id,100,-5.0,5.0,
"Resolution");
1146 int nSAMuons = saMuons->size();
1147 histos->fill1DHist(nSAMuons,
"trNSAMuons",
"N Standalone Muons per Event",6,-0.5,5.5,
"STAMuons");
1149 for(reco::TrackCollection::const_iterator
muon = saMuons->begin();
muon != saMuons->end(); ++
muon ) {
1150 float preco =
muon->p();
1151 float ptreco =
muon->pt();
1152 int n =
muon->recHitsSize();
1154 float normchi2 =
muon->normalizedChi2();
1166 std::vector<CSCDetId> staChambers;
1168 const DetId detId( (*hit)->geographicalId() );
1173 if (rpcId.region() == 1){ nRPCHitsp++; np++;}
1174 if (rpcId.region() == -1){ nRPCHitsm++; nm++;}
1181 staChambers.push_back(detId.rawId());
1183 if (cscId.endcap() == 1){ nCSCHitsp++; np++;}
1184 if (cscId.endcap() == 2){ nCSCHitsm++; nm++;}
1194 double crudeLength = deltaPnt.
mag();
1195 double deltaPhi = innerPnt.phi() - outerPnt.phi();
1196 double innerGlobalPolarAngle = innerKin.theta();
1197 double outerGlobalPolarAngle = outerKin.theta();
1201 histos->fill1DHist(n,
"trN",
"N hits on a STA Muon Track",51,-0.5,50.5,
"STAMuons");
1202 if (np != 0)
histos->fill1DHist(np,
"trNp",
"N hits on a STA Muon Track (plus endcap)",51,-0.5,50.5,
"STAMuons");
1203 if (nm != 0)
histos->fill1DHist(nm,
"trNm",
"N hits on a STA Muon Track (minus endcap)",51,-0.5,50.5,
"STAMuons");
1204 histos->fill1DHist(nDTHits,
"trNDT",
"N DT hits on a STA Muon Track",51,-0.5,50.5,
"STAMuons");
1205 histos->fill1DHist(nCSCHits,
"trNCSC",
"N CSC hits on a STA Muon Track",51,-0.5,50.5,
"STAMuons");
1206 if (nCSCHitsp != 0)
histos->fill1DHist(nCSCHitsp,
"trNCSCp",
"N CSC hits on a STA Muon Track (+ endcap)",51,-0.5,50.5,
"STAMuons");
1207 if (nCSCHitsm != 0)
histos->fill1DHist(nCSCHitsm,
"trNCSCm",
"N CSC hits on a STA Muon Track (- endcap)",51,-0.5,50.5,
"STAMuons");
1208 histos->fill1DHist(nRPCHits,
"trNRPC",
"N RPC hits on a STA Muon Track",51,-0.5,50.5,
"STAMuons");
1209 if (nRPCHitsp != 0)
histos->fill1DHist(nRPCHitsp,
"trNRPCp",
"N RPC hits on a STA Muon Track (+ endcap)",51,-0.5,50.5,
"STAMuons");
1210 if (nRPCHitsm != 0)
histos->fill1DHist(nRPCHitsm,
"trNRPCm",
"N RPC hits on a STA Muon Track (- endcap)",51,-0.5,50.5,
"STAMuons");
1211 histos->fill1DHist(preco,
"trP",
"STA Muon Momentum",100,0,300,
"STAMuons");
1212 histos->fill1DHist(ptreco,
"trPT",
"STA Muon pT",100,0,40,
"STAMuons");
1213 histos->fill1DHist(chi2,
"trChi2",
"STA Muon Chi2",100,0,200,
"STAMuons");
1214 histos->fill1DHist(normchi2,
"trNormChi2",
"STA Muon Normalized Chi2",100,0,10,
"STAMuons");
1215 histos->fill1DHist(crudeLength,
"trLength",
"Straight Line Length of STA Muon",120,0.,2400.,
"STAMuons");
1216 histos->fill1DHist(deltaPhi,
"trDeltaPhi",
"Delta-Phi Between Inner and Outer STA Muon Pos.",100,-0.5,0.5,
"STAMuons");
1217 histos->fill1DHist(innerGlobalPolarAngle,
"trInnerPolar",
"Polar Angle of Inner P Vector (STA muons)",128,0,3.2,
"STAMuons");
1218 histos->fill1DHist(outerGlobalPolarAngle,
"trOuterPolar",
"Polar Angle of Outer P Vector (STA muons)",128,0,3.2,
"STAMuons");
1219 histos->fill1DHist(innerPnt.phi(),
"trInnerPhi",
"Phi of Inner Position (STA muons)",256,-3.2,3.2,
"STAMuons");
1220 histos->fill1DHist(outerPnt.phi(),
"trOuterPhi",
"Phi of Outer Position (STA muons)",256,-3.2,3.2,
"STAMuons");
1232 int st =
id.station();
1234 int ch =
id.chamber();
1235 int ec =
id.endcap();
1237 if (st == 1 && ri == 1) kSerial = ch;
1238 if (st == 1 && ri == 2) kSerial = ch + 36;
1239 if (st == 1 && ri == 3) kSerial = ch + 72;
1240 if (st == 1 && ri == 4) kSerial = ch;
1241 if (st == 2 && ri == 1) kSerial = ch + 108;
1242 if (st == 2 && ri == 2) kSerial = ch + 126;
1243 if (st == 3 && ri == 1) kSerial = ch + 162;
1244 if (st == 3 && ri == 2) kSerial = ch + 180;
1245 if (st == 4 && ri == 1) kSerial = ch + 216;
1246 if (st == 4 && ri == 2) kSerial = ch + 234;
1247 if (ec == 2) kSerial = kSerial + 300;
1256 int st =
id.station();
1258 int ec =
id.endcap();
1260 if (st == 1 && ri == 1) kSerial = ri;
1261 if (st == 1 && ri == 2) kSerial = ri ;
1262 if (st == 1 && ri == 3) kSerial = ri ;
1263 if (st == 1 && ri == 4) kSerial = 1;
1264 if (st == 2 ) kSerial = ri + 3;
1265 if (st == 3 ) kSerial = ri + 5;
1266 if (st == 4 ) kSerial = ri + 7;
1267 if (ec == 2) kSerial = kSerial * (-1);
1285 for (
int i=1;
i<7;
i++){
1289 Sy = Sy + (
points(
i,1)/sigma2);
1290 Sx = Sx + ((
i)/sigma2);
1291 Sxx = Sxx + (
i*
i)/sigma2;
1292 Sxy = Sxy + (((
i)*
points(
i,1))/sigma2);
1296 float delta = S*Sxx - Sx*Sx;
1297 float intercept = (Sxx*Sy - Sx*Sxy)/delta;
1298 float slope = (S*Sxy - Sx*Sy)/delta;
1309 return (intercept + slope*3);
1323 bool allWires[2][4][4][36][6];
1324 bool allStrips[2][4][4][36][6];
1325 bool AllRecHits[2][4][4][36][6];
1326 bool AllSegments[2][4][4][36];
1329 for(
int iE = 0;iE<2;iE++){
1330 for(
int iS = 0;iS<4;iS++){
1331 for(
int iR = 0; iR<4;iR++){
1332 for(
int iC =0;iC<36;iC++){
1333 AllSegments[iE][iS][iR][iC] =
false;
1335 for(
int iL=0;iL<6;iL++){
1336 allWires[iE][iS][iR][iC][iL] =
false;
1337 allStrips[iE][iS][iR][iC][iL] =
false;
1338 AllRecHits[iE][iS][iR][iC][iL] =
false;
1349 std::vector<CSCWireDigi>::const_iterator wireIter = (*dWDiter).second.first;
1350 std::vector<CSCWireDigi>::const_iterator lWire = (*dWDiter).second.second;
1351 for( ; wireIter != lWire; ++wireIter) {
1360 std::vector<CSCStripDigi>::const_iterator stripIter = (*dSDiter).second.first;
1361 std::vector<CSCStripDigi>::const_iterator lStrip = (*dSDiter).second.second;
1362 for( ; stripIter != lStrip; ++stripIter) {
1363 std::vector<int> myADCVals = stripIter->getADCCounts();
1364 bool thisStripFired =
false;
1365 float thisPedestal = 0.5*(
float)(myADCVals[0]+myADCVals[1]);
1368 for (
unsigned int iCount = 0; iCount < myADCVals.size(); iCount++) {
1369 diff = (
float)myADCVals[iCount]-thisPedestal;
1370 if (diff > threshold) {
1371 thisStripFired =
true;
1391 std::vector <unsigned int> seg_ME2(2,0) ;
1392 std::vector <unsigned int> seg_ME3(2,0) ;
1393 std::vector < std::pair <CSCDetId, CSCSegment> > theSegments(4);
1405 unsigned int seg_tmp ;
1407 ++seg_ME2[idseg.
endcap() -1];
1408 seg_tmp = seg_ME2[idseg.
endcap() -1];
1411 ++seg_ME3[idseg.
endcap() -1];
1412 seg_tmp = seg_ME3[idseg.
endcap() -1];
1415 if(1== seg_tmp&& 6==(*segEffIt).nRecHits() && (*segEffIt).chi2()/(*segEffIt).degreesOfFreedom()<3.){
1416 std::pair <CSCDetId, CSCSegment> specSeg = make_pair( (
CSCDetId)(*segEffIt).cscDetId(),*segEffIt);
1417 theSegments[2*(idseg.
endcap()-1)+(idseg.
station() -2)] = specSeg;
1439 for(
int iE = 0;iE<2;iE++){
1440 for(
int iS = 0;iS<4;iS++){
1441 for(
int iR = 0; iR<4;iR++){
1442 for(
int iC =0;iC<36;iC++){
1443 int NumberOfLayers = 0;
1444 for(
int iL=0;iL<6;iL++){
1445 if(AllRecHits[iE][iS][iR][iC][iL]){
1450 if (iS==0) bin = iR+1+(iE*10);
1451 else bin = (iS+1)*2 + (iR+1) + (iE*10);
1452 if(NumberOfLayers>1){
1454 if(AllSegments[iE][iS][iR][iC]){
1456 hSSTE->AddBinContent(bin);
1459 hSSTE->AddBinContent(20+bin);
1462 if(AllSegments[iE][iS][iR][iC]){
1463 if(NumberOfLayers==6){
1465 hRHSTE->AddBinContent(bin);;
1468 hRHSTE->AddBinContent(20+bin);;
1476 std::vector < std::pair <CSCDetId, CSCSegment> * > theSeg;
1477 if(1==seg_ME2[0]) theSeg.push_back(&theSegments[0]);
1478 if(1==seg_ME3[0]) theSeg.push_back(&theSegments[1]);
1479 if(1==seg_ME2[1]) theSeg.push_back(&theSegments[2]);
1480 if(1==seg_ME3[1]) theSeg.push_back(&theSegments[3]);
1485 std::map <std::string, float> chamberTypes;
1486 chamberTypes[
"ME1/a"] = 0.5;
1487 chamberTypes[
"ME1/b"] = 1.5;
1488 chamberTypes[
"ME1/2"] = 2.5;
1489 chamberTypes[
"ME1/3"] = 3.5;
1490 chamberTypes[
"ME2/1"] = 4.5;
1491 chamberTypes[
"ME2/2"] = 5.5;
1492 chamberTypes[
"ME3/1"] = 6.5;
1493 chamberTypes[
"ME3/2"] = 7.5;
1494 chamberTypes[
"ME4/1"] = 8.5;
1496 if(!theSeg.empty()){
1497 std::map <int , GlobalPoint> extrapolatedPoint;
1498 std::map <int , GlobalPoint>::iterator it;
1501 for(
size_t nCh=0;nCh<ChamberContainer.size();nCh++){
1502 const CSCChamber *cscchamber = ChamberContainer[nCh];
1503 std::pair <CSCDetId, CSCSegment> * thisSegment =
nullptr;
1504 for(
size_t iSeg =0;iSeg<theSeg.size();++iSeg ){
1505 if(cscchamber->
id().
endcap() == theSeg[iSeg]->first.endcap()){
1507 if(2==theSeg[iSeg]->
first.station()){
1508 thisSegment = theSeg[iSeg];
1512 if(3==theSeg[iSeg]->
first.station()){
1513 thisSegment = theSeg[iSeg];
1525 it = extrapolatedPoint.find(
int(cscchamberCenter.
z()));
1526 if(it==extrapolatedPoint.end()){
1529 double paramaterLine = lineParametrization(segPos.
z(),cscchamberCenter.
z() , segDir.
z());
1530 double xExtrapolated = extrapolate1D(segPos.
x(),segDir.
x(), paramaterLine);
1531 double yExtrapolated = extrapolate1D(segPos.
y(),segDir.
y(), paramaterLine);
1532 GlobalPoint globP (xExtrapolated, yExtrapolated, cscchamberCenter.
z());
1533 extrapolatedPoint[
int(cscchamberCenter.
z())] = globP;
1536 LocalPoint extrapolatedPointLocal = cscchamber->
toLocal(extrapolatedPoint[
int(cscchamberCenter.
z())]);
1539 const std::array<const float, 4> & layerBounds = layerGeom->
parameters ();
1540 float shiftFromEdge = 15.;
1541 float shiftFromDeadZone = 10.;
1543 bool pass = withinSensitiveRegion(extrapolatedPointLocal, layerBounds,
1545 shiftFromEdge, shiftFromDeadZone);
1553 for(
int iL =0;iL<6;++iL){
1554 if(AllRecHits[cscchamber->
id().
endcap()-1]
1562 if(cscchamberCenter.
z()<0){
1563 verticalScale = - verticalScale;
1565 verticalScale +=9.5;
1566 hSensitiveAreaEvt->Fill(
float(cscchamber->
id().
chamber()),verticalScale);
1572 hEffDenominator->Fill(
float(cscchamber->
id().
chamber()),verticalScale);
1574 if(AllSegments[cscchamber->
id().
endcap()-1]
1577 hSSTE2->Fill(
float(cscchamber->
id().
chamber()),
float(verticalScale));
1580 for(
int iL =0;iL<6;++iL){
1584 if(AllRecHits[cscchamber->
id().
endcap()-1]
1587 hRHSTE2->Fill(
float(cscchamber->
id().
chamber()),
float(verticalScale),
weight);
1591 if(allWires[cscchamber->
id().
endcap()-1]
1595 hWireSTE2->Fill(
float(cscchamber->
id().
chamber()),
float(verticalScale),
weight);
1598 if(allStrips[cscchamber->
id().
endcap()-1]
1602 hStripSTE2->Fill(
float(cscchamber->
id().
chamber()),
float(verticalScale),
weight);
1618 float Efficiency = 0.;
1619 float EffError = 0.;
1620 if(fabs(Norm)>0.000000001){
1621 Efficiency = bin/Norm;
1623 EffError =
sqrt( (1.-Efficiency)*Efficiency/Norm );
1626 eff[0] = Efficiency;
1631 std::vector<float> eff(2);
1632 int Nbins = readHisto->GetSize()-2;
1633 std::vector<float>
bins(Nbins);
1634 std::vector<float> Efficiency(Nbins);
1635 std::vector<float> EffError(Nbins);
1638 for (
int i=0;
i<20;
i++){
1639 Num = readHisto->GetBinContent(
i+1);
1640 Den = readHisto->GetBinContent(
i+21);
1641 getEfficiency(Num, Den, eff);
1642 Efficiency[
i] = eff[0];
1643 EffError[
i] = eff[1];
1644 writeHisto->SetBinContent(
i+1, Efficiency[
i]);
1645 writeHisto->SetBinError(i+1, EffError[i]);
1653 float y_center = 0.;
1654 double yUp = layerBounds[3] + y_center;
1655 double yDown = - layerBounds[3] + y_center;
1656 double xBound1Shifted = layerBounds[0] - shiftFromEdge;
1657 double xBound2Shifted = layerBounds[1] - shiftFromEdge;
1658 double lineSlope = (yUp - yDown)/(xBound2Shifted-xBound1Shifted);
1659 double lineConst = yUp - lineSlope*xBound2Shifted;
1660 double yBorder = lineSlope*
abs(localPos.
x()) + lineConst;
1663 std::vector <float> deadZoneCenter(6);
1664 float cutZone = shiftFromDeadZone;
1666 if(station>1 && station<5){
1668 deadZoneCenter[0]= -162.48 ;
1669 deadZoneCenter[1] = -81.8744;
1670 deadZoneCenter[2] = -21.18165;
1671 deadZoneCenter[3] = 39.51105;
1672 deadZoneCenter[4] = 100.2939;
1673 deadZoneCenter[5] = 160.58;
1675 if(localPos.
y() >yBorder &&
1676 ((localPos.
y()> deadZoneCenter[0] + cutZone && localPos.
y()< deadZoneCenter[1] - cutZone) ||
1677 (localPos.
y()> deadZoneCenter[1] + cutZone && localPos.
y()< deadZoneCenter[2] - cutZone) ||
1678 (localPos.
y()> deadZoneCenter[2] + cutZone && localPos.
y()< deadZoneCenter[3] - cutZone) ||
1679 (localPos.
y()> deadZoneCenter[3] + cutZone && localPos.
y()< deadZoneCenter[4] - cutZone) ||
1680 (localPos.
y()> deadZoneCenter[4] + cutZone && localPos.
y()< deadZoneCenter[5] - cutZone))){
1686 deadZoneCenter[0]= -95.80 ;
1687 deadZoneCenter[1] = -27.47;
1688 deadZoneCenter[2] = 33.67;
1689 deadZoneCenter[3] = 90.85;
1691 else if(3==station){
1692 deadZoneCenter[0]= -89.305 ;
1693 deadZoneCenter[1] = -39.705;
1694 deadZoneCenter[2] = 20.195;
1695 deadZoneCenter[3] = 77.395;
1697 else if(4==station){
1698 deadZoneCenter[0]= -75.645;
1699 deadZoneCenter[1] = -26.055;
1700 deadZoneCenter[2] = 23.855;
1701 deadZoneCenter[3] = 70.575;
1703 if(localPos.
y() >yBorder &&
1704 ((localPos.
y()> deadZoneCenter[0] + cutZone && localPos.
y()< deadZoneCenter[1] - cutZone) ||
1705 (localPos.
y()> deadZoneCenter[1] + cutZone && localPos.
y()< deadZoneCenter[2] - cutZone) ||
1706 (localPos.
y()> deadZoneCenter[2] + cutZone && localPos.
y()< deadZoneCenter[3] - cutZone))){
1711 else if(1==station){
1713 deadZoneCenter[0]= -83.155 ;
1714 deadZoneCenter[1] = -22.7401;
1715 deadZoneCenter[2] = 27.86665;
1716 deadZoneCenter[3] = 81.005;
1717 if(localPos.
y() > yBorder &&
1718 ((localPos.
y()> deadZoneCenter[0] + cutZone && localPos.
y()< deadZoneCenter[1] - cutZone) ||
1719 (localPos.
y()> deadZoneCenter[1] + cutZone && localPos.
y()< deadZoneCenter[2] - cutZone) ||
1720 (localPos.
y()> deadZoneCenter[2] + cutZone && localPos.
y()< deadZoneCenter[3] - cutZone))){
1725 deadZoneCenter[0]= -86.285 ;
1726 deadZoneCenter[1] = -32.88305;
1727 deadZoneCenter[2] = 32.867423;
1728 deadZoneCenter[3] = 88.205;
1729 if(localPos.
y() > (yBorder) &&
1730 ((localPos.
y()> deadZoneCenter[0] + cutZone && localPos.
y()< deadZoneCenter[1] - cutZone) ||
1731 (localPos.
y()> deadZoneCenter[1] + cutZone && localPos.
y()< deadZoneCenter[2] - cutZone) ||
1732 (localPos.
y()> deadZoneCenter[2] + cutZone && localPos.
y()< deadZoneCenter[3] - cutZone))){
1737 deadZoneCenter[0]= -81.0;
1738 deadZoneCenter[1] = 81.0;
1739 if(localPos.
y() > (yBorder) &&
1740 (localPos.
y()> deadZoneCenter[0] + cutZone && localPos.
y()< deadZoneCenter[1] - cutZone )){
1771 for (sIt = stripdigis.begin(); sIt != stripdigis.end(); sIt++){
1776 std::vector<CSCStripDigi>::const_iterator digiItr = (*sIt).second.first;
1777 std::vector<CSCStripDigi>::const_iterator
last = (*sIt).second.second;
1778 for ( ; digiItr !=
last; ++digiItr ) {
1779 int thisStrip = digiItr->getStrip();
1780 if (thisStrip == (centerStrip)){
1781 std::vector<int> myADCVals = digiItr->getADCCounts();
1782 float thisPedestal = 0.5*(
float)(myADCVals[0]+myADCVals[1]);
1783 float thisSignal = (myADCVals[2]+myADCVals[3]+myADCVals[4]+myADCVals[5]+myADCVals[6]+myADCVals[7]);
1784 SigADC[0] = thisSignal - 6*thisPedestal;
1787 if (thisStrip == (centerStrip+1)){
1788 std::vector<int> myADCVals = digiItr->getADCCounts();
1789 float thisPedestal = 0.5*(
float)(myADCVals[0]+myADCVals[1]);
1790 float thisSignal = (myADCVals[2]+myADCVals[3]+myADCVals[4]+myADCVals[5]+myADCVals[6]+myADCVals[7]);
1791 SigADC[1] = thisSignal - 6*thisPedestal;
1793 if (thisStrip == (centerStrip+2)){
1794 std::vector<int> myADCVals = digiItr->getADCCounts();
1795 float thisPedestal = 0.5*(
float)(myADCVals[0]+myADCVals[1]);
1796 float thisSignal = (myADCVals[2]+myADCVals[3]+myADCVals[4]+myADCVals[5]+myADCVals[6]+myADCVals[7]);
1797 SigADC[2] = thisSignal - 6*thisPedestal;
1799 if (thisStrip == (centerStrip-1)){
1800 std::vector<int> myADCVals = digiItr->getADCCounts();
1801 float thisPedestal = 0.5*(
float)(myADCVals[0]+myADCVals[1]);
1802 float thisSignal = (myADCVals[2]+myADCVals[3]+myADCVals[4]+myADCVals[5]+myADCVals[6]+myADCVals[7]);
1803 SigADC[3] = thisSignal - 6*thisPedestal;
1805 if (thisStrip == (centerStrip-2)){
1806 std::vector<int> myADCVals = digiItr->getADCCounts();
1807 float thisPedestal = 0.5*(
float)(myADCVals[0]+myADCVals[1]);
1808 float thisSignal = (myADCVals[2]+myADCVals[3]+myADCVals[4]+myADCVals[5]+myADCVals[6]+myADCVals[7]);
1809 SigADC[4] = thisSignal - 6*thisPedestal;
1812 TotalADC = 0.2*(SigADC[0]+SigADC[1]+SigADC[2]+SigADC[3]+SigADC[4]);
1827 for (recIt = recHits->begin(); recIt != recHits->end(); recIt++) {
1832 AllRechits.insert(std::pair<CSCDetId , CSCRecHit2D>(idrec,*recIt));
1835 int centerid = recIt->nStrips()/2;
1836 int centerStrip = recIt->channels(centerid);
1838 float rHsignal = getthisSignal(*strips, idrec, centerStrip);
1839 histos->fill1DHist(rHsignal,
"hrHSignal",
"Signal in the 4th time bin for centre strip",1100,-99,1000,
"recHits");
1845 std::vector<CSCRecHit2D> theseRecHits = (*it).specificRecHits();
1846 for ( std::vector<CSCRecHit2D>::const_iterator iRH = theseRecHits.begin(); iRH != theseRecHits.end(); iRH++) {
1849 float xrec = lpRH.
x();
1850 float yrec = lpRH.
y();
1851 float zrec = lpRH.
z();
1852 bool RHalreadyinMap =
false;
1854 multimap<CSCDetId , CSCRecHit2D>::iterator segRHit;
1855 segRHit = SegRechits.find(idRH);
1856 if (segRHit != SegRechits.end()){
1857 for( ; segRHit != SegRechits.upper_bound(idRH); ++segRHit){
1859 LocalPoint lposRH = (segRHit->second).localPosition();
1860 float xpos = lposRH.
x();
1861 float ypos = lposRH.
y();
1862 float zpos = lposRH.
z();
1863 if ( xrec == xpos && yrec == ypos && zrec == zpos){
1864 RHalreadyinMap =
true;
1869 if(!RHalreadyinMap){ SegRechits.insert(std::pair<CSCDetId , CSCRecHit2D>(idRH,*iRH));}
1873 findNonAssociatedRecHits(cscGeom,strips);
1885 for(std::multimap<CSCDetId , CSCRecHit2D>::iterator allRHiter = AllRechits.begin();allRHiter != AllRechits.end(); ++allRHiter){
1887 LocalPoint lpRH = (allRHiter->second).localPosition();
1888 float xrec = lpRH.
x();
1889 float yrec = lpRH.
y();
1890 float zrec = lpRH.
z();
1892 bool foundmatch =
false;
1893 multimap<CSCDetId , CSCRecHit2D>::iterator segRHit;
1894 segRHit = SegRechits.find(idRH);
1895 if (segRHit != SegRechits.end()){
1896 for( ; segRHit != SegRechits.upper_bound(idRH); ++segRHit){
1898 LocalPoint lposRH = (segRHit->second).localPosition();
1899 float xpos = lposRH.
x();
1900 float ypos = lposRH.
y();
1901 float zpos = lposRH.
z();
1903 if ( xrec == xpos && yrec == ypos && zrec == zpos){
1907 float dclose =1000.;
1911 d =
sqrt(
pow(xrec-xpos,2)+
pow(yrec-ypos,2)+
pow(zrec-zpos,2));
1914 if( distRHmap.find((allRHiter->second)) == distRHmap.end() ) {
1915 distRHmap.insert(make_pair(allRHiter->second,dclose) );
1919 distRHmap.erase(allRHiter->second);
1920 distRHmap.insert(make_pair(allRHiter->second,dclose));
1926 if(!foundmatch){NonAssociatedRechits.insert(std::pair<CSCDetId , CSCRecHit2D>(idRH,allRHiter->second));}
1929 for(std::map<CSCRecHit2D,float,ltrh>::iterator iter = distRHmap.begin();iter != distRHmap.end(); ++iter){
1930 histos->fill1DHist(iter->second,
"hdistRH",
"Distance of Non Associated RecHit from closest Segment RecHit",500,0.,100.,
"NonAssociatedRechits");
1933 for(std::multimap<CSCDetId , CSCRecHit2D>::iterator iter = NonAssociatedRechits.begin();iter != NonAssociatedRechits.end(); ++iter){
1935 int kEndcap = idrec.
endcap();
1936 int cEndcap = idrec.
endcap();
1937 if (kEndcap == 2)cEndcap = -1;
1938 int kRing = idrec.
ring();
1939 int kStation = idrec.
station();
1940 int kChamber = idrec.
chamber();
1944 LocalPoint rhitlocal = (iter->second).localPosition();
1945 float xreco = rhitlocal.
x();
1946 float yreco = rhitlocal.
y();
1949 int centerid = (iter->second).nStrips()/2;
1950 int centerStrip = (iter->second).channels(centerid);
1955 int adcsize=(iter->second).nStrips()*(iter->second).nTimeBins();
1956 for (
unsigned int i=0;
i< (iter->second).nStrips();
i++) {
1957 for (
unsigned int j=0; j< (iter->second).nTimeBins()-1; j++) {
1958 rHSumQ+=(iter->second).adcs(
i,j);
1959 if (
i!=1) sumsides+=(iter->second).adcs(
i,j);
1963 float rHratioQ = sumsides/rHSumQ;
1964 if (adcsize != 12) rHratioQ = -99;
1967 float rHtime = (iter->second).tpeak()/50;
1970 int rHwidth = getWidth(*strips, idrec, centerStrip);
1978 float grecx = rhitglobal.
x();
1979 float grecy = rhitglobal.
y();
1984 int kCodeBroad = cEndcap * ( 4*(kStation-1) + kRing) ;
1985 int kCodeNarrow = cEndcap * ( 100*(kRing-1) + kChamber) ;
1988 histos->fill1DHist(kCodeBroad,
"hNARHCodeBroad",
"broad scope code for recHits",33,-16.5,16.5,
"NonAssociatedRechits");
1989 if (kStation == 1)
histos->fill1DHist(kCodeNarrow,
"hNARHCodeNarrow1",
"narrow scope recHit code station 1",801,-400.5,400.5,
"NonAssociatedRechits");
1990 if (kStation == 2)
histos->fill1DHist(kCodeNarrow,
"hNARHCodeNarrow2",
"narrow scope recHit code station 2",801,-400.5,400.5,
"NonAssociatedRechits");
1991 if (kStation == 3)
histos->fill1DHist(kCodeNarrow,
"hNARHCodeNarrow3",
"narrow scope recHit code station 3",801,-400.5,400.5,
"NonAssociatedRechits");
1992 if (kStation == 4)
histos->fill1DHist(kCodeNarrow,
"hNARHCodeNarrow4",
"narrow scope recHit code station 4",801,-400.5,400.5,
"NonAssociatedRechits");
1993 histos->fill1DHistByType(kLayer,
"hNARHLayer",
"RecHits per Layer",idrec,8,-0.5,7.5,
"NonAssociatedRechits");
1994 histos->fill1DHistByType(xreco,
"hNARHX",
"Local X of recHit",idrec,160,-80.,80.,
"NonAssociatedRechits");
1995 histos->fill1DHistByType(yreco,
"hNARHY",
"Local Y of recHit",idrec,60,-180.,180.,
"NonAssociatedRechits");
1996 if (kStation == 1 && (kRing == 1 || kRing == 4))
histos->fill1DHistByType(rHSumQ,
"hNARHSumQ",
"Sum 3x3 recHit Charge",idrec,250,0,4000,
"NonAssociatedRechits");
1997 else histos->fill1DHistByType(rHSumQ,
"hNARHSumQ",
"Sum 3x3 recHit Charge",idrec,250,0,2000,
"NonAssociatedRechits");
1998 histos->fill1DHistByType(rHratioQ,
"hNARHRatioQ",
"Ratio (Ql+Qr)/Qt)",idrec,120,-0.1,1.1,
"NonAssociatedRechits");
1999 histos->fill1DHistByType(rHtime,
"hNARHTiming",
"recHit Timing",idrec,200,-10,10,
"NonAssociatedRechits");
2000 histos->fill2DHistByStation(grecx,grecy,
"hNARHGlobal",
"recHit Global Position",idrec,400,-800.,800.,400,-800.,800.,
"NonAssociatedRechits");
2001 histos->fill1DHistByType(rHwidth,
"hNARHwidth",
"width for Non associated recHit",idrec,21,-0.5,20.5,
"NonAssociatedRechits");
2005 for(std::multimap<CSCDetId , CSCRecHit2D>::iterator iter = SegRechits.begin();iter != SegRechits.end(); ++iter){
2007 int kEndcap = idrec.
endcap();
2008 int cEndcap = idrec.
endcap();
2009 if (kEndcap == 2)cEndcap = -1;
2010 int kRing = idrec.
ring();
2011 int kStation = idrec.
station();
2012 int kChamber = idrec.
chamber();
2016 LocalPoint rhitlocal = (iter->second).localPosition();
2017 float xreco = rhitlocal.
x();
2018 float yreco = rhitlocal.
y();
2021 int centerid = (iter->second).nStrips()/2;
2022 int centerStrip = (iter->second).channels(centerid);
2028 int adcsize=(iter->second).nStrips()*(iter->second).nTimeBins();
2029 for (
unsigned int i=0;
i< (iter->second).nStrips();
i++) {
2030 for (
unsigned int j=0; j< (iter->second).nTimeBins()-1; j++) {
2031 rHSumQ+=(iter->second).adcs(
i,j);
2032 if (
i!=1) sumsides+=(iter->second).adcs(
i,j);
2036 float rHratioQ = sumsides/rHSumQ;
2037 if (adcsize != 12) rHratioQ = -99;
2040 float rHtime = (iter->second).tpeak()/50;
2043 int rHwidth = getWidth(*strips, idrec, centerStrip);
2051 float grecx = rhitglobal.
x();
2052 float grecy = rhitglobal.
y();
2055 int kCodeBroad = cEndcap * ( 4*(kStation-1) + kRing) ;
2056 int kCodeNarrow = cEndcap * ( 100*(kRing-1) + kChamber) ;
2059 histos->fill1DHist(kCodeBroad,
"hSegRHCodeBroad",
"broad scope code for recHits",33,-16.5,16.5,
"AssociatedRechits");
2060 if (kStation == 1)
histos->fill1DHist(kCodeNarrow,
"hSegRHCodeNarrow1",
"narrow scope recHit code station 1",801,-400.5,400.5,
"AssociatedRechits");
2061 if (kStation == 2)
histos->fill1DHist(kCodeNarrow,
"hSegRHCodeNarrow2",
"narrow scope recHit code station 2",801,-400.5,400.5,
"AssociatedRechits");
2062 if (kStation == 3)
histos->fill1DHist(kCodeNarrow,
"hSegRHCodeNarrow3",
"narrow scope recHit code station 3",801,-400.5,400.5,
"AssociatedRechits");
2063 if (kStation == 4)
histos->fill1DHist(kCodeNarrow,
"hSegRHCodeNarrow4",
"narrow scope recHit code station 4",801,-400.5,400.5,
"AssociatedRechits");
2064 histos->fill1DHistByType(kLayer,
"hSegRHLayer",
"RecHits per Layer",idrec,8,-0.5,7.5,
"AssociatedRechits");
2065 histos->fill1DHistByType(xreco,
"hSegRHX",
"Local X of recHit",idrec,160,-80.,80.,
"AssociatedRechits");
2066 histos->fill1DHistByType(yreco,
"hSegRHY",
"Local Y of recHit",idrec,60,-180.,180.,
"AssociatedRechits");
2067 if (kStation == 1 && (kRing == 1 || kRing == 4))
histos->fill1DHistByType(rHSumQ,
"hSegRHSumQ",
"Sum 3x3 recHit Charge",idrec,250,0,4000,
"AssociatedRechits");
2068 else histos->fill1DHistByType(rHSumQ,
"hSegRHSumQ",
"Sum 3x3 recHit Charge",idrec,250,0,2000,
"AssociatedRechits");
2069 histos->fill1DHistByType(rHratioQ,
"hSegRHRatioQ",
"Ratio (Ql+Qr)/Qt)",idrec,120,-0.1,1.1,
"AssociatedRechits");
2070 histos->fill1DHistByType(rHtime,
"hSegRHTiming",
"recHit Timing",idrec,200,-10,10,
"AssociatedRechits");
2071 histos->fill2DHistByStation(grecx,grecy,
"hSegRHGlobal",
"recHit Global Position",idrec,400,-800.,800.,400,-800.,800.,
"AssociatedRechits");
2072 histos->fill1DHistByType(rHwidth,
"hSegRHwidth",
"width for Non associated recHit",idrec,21,-0.5,20.5,
"AssociatedRechits");
2079 NonAssociatedRechits.clear();
2090 for (sIt = stripdigis.begin(); sIt != stripdigis.end(); sIt++){
2095 vector<CSCStripDigi>::const_iterator digiItr = (*sIt).second.first;
2096 vector<CSCStripDigi>::const_iterator
last = (*sIt).second.second;
2099 int Rg = idRH.
ring();
2100 if (St == 1 && Rg == 4){
2101 while(centerStrip> 16) centerStrip -= 16;
2103 for ( ; digiItr !=
last; ++digiItr ) {
2104 int thisStrip = digiItr->getStrip();
2106 std::vector<int> myADCVals = digiItr->getADCCounts();
2107 float thisPedestal = 0.5*(
float)(myADCVals[0]+myADCVals[1]);
2109 if (thisStrip == (centerStrip)){
2110 thisADC = Signal-thisPedestal;
2116 if (thisStrip == (centerStrip+1)){
2117 std::vector<int> myADCVals = digiItr->getADCCounts();
2119 if (thisStrip == (centerStrip-1)){
2120 std::vector<int> myADCVals = digiItr->getADCCounts();
2144 for (sIt = stripdigis.begin(); sIt != stripdigis.end(); sIt++){
2147 std::vector<CSCStripDigi>::const_iterator digiItr = (*sIt).second.first;
2148 std::vector<CSCStripDigi>::const_iterator
first = (*sIt).second.first;
2149 std::vector<CSCStripDigi>::const_iterator
last = (*sIt).second.second;
2150 std::vector<CSCStripDigi>::const_iterator it = (*sIt).second.first;
2151 std::vector<CSCStripDigi>::const_iterator itr = (*sIt).second.first;
2154 int Rg = idRH.
ring();
2155 if (St == 1 && Rg == 4){
2156 while(centerStrip> 16) centerStrip -= 16;
2158 for ( ; digiItr !=
last; ++digiItr ) {
2159 int thisStrip = digiItr->getStrip();
2160 if (thisStrip == (centerStrip)){
2162 for( ; it !=
last; ++it ) {
2163 int strip = it->getStrip();
2164 std::vector<int> myADCVals = it->getADCCounts();
2165 float thisPedestal = 0.5*(
float)(myADCVals[0]+myADCVals[1]);
2166 if(((
float)myADCVals[3]-thisPedestal) < 6 || widthpos == 10 || it==
last){
break;}
2167 if(strip != centerStrip){ widthpos += 1;
2171 for( ; itr !=
first; --itr) {
2172 int strip = itr->getStrip();
2173 std::vector<int> myADCVals = itr->getADCCounts();
2174 float thisPedestal = 0.5*(
float)(myADCVals[0]+myADCVals[1]);
2175 if(((
float)myADCVals[3]-thisPedestal) < 6 || widthneg == 10 || itr==
first){
break;}
2176 if(strip != centerStrip) {widthneg += 1 ;
2184 width = width + widthneg + widthpos ;
2198 int channel=0,mult,wire,layer,idlayer,idchamber,
ring;
2199 int wire_strip_rechit_present;
2203 std::map<int,int>::iterator intIt;
2205 m_single_wire_layer.clear();
2211 m_wire_hvsegm.clear();
2212 std::map<int,std::vector<int> >::iterator intvecIt;
2214 int csctype[10]= {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
2215 int hvsegm_layer[10]={1, 1, 3, 3, 3, 5, 3, 5, 3, 5};
2218 for(
int i=0;
i<10;
i++) nmbhvsegm.push_back(hvsegm_layer[
i]);
2220 std::vector<int> zer_1_1a(49,0);
2222 if(m_wire_hvsegm.find(
id) == m_wire_hvsegm.end()) m_wire_hvsegm[
id]=zer_1_1a;
2223 intvecIt=m_wire_hvsegm.find(
id);
2224 for(
int wire=1;wire<=48;wire++) intvecIt->second[wire]=1;
2227 std::vector<int> zer_1_1b(49,0);
2229 if(m_wire_hvsegm.find(
id) == m_wire_hvsegm.end()) m_wire_hvsegm[
id]=zer_1_1b;
2230 intvecIt=m_wire_hvsegm.find(
id);
2231 for(
int wire=1;wire<=48;wire++) intvecIt->second[wire]=1;
2234 std::vector<int> zer_1_2(65,0);
2236 if(m_wire_hvsegm.find(
id) == m_wire_hvsegm.end()) m_wire_hvsegm[
id]=zer_1_2;
2237 intvecIt=m_wire_hvsegm.find(
id);
2238 for(
int wire=1;wire<=24;wire++) intvecIt->second[wire]=1;
2239 for(
int wire=25;wire<=48;wire++) intvecIt->second[wire]=2;
2240 for(
int wire=49;wire<=64;wire++) intvecIt->second[wire]=3;
2243 std::vector<int> zer_1_3(33,0);
2245 if(m_wire_hvsegm.find(
id) == m_wire_hvsegm.end()) m_wire_hvsegm[
id]=zer_1_3;
2246 intvecIt=m_wire_hvsegm.find(
id);
2247 for(
int wire=1;wire<=12;wire++) intvecIt->second[wire]=1;
2248 for(
int wire=13;wire<=22;wire++) intvecIt->second[wire]=2;
2249 for(
int wire=23;wire<=32;wire++) intvecIt->second[wire]=3;
2252 std::vector<int> zer_2_1(113,0);
2254 if(m_wire_hvsegm.find(
id) == m_wire_hvsegm.end()) m_wire_hvsegm[
id]=zer_2_1;
2255 intvecIt=m_wire_hvsegm.find(
id);
2256 for(
int wire=1;wire<=44;wire++) intvecIt->second[wire]=1;
2257 for(
int wire=45;wire<=80;wire++) intvecIt->second[wire]=2;
2258 for(
int wire=81;wire<=112;wire++) intvecIt->second[wire]=3;
2261 std::vector<int> zer_2_2(65,0);
2263 if(m_wire_hvsegm.find(
id) == m_wire_hvsegm.end()) m_wire_hvsegm[
id]=zer_2_2;
2264 intvecIt=m_wire_hvsegm.find(
id);
2265 for(
int wire=1;wire<=16;wire++) intvecIt->second[wire]=1;
2266 for(
int wire=17;wire<=28;wire++) intvecIt->second[wire]=2;
2267 for(
int wire=29;wire<=40;wire++) intvecIt->second[wire]=3;
2268 for(
int wire=41;wire<=52;wire++) intvecIt->second[wire]=4;
2269 for(
int wire=53;wire<=64;wire++) intvecIt->second[wire]=5;
2272 std::vector<int> zer_3_1(97,0);
2274 if(m_wire_hvsegm.find(
id) == m_wire_hvsegm.end()) m_wire_hvsegm[
id]=zer_3_1;
2275 intvecIt=m_wire_hvsegm.find(
id);
2276 for(
int wire=1;wire<=32;wire++) intvecIt->second[wire]=1;
2277 for(
int wire=33;wire<=64;wire++) intvecIt->second[wire]=2;
2278 for(
int wire=65;wire<=96;wire++) intvecIt->second[wire]=3;
2281 std::vector<int> zer_3_2(65,0);
2283 if(m_wire_hvsegm.find(
id) == m_wire_hvsegm.end()) m_wire_hvsegm[
id]=zer_3_2;
2284 intvecIt=m_wire_hvsegm.find(
id);
2285 for(
int wire=1;wire<=16;wire++) intvecIt->second[wire]=1;
2286 for(
int wire=17;wire<=28;wire++) intvecIt->second[wire]=2;
2287 for(
int wire=29;wire<=40;wire++) intvecIt->second[wire]=3;
2288 for(
int wire=41;wire<=52;wire++) intvecIt->second[wire]=4;
2289 for(
int wire=53;wire<=64;wire++) intvecIt->second[wire]=5;
2292 std::vector<int> zer_4_1(97,0);
2294 if(m_wire_hvsegm.find(
id) == m_wire_hvsegm.end()) m_wire_hvsegm[
id]=zer_4_1;
2295 intvecIt=m_wire_hvsegm.find(
id);
2296 for(
int wire=1;wire<=32;wire++) intvecIt->second[wire]=1;
2297 for(
int wire=33;wire<=64;wire++) intvecIt->second[wire]=2;
2298 for(
int wire=65;wire<=96;wire++) intvecIt->second[wire]=3;
2301 std::vector<int> zer_4_2(65,0);
2303 if(m_wire_hvsegm.find(
id) == m_wire_hvsegm.end()) m_wire_hvsegm[
id]=zer_4_2;
2304 intvecIt=m_wire_hvsegm.find(
id);
2305 for(
int wire=1;wire<=16;wire++) intvecIt->second[wire]=1;
2306 for(
int wire=17;wire<=28;wire++) intvecIt->second[wire]=2;
2307 for(
int wire=29;wire<=40;wire++) intvecIt->second[wire]=3;
2308 for(
int wire=41;wire<=52;wire++) intvecIt->second[wire]=4;
2309 for(
int wire=53;wire<=64;wire++) intvecIt->second[wire]=5;
2315 wire_strip_rechit_present=0;
2316 if(wirecltn.begin() != wirecltn.end())
2317 wire_strip_rechit_present= wire_strip_rechit_present+1;
2318 if(strpcltn.begin() != strpcltn.end())
2319 wire_strip_rechit_present= wire_strip_rechit_present+2;
2320 if(rechitcltn.begin() != rechitcltn.end())
2321 wire_strip_rechit_present= wire_strip_rechit_present+4;
2323 if(wire_strip_rechit_present==7) {
2331 for(wiredetUnitIt=wirecltn.begin();wiredetUnitIt!=wirecltn.end();
2333 const CSCDetId id = (*wiredetUnitIt).first;
2334 idlayer=indexer.
dbIndex(
id, channel);
2335 idchamber=idlayer/10;
2341 range.first; digiIt!=range.second; ++digiIt){
2342 wire=(*digiIt).getWireGroup();
2348 if(m_single_wire_layer.find(idlayer) == m_single_wire_layer.end())
2349 m_single_wire_layer[idlayer]=wire;
2357 for(recIt = rechitcltn.begin(); recIt != rechitcltn.end(); ++recIt) {
2359 idlayer=indexer.
dbIndex(
id, channel);
2360 idchamber=idlayer/10;
2363 if(m_single_wire_layer.find(idlayer) != m_single_wire_layer.end()) {
2365 if(recIt->nStrips()==3) {
2367 unsigned int binmx=0;
2370 for(
unsigned int i=0;
i<recIt->nStrips();
i++)
2371 for(
unsigned int j=0;j<recIt->nTimeBins();j++)
2372 if(recIt->adcs(
i,j)>adcmax) {
2373 adcmax=recIt->adcs(
i,j);
2377 float adc_3_3_sum=0.0;
2379 for(
unsigned int i=0;
i<recIt->nStrips();
i++)
2380 for(
unsigned int j=binmx-1;j<=binmx+1;j++)
2381 adc_3_3_sum+=recIt->adcs(
i,j);
2384 if(adc_3_3_sum > 0.0 && adc_3_3_sum < 2000.0) {
2388 if(
id.
station()==1 &&
id.
ring()==4 && recIt->channels(1)>16) flag=1;
2392 wire= m_single_wire_layer[idlayer];
2393 int chambertype=
id.iChamberType(
id.
station(),
id.
ring());
2394 int hvsgmtnmb=m_wire_hvsegm[chambertype][wire];
2395 int nmbofhvsegm=nmbhvsegm[chambertype-1];
2396 int location= (layer-1)*nmbofhvsegm+hvsgmtnmb;
2398 ss<<
"gas_gain_rechit_adc_3_3_sum_location_ME_"<<idchamber;
2399 name=ss.str(); ss.str(
"");
2400 if(
id.
endcap()==1) endcapstr =
"+";
2403 if(
id.
endcap()==2) endcapstr =
"-";
2404 ss<<
"Gas Gain Rechit ADC3X3 Sum ME"<<endcapstr<<
2405 id.station()<<
"/"<<ring<<
"/"<<
id.chamber();
2406 title=ss.str(); ss.str(
"");
2408 float y=adc_3_3_sum;
2409 histos->fill2DHist(x,y,name,title,30,1.0,31.0,50,0.0,2000.0,
"GasGain");
2434 int wire,wiretbin,nmbwiretbin,layer,afeb,idlayer,idchamber;
2438 if(wirecltn.begin() != wirecltn.end()) {
2446 for(wiredetUnitIt=wirecltn.begin();wiredetUnitIt!=wirecltn.end();
2448 const CSCDetId id = (*wiredetUnitIt).first;
2449 idlayer=indexer.
dbIndex(
id, channel);
2450 idchamber=idlayer/10;
2453 if (
id.
endcap() == 1) endcapstr =
"+";
2454 if (
id.
endcap() == 2) endcapstr =
"-";
2460 range.first; digiIt!=range.second; ++digiIt){
2461 wire=(*digiIt).getWireGroup();
2462 wiretbin=(*digiIt).getTimeBin();
2463 nmbwiretbin=(*digiIt).getTimeBinsOn().size();
2464 afeb=3*((wire-1)/8)+(layer+1)/2;
2469 ss<<
"afeb_time_bin_vs_afeb_occupancy_ME_"<<idchamber;
2470 name=ss.str(); ss.str(
"");
2471 ss<<
"Time Bin vs AFEB Occupancy ME"<<endcapstr<<
id.station()<<
"/"<<
id.ring()<<
"/"<<
id.chamber();
2472 title=ss.str(); ss.str(
"");
2473 histos->fill2DHist(x,y,name,title,42,1.,43.,16,0.,16.,
"AFEBTiming");
2478 ss<<
"nmb_afeb_time_bins_vs_afeb_ME_"<<idchamber;
2479 name=ss.str(); ss.str(
"");
2480 ss<<
"Number of Time Bins vs AFEB ME"<<endcapstr<<
id.station()<<
"/"<<
id.ring()<<
"/"<<
id.chamber();
2483 histos->fill2DHist(x,y,name,title,42,1.,43.,16,0.,16.,
"AFEBTiming");
2499 int strip,tbin,cfeb,idlayer,idchamber;
2503 if(compars.begin() != compars.end()) {
2511 for(compdetUnitIt=compars.begin();compdetUnitIt!=compars.end();
2513 const CSCDetId id = (*compdetUnitIt).first;
2514 idlayer=indexer.
dbIndex(
id, channel);
2515 idchamber=idlayer/10;
2517 if (
id.
endcap() == 1) endcap =
"+";
2518 if (
id.
endcap() == 2) endcap =
"-";
2521 (*compdetUnitIt).second;
2523 range.first; digiIt!=range.second; ++digiIt){
2524 strip=(*digiIt).getStrip();
2532 tbin=(*digiIt).getTimeBin();
2533 cfeb=(strip-1)/16+1;
2539 ss<<
"comp_time_bin_vs_cfeb_occupancy_ME_"<<idchamber;
2540 name=ss.str(); ss.str(
"");
2541 ss<<
"Comparator Time Bin vs CFEB Occupancy ME"<<endcap<<
2542 id.station()<<
"/"<<
id.ring()<<
"/"<<
id.chamber();
2543 title=ss.str(); ss.str(
"");
2544 histos->fill2DHist(x,y,name,title,5,1.,6.,16,0.,16.,
"CompTiming");
2557 float adc_3_3_sum,adc_3_3_wtbin,x,y;
2558 int cfeb,idchamber,
ring;
2562 std::vector<float> zer(6,0.0);
2565 std::map<int,int>::iterator intIt;
2567 if(rechitcltn.begin() != rechitcltn.end()) {
2574 for(recIt = rechitcltn.begin(); recIt != rechitcltn.end(); ++recIt) {
2577 if(recIt->nStrips()==3) {
2580 unsigned int binmx=0;
2583 for(
unsigned int i=0;
i<recIt->nStrips();
i++)
2584 for(
unsigned int j=0;j<recIt->nTimeBins();j++)
2585 if(recIt->adcs(
i,j)>adcmax) {
2586 adcmax=recIt->adcs(
i,j);
2592 for(
unsigned int i=0;
i<recIt->nStrips();
i++)
2593 for(
unsigned int j=binmx-1;j<=binmx+1;j++)
2594 adc_3_3_sum+=recIt->adcs(
i,j);
2598 if(adc_3_3_sum > 100.0) {
2601 int centerStrip=recIt->channels(1);
2604 if(
id.
station()==1 &&
id.
ring()==4 && centerStrip>16) flag=1;
2607 adc_3_3_wtbin=(*recIt).tpeak()/50;
2608 idchamber=indexer.
dbIndex(
id, centerStrip)/10;
2616 ss<<
"adc_3_3_weight_time_bin_vs_cfeb_occupancy_ME_"<<idchamber;
2617 name=ss.str(); ss.str(
"");
2620 if(
id.
endcap() == 1) endcapstr =
"+";
2621 if(
id.
endcap() == 2) endcapstr =
"-";
2622 ring=
id.ring();
if(
id.
ring()==4) ring=1;
2623 ss<<
"ADC 3X3 Weighted Time Bin vs CFEB Occupancy ME" 2624 <<endcapstr<<
id.station()<<
"/"<<ring<<
"/"<<
id.chamber();
2625 title=ss.str(); ss.str(
"");
2627 cfeb=(centerStrip-1)/16+1;
2628 x=cfeb; y=adc_3_3_wtbin;
2629 histos->fill2DHist(x,y,name,title,5,1.,6.,80,-8.,8.,
"ADCTiming");
2648 map<CSCDetId, float > segment_median_map;
2649 map<CSCDetId, GlobalPoint > segment_position_map;
2659 LocalPoint localPos = (*dSiter).localPosition();
2663 globalPosition = cscchamber->
toGlobal(localPos);
2667 std::vector<CSCRecHit2D> theseRecHits = (*dSiter).specificRecHits();
2668 int nRH = (*dSiter).nRecHits();
2669 if (nRH < 4 )
continue;
2672 vector<float> non_zero;
2674 for ( vector<CSCRecHit2D>::const_iterator iRH = theseRecHits.begin(); iRH != theseRecHits.end(); iRH++) {
2675 non_zero.push_back( iRH->tpeak());
2680 sort(non_zero.begin(),non_zero.end());
2681 int middle_index = non_zero.size()/2;
2682 float average_two = (non_zero.at(middle_index-1) + non_zero.at(middle_index))/2.;
2683 if(non_zero.size()%2)
2684 average_two = non_zero.at(middle_index);
2687 segment_median_map[
id]=average_two;
2688 segment_position_map[
id]=globalPosition;
2690 double distToIP =
sqrt(globalPosition.
x()*globalPosition.
x()+globalPosition.
y()*globalPosition.
y()+globalPosition.
z()*globalPosition.
z());
2692 histos->fillProfile(chamberSerial(
id),average_two,
"timeChamber",
"Segment mean time",601,-0.5,600.5,-400.,400.,
"TimeMonitoring");
2693 histos->fillProfileByType(
id.
chamber(),average_two,
"timeChamberByType",
"Segment mean time by chamber",
id,36,0.5,36.5,-400,400.,
"TimeMonitoring");
2694 histos->fill2DHist(distToIP,average_two,
"seg_time_vs_distToIP",
"Segment time vs. Distance to IP",80,600.,1400.,800,-400,400.,
"TimeMonitoring");
2695 histos->fill2DHist(globalPosition.
z(),average_two,
"seg_time_vs_globZ",
"Segment time vs. z position",240,-1200,1200,800,-400.,400.,
"TimeMonitoring");
2696 histos->fill2DHist(fabs(globalPosition.
z()),average_two,
"seg_time_vs_absglobZ",
"Segment time vs. abs(z position)",120,0.,1200.,800,-400.,400.,
"TimeMonitoring");
2701 map<CSCDetId, float >::const_iterator it_outer;
2702 map<CSCDetId, float >::const_iterator it_inner;
2703 for (it_outer = segment_median_map.begin(); it_outer != segment_median_map.end(); it_outer++){
2705 CSCDetId id_outer = it_outer->first;
2706 float t_outer = it_outer->second;
2709 for (it_inner = segment_median_map.begin(); it_inner != segment_median_map.end(); it_inner++){
2711 CSCDetId id_inner = it_inner->first;
2712 float t_inner = it_inner->second;
2717 if (chamberSerial(id_outer) == chamberSerial(id_inner))
continue;
2727 histos->fill1DHist(t_outer-t_inner,
"diff_opposite_endcaps",
"#Delta t [ME+]-[ME-] for chambers in same station and ring",800,-400.,400.,
"TimeMonitoring");
2728 histos->fill1DHistByType(t_outer-t_inner,
"diff_opposite_endcaps_byType",
"#Delta t [ME+]-[ME-] for chambers in same station and ring",id_outer,800,-400.,400.,
"TimeMonitoring");
2735 if( !useDigis )
return;
2738 vector<L1MuGMTReadoutRecord> L1Mrec = pCollection->
getRecords();
2739 vector<L1MuGMTReadoutRecord>::const_iterator igmtrr;
2740 int L1GMT_BXN = -100;
2741 bool has_CSCTrigger =
false;
2742 bool has_beamHaloTrigger =
false;
2743 for(igmtrr=L1Mrec.begin(); igmtrr!=L1Mrec.end(); igmtrr++) {
2744 std::vector<L1MuRegionalCand>::const_iterator iter1;
2745 std::vector<L1MuRegionalCand> rmc;
2748 rmc = igmtrr->getCSCCands();
2749 for(iter1=rmc.begin(); iter1!=rmc.end(); iter1++) {
2750 if ( !(*iter1).empty() ) {
2752 int kQuality = (*iter1).quality();
2753 if (kQuality == 1) has_beamHaloTrigger =
true;
2756 if (igmtrr->getBxInEvent() == 0 && icsc>0){
2758 L1GMT_BXN = igmtrr->getBxNr();
2759 has_CSCTrigger =
true;
2761 else if (igmtrr->getBxInEvent() == 0 ) {
2763 L1GMT_BXN = igmtrr->getBxNr();
2772 map<CSCDetId, int > ALCT_KeyWG_map;
2775 const CSCDetId& idALCT = (*j).first;
2778 if((*digiIt).isValid()){
2780 histos->fill1DHist( (*digiIt).getBX(),
"ALCT_getBX",
"ALCT.getBX()",11,-0.5,10.5,
"TimeMonitoring");
2781 histos->fill1DHist( (*digiIt).getFullBX(),
"ALCT_getFullBX",
"ALCT.getFullBX()",3601,-0.5,3600.5,
"TimeMonitoring");
2783 if (ALCT_KeyWG_map.find(idALCT.
chamberId()) == ALCT_KeyWG_map.end()){
2784 ALCT_KeyWG_map[idALCT.
chamberId()] = (*digiIt).getKeyWG();
2796 map<CSCDetId, int > CLCT_getFullBx_map;
2799 const CSCDetId& idCLCT = (*j).first;
2802 if((*digiIt).isValid()){
2804 histos->fill1DHist( (*digiIt).getBX(),
"CLCT_getBX",
"CLCT.getBX()",11,-0.5,10.5,
"TimeMonitoring");
2805 histos->fill1DHist( (*digiIt).getFullBX(),
"CLCT_getFullBX",
"CLCT.getFullBX()",3601,-0.5,3600.5,
"TimeMonitoring");
2807 if (CLCT_getFullBx_map.find(idCLCT.
chamberId()) == CLCT_getFullBx_map.end()){
2808 CLCT_getFullBx_map[idCLCT.
chamberId()] = (*digiIt).getFullBX();
2818 int n_correlatedlcts = 0;
2822 if((*digiIt).isValid()){
2824 histos->fill1DHist( (*digiIt).getBX(),
"CorrelatedLCTS_getBX",
"CorrelatedLCT.getBX()",11,-0.5,10.5,
"TimeMonitoring");
2830 int nRecHits = recHits->size();
2831 int nSegments = cscSegments->size();
2832 if (has_CSCTrigger){
2833 histos->fill1DHist(L1GMT_BXN,
"BX_L1CSCCand",
"BX of L1 CSC Cand",4001,-0.5,4000.5,
"TimeMonitoring");
2834 histos->fill2DHist(L1GMT_BXN,n_alcts,
"n_ALCTs_v_BX_L1CSCCand",
"Number of ALCTs vs. BX of L1 CSC Cand",4001,-0.5,4000.5,51,-0.5,50.5,
"TimeMonitoring");
2835 histos->fill2DHist(L1GMT_BXN,n_clcts,
"n_CLCTs_v_BX_L1CSCCand",
"Number of CLCTs vs. BX of L1 CSC Cand",4001,-0.5,4000.5,51,-0.5,50.5,
"TimeMonitoring");
2836 histos->fill2DHist(L1GMT_BXN,n_correlatedlcts,
"n_CorrelatedLCTs_v_BX_L1CSCCand",
"Number of CorrelatedLCTs vs. BX of L1 CSC Cand",4001,-0.5,4000.5,51,-0.5,50.5,
"TimeMonitoring");
2837 histos->fill2DHist(L1GMT_BXN,nRecHits,
"n_RecHits_v_BX_L1CSCCand",
"Number of RecHits vs. BX of L1 CSC Cand",4001,-0.5,4000.5,101,-0.5,100.5,
"TimeMonitoring");
2838 histos->fill2DHist(L1GMT_BXN,nSegments,
"n_Segments_v_BX_L1CSCCand",
"Number of Segments vs. BX of L1 CSC Cand",4001,-0.5,4000.5,51,-0.5,50.5,
"TimeMonitoring");
2840 if (has_CSCTrigger && has_beamHaloTrigger){
2841 histos->fill1DHist(L1GMT_BXN,
"BX_L1CSCCand_w_beamHalo",
"BX of L1 CSC (w beamHalo bit)",4001,-0.5,4000.5,
"TimeMonitoring");
2842 histos->fill2DHist(L1GMT_BXN,n_alcts,
"n_ALCTs_v_BX_L1CSCCand_w_beamHalo",
"Number of ALCTs vs. BX of L1 CSC Cand (w beamHalo bit)",4001,-0.5,4000.5,51,-0.5,50.5,
"TimeMonitoring");
2843 histos->fill2DHist(L1GMT_BXN,n_clcts,
"n_CLCTs_v_BX_L1CSCCand_w_beamHalo",
"Number of CLCTs vs. BX of L1 CSC Cand (w beamHalo bit)",4001,-0.5,4000.5,51,-0.5,50.5,
"TimeMonitoring");
2844 histos->fill2DHist(L1GMT_BXN,n_correlatedlcts,
"n_CorrelatedLCTs_v_BX_L1CSCCand_w_beamHalo",
"Number of CorrelatedLCTs vs. BX of L1 CSC Cand (w beamHalo bit)",4001,-0.5,4000.5,51,-0.5,50.5,
"TimeMonitoring");
2845 histos->fill2DHist(L1GMT_BXN,nRecHits,
"n_RecHits_v_BX_L1CSCCand_w_beamHalo",
"Number of RecHits vs. BX of L1 CSC Cand (w beamHalo bit)",4001,-0.5,4000.5,101,-0.5,100.5,
"TimeMonitoring");
2846 histos->fill2DHist(L1GMT_BXN,nSegments,
"n_Segments_v_BX_L1CSCCand_w_beamHalo",
"Number of Segments vs. BX of L1 CSC Cand (w beamHalo bit)",4001,-0.5,4000.5,51,-0.5,50.5,
"TimeMonitoring");
2861 event.getByToken( rd_token, rawdata);
2862 bool goodEvent =
false;
2866 unsigned long dccBinCheckMask = 0x06080016;
2867 unsigned int examinerMask = 0x1FEBF3F6;
2868 unsigned int errorMask = 0x0;
2877 unsigned long length = fedData.
size();
2881 std::stringstream examiner_out, examiner_err;
2886 if( examinerMask&0x40000 ) examiner->
crcCFEB(
true);
2887 if( examinerMask&0x8000 ) examiner->
crcTMB (
true);
2888 if( examinerMask&0x0400 ) examiner->
crcALCT(
true);
2889 examiner->
setMask(examinerMask);
2890 const short unsigned int *
data = (
short unsigned int *)fedData.
data();
2892 if( examiner->
check(data,
long(fedData.
size()/2)) < 0 ) {
2896 goodEvent=!(examiner->
errors()&dccBinCheckMask);
2905 const std::vector<CSCDDUEventData> & dduData = dccData.
dduData();
2910 for (
unsigned int iDDU=0; iDDU<dduData.size(); ++iDDU) {
2913 if (dduData[iDDU].trailer().errorstat()&errorMask) {
2914 LogTrace(
"CSCDCCUnpacker|CSCRawToDigi") <<
"DDU# " << iDDU <<
" has serious error - no digis unpacked! " <<
2915 std::hex << dduData[iDDU].trailer().errorstat();
2920 const std::vector<CSCEventData> & cscData = dduData[iDDU].cscData();
2921 for (
unsigned int iCSC=0; iCSC<cscData.size(); ++iCSC) {
2923 int vmecrate = cscData[iCSC].dmbHeader()->crateID();
2924 int dmb = cscData[iCSC].dmbHeader()->dmbID();
2932 if ((vmecrate>=1)&&(vmecrate<=60) && (dmb>=1)&&(dmb<=10)&&(dmb!=6)) {
2933 layer = pcrate->
detId(vmecrate, dmb,icfeb,ilayer );
2936 LogTrace (
"CSCTimingAlignment|CSCDCCUnpacker|CSCRawToDigi") <<
" detID input out of range!!! ";
2937 LogTrace (
"CSCTimingAlignment|CSCDCCUnpacker|CSCRawToDigi")
2938 <<
" skipping chamber vme= " << vmecrate <<
" dmb= " << dmb;
2943 int nalct = cscData[iCSC].dmbHeader()->nalct();
2944 bool goodALCT=
false;
2946 if (nalct&&cscData[iCSC].alctHeader()) {
2947 if (cscData[iCSC].alctHeader()->
check()){
2953 int nclct = cscData[iCSC].dmbHeader()->nclct();
2955 if (nclct&&cscData[iCSC].tmbData()) {
2956 if (cscData[iCSC].tmbHeader()->
check()){
2957 if (cscData[iCSC].clctData()->
check()) goodTMB=
true;
2961 if (goodTMB && goodALCT) {
2963 if (ALCT_KeyWG_map.find(layer) == ALCT_KeyWG_map.end()) {
2967 if (CLCT_getFullBx_map.find(layer) == CLCT_getFullBx_map.end()) {
2971 int ALCT0Key = ALCT_KeyWG_map.find(layer)->second;
2972 int CLCTPretrigger = CLCT_getFullBx_map.find(layer)->second;
2976 const CSCTMBHeader *tmbHead = cscData[iCSC].tmbHeader();
2978 histos->fill1DHistByStation(tmbHead->
BXNCount(),
"TMB_BXNCount" ,
"TMB_BXNCount" , layer.
chamberId(),3601,-0.5,3600.5,
"TimeMonitoring");
2979 histos->fill1DHistByStation(tmbHead->
ALCTMatchTime(),
"TMB_ALCTMatchTime",
"TMB_ALCTMatchTime", layer.
chamberId(),7,-0.5,6.5,
"TimeMonitoring");
2981 histos->fill1DHist(tmbHead->
BXNCount(),
"TMB_BXNCount" ,
"TMB_BXNCount" , 3601,-0.5,3600.5,
"TimeMonitoring");
2982 histos->fill1DHist(tmbHead->
ALCTMatchTime(),
"TMB_ALCTMatchTime",
"TMB_ALCTMatchTime", 7,-0.5,6.5,
"TimeMonitoring");
2984 histos->fill1DHistByType(tmbHead->
ALCTMatchTime(),
"TMB_ALCTMatchTime",
"TMB_ALCTMatchTime",layer.
chamberId(), 7,-0.5,6.5,
"TimeMonitoring");
2986 histos->fillProfile( chamberSerial(layer.
chamberId()),tmbHead->
ALCTMatchTime(),
"prof_TMB_ALCTMatchTime",
"prof_TMB_ALCTMatchTime", 601,-0.5,600.5,-0.5,7.5,
"TimeMonitoring");
2987 histos->fillProfile(ALCT0Key,tmbHead->
ALCTMatchTime(),
"prof_TMB_ALCTMatchTime_v_ALCT0KeyWG",
"prof_TMB_ALCTMatchTime_v_ALCT0KeyWG",128,-0.5,127.5,0,7,
"TimeMonitoring");
2988 histos->fillProfileByType(ALCT0Key,tmbHead->
ALCTMatchTime(),
"prf_TMB_ALCTMatchTime_v_ALCT0KeyWG",
"prf_TMB_ALCTMatchTime_v_ALCT0KeyWG",layer.
chamberId(),128,-0.5,127.5,0,7,
"TimeMonitoring");
2993 if (TMB_ALCT_rel_L1A > 3563)
2994 TMB_ALCT_rel_L1A = TMB_ALCT_rel_L1A - 3564;
2995 if (TMB_ALCT_rel_L1A < 0)
2996 TMB_ALCT_rel_L1A = TMB_ALCT_rel_L1A + 3564;
2999 histos->fill1DHist(TMB_ALCT_rel_L1A,
"h1D_TMB_ALCT_rel_L1A",
"h1D_TMB_ALCT_rel_L1A",11,144.5,155.5,
"TimeMonitoring");
3000 histos->fill2DHist( chamberSerial(layer.
chamberId()),TMB_ALCT_rel_L1A,
"h2D_TMB_ALCT_rel_L1A",
"h2D_TMB_ALCT_rel_L1A", 601,-0.5,600.5,11,144.5,155.5,
"TimeMonitoring");
3001 histos->fill2DHist( ringSerial(layer.
chamberId()),TMB_ALCT_rel_L1A,
"h2D_TMB_ALCT_rel_L1A_by_ring",
"h2D_TMB_ALCT_rel_L1A_by_ring",19,-9.5,9.5,11,144.5,155.5,
"TimeMonitoring");
3002 histos->fillProfile( chamberSerial(layer.
chamberId()),TMB_ALCT_rel_L1A,
"prof_TMB_ALCT_rel_L1A",
"prof_TMB_ALCT_rel_L1A", 601,-0.5,600.5,145,155,
"TimeMonitoring");
3003 histos->fillProfile( ringSerial(layer.
chamberId()),TMB_ALCT_rel_L1A,
"prof_TMB_ALCT_rel_L1A_by_ring",
"prof_TMB_ALCT_rel_L1A_by_ring",19,-9.5,9.5,145,155,
"TimeMonitoring");
3005 histos->fill2DHist (ALCT0Key,TMB_ALCT_rel_L1A,
"h2D_TMB_ALCT_rel_L1A_v_ALCT0KeyWG",
"h2D_TMB_ALCT_rel_L1A_v_ALCT0KeyWG", 128,-0.5,127.5,11,144.5,155.5,
"TimeMonitoring");
3006 histos->fillProfile(ALCT0Key,TMB_ALCT_rel_L1A,
"prof_TMB_ALCT_rel_L1A_v_ALCT0KeyWG",
"prof_TMB_ALCT_rel_L1A_v_ALCT0KeyWG",128,-0.5,127.5,145,155,
"TimeMonitoring");
3007 histos->fillProfileByType(ALCT0Key,TMB_ALCT_rel_L1A,
"prf_TMB_ALCT_rel_L1A_v_ALCT0KeyWG",
"prf_TMB_ALCT_rel_L1A_v_ALCT0KeyWG",layer.
chamberId(),128,-0.5,127.5,145,155,
"TimeMonitoring");
3013 if (examiner!=
nullptr)
delete examiner;
3022 std::cout<<
"Events in "<<nEventsAnalyzed<<std::endl;
float getthisSignal(const CSCStripDigiCollection &stripdigis, CSCDetId idRH, int centerStrip)
T getParameter(std::string const &) const
void crcCFEB(bool enable)
T getUntrackedParameter(std::string const &, T const &) const
float fitX(const CLHEP::HepMatrix &sp, const CLHEP::HepMatrix &ep)
LocalVector localDirection() const override
Local direction.
virtual const std::array< const float, 4 > parameters() const
CSCDetId id() const
Get the (concrete) DetId.
#define DEFINE_FWK_MODULE(type)
static const double slope[3]
CSCDetId detId(int vme, int dmb, int cfeb, int layer=0) const
GlobalPoint toGlobal(const Local2DPoint &lp) const
Conversion to the global R.F. from the R.F. of the GeomDet.
bool accept() const
Has at least one path accepted the event?
Geom::Phi< T > phi() const
Global3DPoint GlobalPoint
const std::vector< CSCDDUEventData > & dduData() const
accessor to dduData
Geom::Theta< T > theta() const
LocalPoint toLocal(const GlobalPoint &gp) const
Conversion to the R.F. of the GeomDet.
void doNoiseHits(edm::Handle< CSCRecHit2DCollection > recHits, edm::Handle< CSCSegmentCollection > cscSegments, edm::ESHandle< CSCGeometry > cscGeom, edm::Handle< CSCStripDigiCollection > strips)
const ChamberContainer & chambers() const
Return a vector of all chambers.
ExaminerStatusType errors(void) const
void crcALCT(bool enable)
void doRecHits(edm::Handle< CSCRecHit2DCollection > recHits, edm::ESHandle< CSCGeometry > cscGeom)
void doEfficiencies(edm::Handle< CSCWireDigiCollection > wires, edm::Handle< CSCStripDigiCollection > strips, edm::Handle< CSCRecHit2DCollection > recHits, edm::Handle< CSCSegmentCollection > cscSegments, edm::ESHandle< CSCGeometry > cscGeom)
size_t size() const
Lenght of the data buffer in bytes.
bool withinSensitiveRegion(LocalPoint localPos, const std::array< const float, 4 > &layerBounds, int station, int ring, float shiftFromEdge, float shiftFromDeadZone)
bool doTrigger(edm::Handle< L1MuGMTReadoutCollection > pCollection)
Geom::Theta< T > theta() const
std::string chamberTypeName() const
void doCompTiming(const CSCComparatorDigiCollection &)
void doPedestalNoise(edm::Handle< CSCStripDigiCollection > strips)
const FEDRawData & FEDData(int fedid) const
retrieve data for fed
int dbIndex(const CSCDetId &id, int &channel)
const CSCChamberSpecs * specs() const
void doStripDigis(edm::Handle< CSCStripDigiCollection > strips)
unsigned int size() const
Get number of paths stored.
int getWidth(const CSCStripDigiCollection &stripdigis, CSCDetId idRH, int centerStrip)
void histoEfficiency(TH1F *readHisto, TH1F *writeHisto)
int ringSerial(CSCDetId id)
Abs< T >::type abs(const T &t)
LocalPoint localPosition() const override
~CSCValidation() override
Destructor.
CSCDetId chamberId() const
const CSCLayer * layer(CSCDetId id) const
Return the layer corresponding to the given id.
bool filterEvents(edm::Handle< CSCRecHit2DCollection > recHits, edm::Handle< CSCSegmentCollection > cscSegments, edm::Handle< reco::TrackCollection > saMuons)
bool doHLT(edm::Handle< edm::TriggerResults > hltResults)
float ChiSquaredProbability(double chiSquared, double nrDOF)
static const std::string kLayer("layer")
void analyze(const edm::Event &event, const edm::EventSetup &eventSetup) override
Perform the analysis.
void doSimHits(edm::Handle< CSCRecHit2DCollection > recHits, edm::Handle< edm::PSimHitContainer > simHits)
bin
set the eta bin as selection string.
void doGasGain(const CSCWireDigiCollection &, const CSCStripDigiCollection &, const CSCRecHit2DCollection &)
void getEfficiency(float bin, float Norm, std::vector< float > &eff)
void doResolution(edm::Handle< CSCSegmentCollection > cscSegments, edm::ESHandle< CSCGeometry > cscGeom)
void findNonAssociatedRecHits(edm::ESHandle< CSCGeometry > cscGeom, edm::Handle< CSCStripDigiCollection > strips)
const CSCChamber * chamber(CSCDetId id) const
Return the chamber corresponding to given DetId.
std::vector< CSCWireDigi >::const_iterator const_iterator
int32_t check(const uint16_t *&buffer, int32_t length)
void doAFEBTiming(const CSCWireDigiCollection &)
void doTimeMonitoring(edm::Handle< CSCRecHit2DCollection > recHits, edm::Handle< CSCSegmentCollection > cscSegments, edm::Handle< CSCALCTDigiCollection > alcts, edm::Handle< CSCCLCTDigiCollection > clcts, edm::Handle< CSCCorrelatedLCTDigiCollection > correlatedlcts, edm::Handle< L1MuGMTReadoutCollection > pCollection, edm::ESHandle< CSCGeometry > cscGeom, const edm::EventSetup &eventSetup, const edm::Event &event)
std::vector< const CSCChamber * > ChamberContainer
float getSignal(const CSCStripDigiCollection &stripdigis, CSCDetId idRH, int centerStrip)
PedestalContainer pedestals
char data[epos_bytes_allocation]
void doStandalone(edm::Handle< reco::TrackCollection > saMuons)
int chamberSerial(CSCDetId id)
const CSCLayer * layer(CSCDetId id) const
Return the layer corresponding to given DetId.
std::vector< L1MuGMTReadoutRecord > const & getRecords() const
const unsigned char * data() const
Return a const pointer to the beginning of the data buffer.
void doWireDigis(edm::Handle< CSCWireDigiCollection > wires)
std::pair< const_iterator, const_iterator > Range
void doADCTiming(const CSCRecHit2DCollection &)
CrosstalkContainer crosstalk
NoiseMatrixContainer matrix
CSCValidation(const edm::ParameterSet &pset)
Constructor.
void doSegments(edm::Handle< CSCSegmentCollection > cscSegments, edm::ESHandle< CSCGeometry > cscGeom)
T const * product() const
void doOccupancies(edm::Handle< CSCStripDigiCollection > strips, edm::Handle< CSCWireDigiCollection > wires, edm::Handle< CSCRecHit2DCollection > recHits, edm::Handle< CSCSegmentCollection > cscSegments)
const CSCLayerGeometry * geometry() const
void setMask(ExaminerMaskType mask)
Power< A, B >::type pow(const A &a, const B &b)
void doCalibrations(const edm::EventSetup &eventSetup)