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.;
888 const CSCLayer* csclayer = cscGeom->layer( idrec );
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.;
1029 const CSCChamber* cscchamber = cscGeom->chamber(
id);
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;
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 = 0;
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];
1521 const CSCChamber *segChamber = cscGeom->chamber(thisSegment->first);
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);
1974 const CSCLayer* csclayer = cscGeom->layer( idrec );
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);
2047 const CSCLayer* csclayer = cscGeom->layer( idrec );
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]);
2108 float Signal = (float) myADCVals[3];
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 ;
2199 int channel=0,
mult,wire,layer,idlayer,idchamber,
ring;
2200 int wire_strip_rechit_present;
2204 std::map<int,int>::iterator intIt;
2206 m_single_wire_layer.clear();
2212 m_wire_hvsegm.clear();
2213 std::map<int,std::vector<int> >::iterator intvecIt;
2215 int csctype[10]= {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
2216 int hvsegm_layer[10]={1, 1, 3, 3, 3, 5, 3, 5, 3, 5};
2219 for(
int i=0;
i<10;
i++) nmbhvsegm.push_back(hvsegm_layer[
i]);
2221 std::vector<int> zer_1_1a(49,0);
2223 if(m_wire_hvsegm.find(
id) == m_wire_hvsegm.end()) m_wire_hvsegm[
id]=zer_1_1a;
2224 intvecIt=m_wire_hvsegm.find(
id);
2225 for(
int wire=1;wire<=48;wire++) intvecIt->second[wire]=1;
2228 std::vector<int> zer_1_1b(49,0);
2230 if(m_wire_hvsegm.find(
id) == m_wire_hvsegm.end()) m_wire_hvsegm[
id]=zer_1_1b;
2231 intvecIt=m_wire_hvsegm.find(
id);
2232 for(
int wire=1;wire<=48;wire++) intvecIt->second[wire]=1;
2235 std::vector<int> zer_1_2(65,0);
2237 if(m_wire_hvsegm.find(
id) == m_wire_hvsegm.end()) m_wire_hvsegm[
id]=zer_1_2;
2238 intvecIt=m_wire_hvsegm.find(
id);
2239 for(
int wire=1;wire<=24;wire++) intvecIt->second[wire]=1;
2240 for(
int wire=25;wire<=48;wire++) intvecIt->second[wire]=2;
2241 for(
int wire=49;wire<=64;wire++) intvecIt->second[wire]=3;
2244 std::vector<int> zer_1_3(33,0);
2246 if(m_wire_hvsegm.find(
id) == m_wire_hvsegm.end()) m_wire_hvsegm[
id]=zer_1_3;
2247 intvecIt=m_wire_hvsegm.find(
id);
2248 for(
int wire=1;wire<=12;wire++) intvecIt->second[wire]=1;
2249 for(
int wire=13;wire<=22;wire++) intvecIt->second[wire]=2;
2250 for(
int wire=23;wire<=32;wire++) intvecIt->second[wire]=3;
2253 std::vector<int> zer_2_1(113,0);
2255 if(m_wire_hvsegm.find(
id) == m_wire_hvsegm.end()) m_wire_hvsegm[
id]=zer_2_1;
2256 intvecIt=m_wire_hvsegm.find(
id);
2257 for(
int wire=1;wire<=44;wire++) intvecIt->second[wire]=1;
2258 for(
int wire=45;wire<=80;wire++) intvecIt->second[wire]=2;
2259 for(
int wire=81;wire<=112;wire++) intvecIt->second[wire]=3;
2262 std::vector<int> zer_2_2(65,0);
2264 if(m_wire_hvsegm.find(
id) == m_wire_hvsegm.end()) m_wire_hvsegm[
id]=zer_2_2;
2265 intvecIt=m_wire_hvsegm.find(
id);
2266 for(
int wire=1;wire<=16;wire++) intvecIt->second[wire]=1;
2267 for(
int wire=17;wire<=28;wire++) intvecIt->second[wire]=2;
2268 for(
int wire=29;wire<=40;wire++) intvecIt->second[wire]=3;
2269 for(
int wire=41;wire<=52;wire++) intvecIt->second[wire]=4;
2270 for(
int wire=53;wire<=64;wire++) intvecIt->second[wire]=5;
2273 std::vector<int> zer_3_1(97,0);
2275 if(m_wire_hvsegm.find(
id) == m_wire_hvsegm.end()) m_wire_hvsegm[
id]=zer_3_1;
2276 intvecIt=m_wire_hvsegm.find(
id);
2277 for(
int wire=1;wire<=32;wire++) intvecIt->second[wire]=1;
2278 for(
int wire=33;wire<=64;wire++) intvecIt->second[wire]=2;
2279 for(
int wire=65;wire<=96;wire++) intvecIt->second[wire]=3;
2282 std::vector<int> zer_3_2(65,0);
2284 if(m_wire_hvsegm.find(
id) == m_wire_hvsegm.end()) m_wire_hvsegm[
id]=zer_3_2;
2285 intvecIt=m_wire_hvsegm.find(
id);
2286 for(
int wire=1;wire<=16;wire++) intvecIt->second[wire]=1;
2287 for(
int wire=17;wire<=28;wire++) intvecIt->second[wire]=2;
2288 for(
int wire=29;wire<=40;wire++) intvecIt->second[wire]=3;
2289 for(
int wire=41;wire<=52;wire++) intvecIt->second[wire]=4;
2290 for(
int wire=53;wire<=64;wire++) intvecIt->second[wire]=5;
2293 std::vector<int> zer_4_1(97,0);
2295 if(m_wire_hvsegm.find(
id) == m_wire_hvsegm.end()) m_wire_hvsegm[
id]=zer_4_1;
2296 intvecIt=m_wire_hvsegm.find(
id);
2297 for(
int wire=1;wire<=32;wire++) intvecIt->second[wire]=1;
2298 for(
int wire=33;wire<=64;wire++) intvecIt->second[wire]=2;
2299 for(
int wire=65;wire<=96;wire++) intvecIt->second[wire]=3;
2302 std::vector<int> zer_4_2(65,0);
2304 if(m_wire_hvsegm.find(
id) == m_wire_hvsegm.end()) m_wire_hvsegm[
id]=zer_4_2;
2305 intvecIt=m_wire_hvsegm.find(
id);
2306 for(
int wire=1;wire<=16;wire++) intvecIt->second[wire]=1;
2307 for(
int wire=17;wire<=28;wire++) intvecIt->second[wire]=2;
2308 for(
int wire=29;wire<=40;wire++) intvecIt->second[wire]=3;
2309 for(
int wire=41;wire<=52;wire++) intvecIt->second[wire]=4;
2310 for(
int wire=53;wire<=64;wire++) intvecIt->second[wire]=5;
2316 wire_strip_rechit_present=0;
2317 if(wirecltn.begin() != wirecltn.end())
2318 wire_strip_rechit_present= wire_strip_rechit_present+1;
2319 if(strpcltn.begin() != strpcltn.end())
2320 wire_strip_rechit_present= wire_strip_rechit_present+2;
2321 if(rechitcltn.begin() != rechitcltn.end())
2322 wire_strip_rechit_present= wire_strip_rechit_present+4;
2324 if(wire_strip_rechit_present==7) {
2332 for(wiredetUnitIt=wirecltn.begin();wiredetUnitIt!=wirecltn.end();
2334 const CSCDetId id = (*wiredetUnitIt).first;
2335 idlayer=indexer.
dbIndex(
id, channel);
2336 idchamber=idlayer/10;
2342 range.first; digiIt!=range.second; ++digiIt){
2343 wire=(*digiIt).getWireGroup();
2349 if(m_single_wire_layer.find(idlayer) == m_single_wire_layer.end())
2350 m_single_wire_layer[idlayer]=wire;
2358 for(recIt = rechitcltn.begin(); recIt != rechitcltn.end(); ++recIt) {
2360 idlayer=indexer.
dbIndex(
id, channel);
2361 idchamber=idlayer/10;
2364 if(m_single_wire_layer.find(idlayer) != m_single_wire_layer.end()) {
2366 if(recIt->nStrips()==3) {
2368 unsigned int binmx=0;
2371 for(
unsigned int i=0;
i<recIt->nStrips();
i++)
2372 for(
unsigned int j=0;
j<recIt->nTimeBins();
j++)
2373 if(recIt->adcs(
i,
j)>adcmax) {
2374 adcmax=recIt->adcs(
i,
j);
2378 float adc_3_3_sum=0.0;
2380 for(
unsigned int i=0;
i<recIt->nStrips();
i++)
2381 for(
unsigned int j=binmx-1;
j<=binmx+1;
j++)
2382 adc_3_3_sum+=recIt->adcs(
i,
j);
2385 if(adc_3_3_sum > 0.0 && adc_3_3_sum < 2000.0) {
2389 if(
id.
station()==1 &&
id.
ring()==4 && recIt->channels(1)>16) flag=1;
2393 wire= m_single_wire_layer[idlayer];
2394 int chambertype=
id.iChamberType(
id.
station(),
id.
ring());
2395 int hvsgmtnmb=m_wire_hvsegm[chambertype][wire];
2396 int nmbofhvsegm=nmbhvsegm[chambertype-1];
2397 int location= (layer-1)*nmbofhvsegm+hvsgmtnmb;
2400 ss<<
"gas_gain_rechit_adc_3_3_sum_location_ME_"<<idchamber;
2401 name=ss.str(); ss.str(
"");
2402 if(
id.
endcap()==1) endcapstr =
"+";
2405 if(
id.
endcap()==2) endcapstr =
"-";
2406 ss<<
"Gas Gain Rechit ADC3X3 Sum ME"<<endcapstr<<
2407 id.station()<<
"/"<<ring<<
"/"<<
id.chamber();
2408 title=ss.str(); ss.str(
"");
2411 histos->fill2DHist(x,y,name.c_str(),title.c_str(),30,1.0,31.0,50,0.0,2000.0,
"GasGain");
2436 int wire,wiretbin,nmbwiretbin,layer,afeb,idlayer,idchamber;
2440 if(wirecltn.begin() != wirecltn.end()) {
2448 for(wiredetUnitIt=wirecltn.begin();wiredetUnitIt!=wirecltn.end();
2450 const CSCDetId id = (*wiredetUnitIt).first;
2451 idlayer=indexer.
dbIndex(
id, channel);
2452 idchamber=idlayer/10;
2455 if (
id.
endcap() == 1) endcapstr =
"+";
2456 if (
id.
endcap() == 2) endcapstr =
"-";
2462 range.first; digiIt!=range.second; ++digiIt){
2463 wire=(*digiIt).getWireGroup();
2464 wiretbin=(*digiIt).getTimeBin();
2465 nmbwiretbin=(*digiIt).getTimeBinsOn().size();
2466 afeb=3*((wire-1)/8)+(layer+1)/2;
2471 ss<<
"afeb_time_bin_vs_afeb_occupancy_ME_"<<idchamber;
2472 name=ss.str(); ss.str(
"");
2473 ss<<
"Time Bin vs AFEB Occupancy ME"<<endcapstr<<
id.station()<<
"/"<<
id.ring()<<
"/"<<
id.chamber();
2474 title=ss.str(); ss.str(
"");
2475 histos->fill2DHist(x,y,name.c_str(),title.c_str(),42,1.,43.,16,0.,16.,
"AFEBTiming");
2480 ss<<
"nmb_afeb_time_bins_vs_afeb_ME_"<<idchamber;
2481 name=ss.str(); ss.str(
"");
2482 ss<<
"Number of Time Bins vs AFEB ME"<<endcapstr<<
id.station()<<
"/"<<
id.ring()<<
"/"<<
id.chamber();
2485 histos->fill2DHist(x,y,name.c_str(),title.c_str(),42,1.,43.,16,0.,16.,
"AFEBTiming");
2501 int strip,tbin,cfeb,idlayer,idchamber;
2505 if(compars.begin() != compars.end()) {
2513 for(compdetUnitIt=compars.begin();compdetUnitIt!=compars.end();
2515 const CSCDetId id = (*compdetUnitIt).first;
2516 idlayer=indexer.
dbIndex(
id, channel);
2517 idchamber=idlayer/10;
2519 if (
id.
endcap() == 1) endcap =
"+";
2520 if (
id.
endcap() == 2) endcap =
"-";
2523 (*compdetUnitIt).second;
2525 range.first; digiIt!=range.second; ++digiIt){
2526 strip=(*digiIt).getStrip();
2534 tbin=(*digiIt).getTimeBin();
2535 cfeb=(strip-1)/16+1;
2541 ss<<
"comp_time_bin_vs_cfeb_occupancy_ME_"<<idchamber;
2542 name=ss.str(); ss.str(
"");
2543 ss<<
"Comparator Time Bin vs CFEB Occupancy ME"<<endcap<<
2544 id.station()<<
"/"<<
id.ring()<<
"/"<<
id.chamber();
2545 title=ss.str(); ss.str(
"");
2546 histos->fill2DHist(x,y,name.c_str(),title.c_str(),5,1.,6.,16,0.,16.,
"CompTiming");
2559 float adc_3_3_sum,adc_3_3_wtbin,
x,y;
2560 int cfeb,idchamber,
ring;
2564 std::vector<float> zer(6,0.0);
2567 std::map<int,int>::iterator intIt;
2569 if(rechitcltn.begin() != rechitcltn.end()) {
2576 for(recIt = rechitcltn.begin(); recIt != rechitcltn.end(); ++recIt) {
2579 if(recIt->nStrips()==3) {
2582 unsigned int binmx=0;
2585 for(
unsigned int i=0;
i<recIt->nStrips();
i++)
2586 for(
unsigned int j=0;
j<recIt->nTimeBins();
j++)
2587 if(recIt->adcs(
i,
j)>adcmax) {
2588 adcmax=recIt->adcs(
i,
j);
2594 for(
unsigned int i=0;
i<recIt->nStrips();
i++)
2595 for(
unsigned int j=binmx-1;
j<=binmx+1;
j++)
2596 adc_3_3_sum+=recIt->adcs(
i,
j);
2600 if(adc_3_3_sum > 100.0) {
2603 int centerStrip=recIt->channels(1);
2606 if(
id.
station()==1 &&
id.
ring()==4 && centerStrip>16) flag=1;
2609 adc_3_3_wtbin=(*recIt).tpeak()/50;
2610 idchamber=indexer.
dbIndex(
id, centerStrip)/10;
2618 ss<<
"adc_3_3_weight_time_bin_vs_cfeb_occupancy_ME_"<<idchamber;
2619 name=ss.str(); ss.str(
"");
2622 if(
id.
endcap() == 1) endcapstr =
"+";
2623 if(
id.
endcap() == 2) endcapstr =
"-";
2624 ring=
id.ring();
if(
id.
ring()==4) ring=1;
2625 ss<<
"ADC 3X3 Weighted Time Bin vs CFEB Occupancy ME"
2626 <<endcapstr<<
id.station()<<
"/"<<ring<<
"/"<<
id.chamber();
2627 title=ss.str(); ss.str(
"");
2629 cfeb=(centerStrip-1)/16+1;
2630 x=cfeb; y=adc_3_3_wtbin;
2631 histos->fill2DHist(x,y,name.c_str(),title.c_str(),5,1.,6.,80,-8.,8.,
"ADCTiming");
2650 map<CSCDetId, float > segment_median_map;
2651 map<CSCDetId, GlobalPoint > segment_position_map;
2661 LocalPoint localPos = (*dSiter).localPosition();
2663 const CSCChamber* cscchamber = cscGeom->chamber(
id);
2665 globalPosition = cscchamber->
toGlobal(localPos);
2669 std::vector<CSCRecHit2D> theseRecHits = (*dSiter).specificRecHits();
2670 int nRH = (*dSiter).nRecHits();
2671 if (nRH < 4 )
continue;
2674 vector<float> non_zero;
2676 for ( vector<CSCRecHit2D>::const_iterator iRH = theseRecHits.begin(); iRH != theseRecHits.end(); iRH++) {
2677 non_zero.push_back( iRH->tpeak());
2682 sort(non_zero.begin(),non_zero.end());
2683 int middle_index = non_zero.size()/2;
2684 float average_two = (non_zero.at(middle_index-1) + non_zero.at(middle_index))/2.;
2685 if(non_zero.size()%2)
2686 average_two = non_zero.at(middle_index);
2689 segment_median_map[id]=average_two;
2690 segment_position_map[id]=globalPosition;
2692 double distToIP =
sqrt(globalPosition.
x()*globalPosition.
x()+globalPosition.
y()*globalPosition.
y()+globalPosition.
z()*globalPosition.
z());
2694 histos->fillProfile(chamberSerial(
id),average_two,
"timeChamber",
"Segment mean time",601,-0.5,600.5,-400.,400.,
"TimeMonitoring");
2695 histos->fillProfileByType(
id.chamber(),average_two,
"timeChamberByType",
"Segment mean time by chamber",
id,36,0.5,36.5,-400,400.,
"TimeMonitoring");
2696 histos->fill2DHist(distToIP,average_two,
"seg_time_vs_distToIP",
"Segment time vs. Distance to IP",80,600.,1400.,800,-400,400.,
"TimeMonitoring");
2697 histos->fill2DHist(globalPosition.
z(),average_two,
"seg_time_vs_globZ",
"Segment time vs. z position",240,-1200,1200,800,-400.,400.,
"TimeMonitoring");
2698 histos->fill2DHist(fabs(globalPosition.
z()),average_two,
"seg_time_vs_absglobZ",
"Segment time vs. abs(z position)",120,0.,1200.,800,-400.,400.,
"TimeMonitoring");
2703 map<CSCDetId, float >::const_iterator it_outer;
2704 map<CSCDetId, float >::const_iterator it_inner;
2705 for (it_outer = segment_median_map.begin(); it_outer != segment_median_map.end(); it_outer++){
2707 CSCDetId id_outer = it_outer->first;
2708 float t_outer = it_outer->second;
2711 for (it_inner = segment_median_map.begin(); it_inner != segment_median_map.end(); it_inner++){
2713 CSCDetId id_inner = it_inner->first;
2714 float t_inner = it_inner->second;
2719 if (chamberSerial(id_outer) == chamberSerial(id_inner))
continue;
2729 histos->fill1DHist(t_outer-t_inner,
"diff_opposite_endcaps",
"#Delta t [ME+]-[ME-] for chambers in same station and ring",800,-400.,400.,
"TimeMonitoring");
2730 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");
2737 if( !useDigis )
return;
2740 vector<L1MuGMTReadoutRecord> L1Mrec = pCollection->getRecords();
2741 vector<L1MuGMTReadoutRecord>::const_iterator igmtrr;
2742 int L1GMT_BXN = -100;
2743 bool has_CSCTrigger =
false;
2744 bool has_beamHaloTrigger =
false;
2745 for(igmtrr=L1Mrec.begin(); igmtrr!=L1Mrec.end(); igmtrr++) {
2746 std::vector<L1MuRegionalCand>::const_iterator iter1;
2747 std::vector<L1MuRegionalCand> rmc;
2750 rmc = igmtrr->getCSCCands();
2751 for(iter1=rmc.begin(); iter1!=rmc.end(); iter1++) {
2752 if ( !(*iter1).empty() ) {
2754 int kQuality = (*iter1).quality();
2755 if (kQuality == 1) has_beamHaloTrigger =
true;
2758 if (igmtrr->getBxInEvent() == 0 && icsc>0){
2760 L1GMT_BXN = igmtrr->getBxNr();
2761 has_CSCTrigger =
true;
2763 else if (igmtrr->getBxInEvent() == 0 ) {
2765 L1GMT_BXN = igmtrr->getBxNr();
2774 map<CSCDetId, int > ALCT_KeyWG_map;
2777 const CSCDetId& idALCT = (*j).first;
2780 if((*digiIt).isValid()){
2782 histos->fill1DHist( (*digiIt).getBX(),
"ALCT_getBX",
"ALCT.getBX()",11,-0.5,10.5,
"TimeMonitoring");
2783 histos->fill1DHist( (*digiIt).getFullBX(),
"ALCT_getFullBX",
"ALCT.getFullBX()",3601,-0.5,3600.5,
"TimeMonitoring");
2785 if (ALCT_KeyWG_map.find(idALCT.
chamberId()) == ALCT_KeyWG_map.end()){
2786 ALCT_KeyWG_map[idALCT.
chamberId()] = (*digiIt).getKeyWG();
2798 map<CSCDetId, int > CLCT_getFullBx_map;
2801 const CSCDetId& idCLCT = (*j).first;
2804 if((*digiIt).isValid()){
2806 histos->fill1DHist( (*digiIt).getBX(),
"CLCT_getBX",
"CLCT.getBX()",11,-0.5,10.5,
"TimeMonitoring");
2807 histos->fill1DHist( (*digiIt).getFullBX(),
"CLCT_getFullBX",
"CLCT.getFullBX()",3601,-0.5,3600.5,
"TimeMonitoring");
2809 if (CLCT_getFullBx_map.find(idCLCT.
chamberId()) == CLCT_getFullBx_map.end()){
2810 CLCT_getFullBx_map[idCLCT.
chamberId()] = (*digiIt).getFullBX();
2820 int n_correlatedlcts = 0;
2824 if((*digiIt).isValid()){
2826 histos->fill1DHist( (*digiIt).getBX(),
"CorrelatedLCTS_getBX",
"CorrelatedLCT.getBX()",11,-0.5,10.5,
"TimeMonitoring");
2832 int nRecHits = recHits->size();
2833 int nSegments = cscSegments->size();
2834 if (has_CSCTrigger){
2835 histos->fill1DHist(L1GMT_BXN,
"BX_L1CSCCand",
"BX of L1 CSC Cand",4001,-0.5,4000.5,
"TimeMonitoring");
2836 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");
2837 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");
2838 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");
2839 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");
2840 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");
2842 if (has_CSCTrigger && has_beamHaloTrigger){
2843 histos->fill1DHist(L1GMT_BXN,
"BX_L1CSCCand_w_beamHalo",
"BX of L1 CSC (w beamHalo bit)",4001,-0.5,4000.5,
"TimeMonitoring");
2844 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");
2845 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");
2846 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");
2847 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");
2848 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");
2863 event.getByToken( rd_token, rawdata);
2864 bool goodEvent =
false;
2868 unsigned long dccBinCheckMask = 0x06080016;
2869 unsigned int examinerMask = 0x1FEBF3F6;
2870 unsigned int errorMask = 0x0;
2878 const FEDRawData& fedData = rawdata->FEDData(
id);
2879 unsigned long length = fedData.
size();
2883 std::stringstream examiner_out, examiner_err;
2888 if( examinerMask&0x40000 ) examiner->
crcCFEB(1);
2889 if( examinerMask&0x8000 ) examiner->
crcTMB (1);
2890 if( examinerMask&0x0400 ) examiner->
crcALCT(1);
2891 examiner->
setMask(examinerMask);
2892 const short unsigned int *
data = (
short unsigned int *)fedData.
data();
2894 if( examiner->
check(data,
long(fedData.
size()/2)) < 0 ) {
2898 goodEvent=!(examiner->
errors()&dccBinCheckMask);
2907 const std::vector<CSCDDUEventData> & dduData = dccData.
dduData();
2912 for (
unsigned int iDDU=0; iDDU<dduData.size(); ++iDDU) {
2915 if (dduData[iDDU].trailer().errorstat()&errorMask) {
2916 LogTrace(
"CSCDCCUnpacker|CSCRawToDigi") <<
"DDU# " << iDDU <<
" has serious error - no digis unpacked! " <<
2917 std::hex << dduData[iDDU].trailer().errorstat();
2922 const std::vector<CSCEventData> & cscData = dduData[iDDU].cscData();
2923 for (
unsigned int iCSC=0; iCSC<cscData.size(); ++iCSC) {
2925 int vmecrate = cscData[iCSC].dmbHeader()->crateID();
2926 int dmb = cscData[iCSC].dmbHeader()->dmbID();
2934 if ((vmecrate>=1)&&(vmecrate<=60) && (dmb>=1)&&(dmb<=10)&&(dmb!=6)) {
2935 layer = pcrate->
detId(vmecrate, dmb,icfeb,ilayer );
2938 LogTrace (
"CSCTimingAlignment|CSCDCCUnpacker|CSCRawToDigi") <<
" detID input out of range!!! ";
2939 LogTrace (
"CSCTimingAlignment|CSCDCCUnpacker|CSCRawToDigi")
2940 <<
" skipping chamber vme= " << vmecrate <<
" dmb= " << dmb;
2945 int nalct = cscData[iCSC].dmbHeader()->nalct();
2946 bool goodALCT=
false;
2948 if (nalct&&cscData[iCSC].alctHeader()) {
2949 if (cscData[iCSC].alctHeader()->
check()){
2955 int nclct = cscData[iCSC].dmbHeader()->nclct();
2957 if (nclct&&cscData[iCSC].tmbData()) {
2958 if (cscData[iCSC].tmbHeader()->
check()){
2959 if (cscData[iCSC].clctData()->
check()) goodTMB=
true;
2963 if (goodTMB && goodALCT) {
2965 if (ALCT_KeyWG_map.find(layer) == ALCT_KeyWG_map.end()) {
2969 if (CLCT_getFullBx_map.find(layer) == CLCT_getFullBx_map.end()) {
2973 int ALCT0Key = ALCT_KeyWG_map.find(layer)->second;
2974 int CLCTPretrigger = CLCT_getFullBx_map.find(layer)->second;
2978 const CSCTMBHeader *tmbHead = cscData[iCSC].tmbHeader();
2980 histos->fill1DHistByStation(tmbHead->
BXNCount(),
"TMB_BXNCount" ,
"TMB_BXNCount" , layer.
chamberId(),3601,-0.5,3600.5,
"TimeMonitoring");
2981 histos->fill1DHistByStation(tmbHead->
ALCTMatchTime(),
"TMB_ALCTMatchTime",
"TMB_ALCTMatchTime", layer.
chamberId(),7,-0.5,6.5,
"TimeMonitoring");
2983 histos->fill1DHist(tmbHead->
BXNCount(),
"TMB_BXNCount" ,
"TMB_BXNCount" , 3601,-0.5,3600.5,
"TimeMonitoring");
2984 histos->fill1DHist(tmbHead->
ALCTMatchTime(),
"TMB_ALCTMatchTime",
"TMB_ALCTMatchTime", 7,-0.5,6.5,
"TimeMonitoring");
2986 histos->fill1DHistByType(tmbHead->
ALCTMatchTime(),
"TMB_ALCTMatchTime",
"TMB_ALCTMatchTime",layer.
chamberId(), 7,-0.5,6.5,
"TimeMonitoring");
2988 histos->fillProfile( chamberSerial(layer.
chamberId()),tmbHead->
ALCTMatchTime(),
"prof_TMB_ALCTMatchTime",
"prof_TMB_ALCTMatchTime", 601,-0.5,600.5,-0.5,7.5,
"TimeMonitoring");
2989 histos->fillProfile(ALCT0Key,tmbHead->
ALCTMatchTime(),
"prof_TMB_ALCTMatchTime_v_ALCT0KeyWG",
"prof_TMB_ALCTMatchTime_v_ALCT0KeyWG",128,-0.5,127.5,0,7,
"TimeMonitoring");
2990 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");
2995 if (TMB_ALCT_rel_L1A > 3563)
2996 TMB_ALCT_rel_L1A = TMB_ALCT_rel_L1A - 3564;
2997 if (TMB_ALCT_rel_L1A < 0)
2998 TMB_ALCT_rel_L1A = TMB_ALCT_rel_L1A + 3564;
3001 histos->fill1DHist(TMB_ALCT_rel_L1A,
"h1D_TMB_ALCT_rel_L1A",
"h1D_TMB_ALCT_rel_L1A",11,144.5,155.5,
"TimeMonitoring");
3002 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");
3003 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");
3004 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");
3005 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");
3007 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");
3008 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");
3009 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");
3015 if (examiner!=
NULL)
delete examiner;
3024 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)
void analyze(const edm::Event &event, const edm::EventSetup &eventSetup)
Perform the analysis.
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.
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)
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
T x() const
Cartesian x coordinate.
void doCompTiming(const CSCComparatorDigiCollection &)
LocalPoint localPosition() const
LocalVector localDirection() const
Local direction.
void doPedestalNoise(edm::Handle< CSCStripDigiCollection > strips)
int dbIndex(const CSCDetId &id, int &channel)
const CSCChamberSpecs * specs() const
void doStripDigis(edm::Handle< CSCStripDigiCollection > strips)
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)
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")
How EventSelector::AcceptEvent() decides whether to accept an event for output otherwise it is excluding the probing of A single or multiple positive and the trigger will pass if any such matching triggers are PASS or EXCEPTION[A criterion thatmatches no triggers at all is detected and causes a throw.] A single negative with an expectation of appropriate bit checking in the decision and the trigger will pass if any such matching triggers are FAIL or EXCEPTION A wildcarded negative criterion that matches more than one trigger in the trigger but the state exists so we define the behavior If all triggers are the negative crieriion will lead to accepting the event(this again matches the behavior of"!*"before the partial wildcard feature was incorporated).The per-event"cost"of each negative criterion with multiple relevant triggers is about the same as!*was in the past
void doSimHits(edm::Handle< CSCRecHit2DCollection > recHits, edm::Handle< edm::PSimHitContainer > simHits)
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)
T const * product() const
std::vector< CSCWireDigi >::const_iterator const_iterator
double S(const TLorentzVector &, const TLorentzVector &)
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
void doStandalone(edm::Handle< reco::TrackCollection > saMuons)
int chamberSerial(CSCDetId id)
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)
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)
virtual ~CSCValidation()
Destructor.
Power< A, B >::type pow(const A &a, const B &b)
TrackingRecHitCollection::base::const_iterator trackingRecHit_iterator
iterator over a vector of reference to TrackingRecHit in the same collection
void doCalibrations(const edm::EventSetup &eventSetup)