90 hOWires =
new TH2I(
"hOWires",
"Wire Digi Occupancy",36,0.5,36.5,20,0.5,20.5);
91 hOStrips =
new TH2I(
"hOStrips",
"Strip Digi Occupancy",36,0.5,36.5,20,0.5,20.5);
92 hORecHits =
new TH2I(
"hORecHits",
"RecHit Occupancy",36,0.5,36.5,20,0.5,20.5);
93 hOSegments =
new TH2I(
"hOSegments",
"Segments Occupancy",36,0.5,36.5,20,0.5,20.5);
96 hSSTE =
new TH1F(
"hSSTE",
"hSSTE",40,0,40);
97 hRHSTE =
new TH1F(
"hRHSTE",
"hRHSTE",40,0,40);
98 hSEff =
new TH1F(
"hSEff",
"Segment Efficiency",20,0.5,20.5);
99 hRHEff =
new TH1F(
"hRHEff",
"recHit Efficiency",20,0.5,20.5);
101 const int nChambers = 36;
102 const int nTypes = 18;
104 float nCh_max = float(nChambers) + 0.5;
106 float nT_max = float(nTypes) + 0.5;
108 hSSTE2 =
new TH2F(
"hSSTE2",
"hSSTE2",nChambers,nCH_min,nCh_max, nTypes, nT_min, nT_max);
109 hRHSTE2 =
new TH2F(
"hRHSTE2",
"hRHSTE2",nChambers,nCH_min,nCh_max, nTypes, nT_min, nT_max);
110 hStripSTE2 =
new TH2F(
"hStripSTE2",
"hStripSTE2",nChambers,nCH_min,nCh_max, nTypes, nT_min, nT_max);
111 hWireSTE2 =
new TH2F(
"hWireSTE2",
"hWireSTE2",nChambers,nCH_min,nCh_max, nTypes, nT_min, nT_max);
114 hEffDenominator =
new TH2F(
"hEffDenominator",
"hEffDenominator",nChambers,nCH_min,nCh_max, nTypes, nT_min, nT_max);
115 hSEff2 =
new TH2F(
"hSEff2",
"Segment Efficiency 2D",nChambers,nCH_min,nCh_max, nTypes, nT_min, nT_max);
116 hRHEff2 =
new TH2F(
"hRHEff2",
"recHit Efficiency 2D",nChambers,nCH_min,nCh_max, nTypes, nT_min, nT_max);
118 hStripEff2 =
new TH2F(
"hStripEff2",
"strip Efficiency 2D",nChambers,nCH_min,nCh_max, nTypes, nT_min, nT_max);
119 hWireEff2 =
new TH2F(
"hWireEff2",
"wire Efficiency 2D",nChambers,nCH_min,nCh_max, nTypes, nT_min, nT_max);
121 hSensitiveAreaEvt =
new TH2F(
"hSensitiveAreaEvt",
"events in sensitive area",nChambers,nCH_min,nCh_max, nTypes, nT_min, nT_max);
124 if (writeTreeToFile)
histos->setupTrees();
135 histoEfficiency(hRHSTE,hRHEff);
136 histoEfficiency(hSSTE,hSEff);
137 hSEff2->Divide(hSSTE2,hEffDenominator,1.,1.,
"B");
138 hRHEff2->Divide(hRHSTE2,hEffDenominator,1.,1.,
"B");
139 hStripEff2->Divide(hStripSTE2,hEffDenominator,1.,1.,
"B");
140 hWireEff2->Divide(hWireSTE2,hEffDenominator,1.,1.,
"B");
142 histos->insertPlot(hRHSTE,
"hRHSTE",
"Efficiency");
143 histos->insertPlot(hSSTE,
"hSSTE",
"Efficiency");
144 histos->insertPlot(hSSTE2,
"hSSTE2",
"Efficiency");
145 histos->insertPlot(hEffDenominator,
"hEffDenominator",
"Efficiency");
146 histos->insertPlot(hRHSTE2,
"hRHSTE2",
"Efficiency");
147 histos->insertPlot(hStripSTE2,
"hStripSTE2",
"Efficiency");
148 histos->insertPlot(hWireSTE2,
"hWireSTE2",
"Efficiency");
151 histos->insertPlot(hSEff,
"hSEff",
"Efficiency");
152 histos->insertPlot(hRHEff,
"hRHEff",
"Efficiency");
154 histos->insertPlot(hSEff2,
"hSEff2",
"Efficiency");
155 histos->insertPlot(hRHEff2,
"hRHEff2",
"Efficiency");
156 histos->insertPlot(hStripEff2,
"hStripff2",
"Efficiency");
157 histos->insertPlot(hWireEff2,
"hWireff2",
"Efficiency");
159 histos->insertPlot(hSensitiveAreaEvt,
"",
"Efficiency");
162 histos->insertPlot(hOWires,
"hOWires",
"Digis");
163 histos->insertPlot(hOStrips,
"hOStrips",
"Digis");
164 histos->insertPlot(hORecHits,
"hORecHits",
"recHits");
165 histos->insertPlot(hOSegments,
"hOSegments",
"Segments");
194 event.getByLabel(stripDigiTag,strips);
195 event.getByLabel(wireDigiTag,wires);
196 event.getByLabel(compDigiTag,compars);
197 event.getByLabel(alctDigiTag, alcts);
198 event.getByLabel(clctDigiTag, clcts);
199 event.getByLabel(corrlctDigiTag, correlatedlcts);
208 event.getByLabel(cscRecHitTag,recHits);
212 if (isSimulation)
event.getByLabel(simHitTag, simHits);
216 event.getByLabel(cscSegTag, cscSegments);
220 if (makeTriggerPlots || useTriggerFilter || (useDigis && makeTimeMonitorPlots)){
221 event.getByLabel(l1aTag,pCollection);
224 if (makeHLTPlots)
event.getByLabel(hltTag,hlt);
228 if (makeStandalonePlots || useQualityFilter)
event.getByLabel(saMuonTag,saMuons);
238 if (nEventsAnalyzed == 1 && makeCalibPlots) doCalibrations(eventSetup);
242 if (makeTriggerPlots || useTriggerFilter) CSCL1A = doTrigger(pCollection);
243 if (!useTriggerFilter) CSCL1A =
true;
246 if (makeStandalonePlots || useQualityFilter) cleanEvent = filterEvents(recHits,cscSegments,saMuons);
247 if (!useQualityFilter) cleanEvent =
true;
251 if (makeOccupancyPlots && CSCL1A) doOccupancies(strips,wires,recHits,cscSegments);
254 if (makeHLTPlots) HLT = doHLT(hlt);
256 if (cleanEvent && CSCL1A){
258 if (makeStripPlots && useDigis) doStripDigis(strips);
261 if (makeWirePlots && useDigis) doWireDigis(wires);
264 if (makeRecHitPlots) doRecHits(recHits,cscGeom);
267 if (isSimulation && makeSimHitPlots) doSimHits(recHits,simHits);
270 if (makeSegmentPlots) doSegments(cscSegments,cscGeom);
273 if (makeResolutionPlots) doResolution(cscSegments,cscGeom);
276 if (makePedNoisePlots && useDigis) doPedestalNoise(strips);
279 if (makeEfficiencyPlots) doEfficiencies(wires,strips, recHits, cscSegments,cscGeom);
282 if (makeGasGainPlots && useDigis) doGasGain(*wires,*strips,*recHits);
285 if (makeAFEBTimingPlots && useDigis) doAFEBTiming(*wires);
288 if (makeCompTimingPlots && useDigis) doCompTiming(*compars);
291 if (makeADCTimingPlots) doADCTiming(*recHits);
294 if (makeRHNoisePlots && useDigis) doNoiseHits(recHits,cscSegments,cscGeom,strips);
297 if (makeStandalonePlots) doStandalone(saMuons);
300 if (makeTimeMonitorPlots) doTimeMonitoring(recHits,cscSegments, alcts, clcts, correlatedlcts, pCollection,cscGeom, eventSetup, event);
319 if (recHits->size() < 4 || recHits->size() > 100)
return false;
320 if (cscSegments->size() < 1 || cscSegments->size() > 15)
return false;
396 bool wireo[2][4][4][36];
397 bool stripo[2][4][4][36];
398 bool rechito[2][4][4][36];
399 bool segmento[2][4][4][36];
401 bool hasWires =
false;
402 bool hasStrips =
false;
403 bool hasRecHits =
false;
404 bool hasSegments =
false;
406 for (
int e = 0; e < 2; e++){
407 for (
int s = 0;
s < 4;
s++){
408 for (
int r = 0;
r < 4;
r++){
409 for (
int c = 0;
c < 36;
c++){
410 wireo[e][
s][
r][
c] =
false;
411 stripo[e][
s][
r][
c] =
false;
412 rechito[e][
s][
r][
c] =
false;
413 segmento[e][
s][
r][
c] =
false;
423 int kEndcap =
id.
endcap();
424 int kRing =
id.ring();
425 int kStation =
id.station();
426 int kChamber =
id.chamber();
427 std::vector<CSCWireDigi>::const_iterator wireIt = (*wi).second.first;
428 std::vector<CSCWireDigi>::const_iterator lastWire = (*wi).second.second;
429 for( ; wireIt != lastWire; ++wireIt){
430 if (!wireo[kEndcap-1][kStation-1][kRing-1][kChamber-1]){
431 wireo[kEndcap-1][kStation-1][kRing-1][kChamber-1] =
true;
432 hOWires->Fill(kChamber,typeIndex(
id));
433 histos->fill1DHist(chamberSerial(
id),
"hOWireSerial",
"Wire Occupancy by Chamber Serial",601,-0.5,600.5,
"Digis");
442 int kEndcap =
id.
endcap();
443 int kRing =
id.ring();
444 int kStation =
id.station();
445 int kChamber =
id.chamber();
446 std::vector<CSCStripDigi>::const_iterator stripIt = (*si).second.first;
447 std::vector<CSCStripDigi>::const_iterator lastStrip = (*si).second.second;
448 for( ; stripIt != lastStrip; ++stripIt) {
449 std::vector<int> myADCVals = stripIt->getADCCounts();
450 bool thisStripFired =
false;
451 float thisPedestal = 0.5*(float)(myADCVals[0]+myADCVals[1]);
454 for (
unsigned int iCount = 0; iCount < myADCVals.size(); iCount++) {
455 diff = (float)myADCVals[iCount]-thisPedestal;
456 if (diff > threshold) { thisStripFired =
true; }
458 if (thisStripFired) {
459 if (!stripo[kEndcap-1][kStation-1][kRing-1][kChamber-1]){
460 stripo[kEndcap-1][kStation-1][kRing-1][kChamber-1] =
true;
461 hOStrips->Fill(kChamber,typeIndex(
id));
462 histos->fill1DHist(chamberSerial(
id),
"hOStripSerial",
"Strip Occupancy by Chamber Serial",601,-0.5,600.5,
"Digis");
472 for (recIt = recHits->begin(); recIt != recHits->end(); recIt++) {
474 int kEndcap = idrec.
endcap();
475 int kRing = idrec.
ring();
476 int kStation = idrec.
station();
477 int kChamber = idrec.
chamber();
478 if (!rechito[kEndcap-1][kStation-1][kRing-1][kChamber-1]){
479 rechito[kEndcap-1][kStation-1][kRing-1][kChamber-1] =
true;
480 histos->fill1DHist(chamberSerial(idrec),
"hORecHitsSerial",
"RecHit Occupancy by Chamber Serial",601,-0.5,600.5,
"recHits");
481 hORecHits->Fill(kChamber,typeIndex(idrec));
489 int kEndcap =
id.
endcap();
490 int kRing =
id.ring();
491 int kStation =
id.station();
492 int kChamber =
id.chamber();
493 if (!segmento[kEndcap-1][kStation-1][kRing-1][kChamber-1]){
494 segmento[kEndcap-1][kStation-1][kRing-1][kChamber-1] =
true;
495 histos->fill1DHist(chamberSerial(
id),
"hOSegmentsSerial",
"Segment Occupancy by Chamber Serial",601,-0.5,600.5,
"Segments");
496 hOSegments->Fill(kChamber,typeIndex(
id));
502 histos->fill1DHist(1,
"hCSCOccupancy",
"overall CSC occupancy",15,-0.5,14.5,
"GeneralHists");
503 if (hasWires)
histos->fill1DHist(3,
"hCSCOccupancy",
"overall CSC occupancy",15,-0.5,14.5,
"GeneralHists");
504 if (hasStrips)
histos->fill1DHist(5,
"hCSCOccupancy",
"overall CSC occupancy",15,-0.5,14.5,
"GeneralHists");
505 if (hasWires && hasStrips)
histos->fill1DHist(7,
"hCSCOccupancy",
"overall CSC occupancy",15,-0.5,14.5,
"GeneralHists");
506 if (hasRecHits)
histos->fill1DHist(9,
"hCSCOccupancy",
"overall CSC occupancy",15,-0.5,14.5,
"GeneralHists");
507 if (hasSegments)
histos->fill1DHist(11,
"hCSCOccupancy",
"overall CSC occupancy",15,-0.5,14.5,
"GeneralHists");
508 if (!cleanEvent)
histos->fill1DHist(13,
"hCSCOccupancy",
"overall CSC occupancy",15,-0.5,14.5,
"GeneralHists");
520 std::vector<L1MuGMTReadoutRecord> L1Mrec = pCollection->getRecords();
521 std::vector<L1MuGMTReadoutRecord>::const_iterator igmtrr;
523 bool csc_l1a =
false;
525 bool rpcf_l1a =
false;
526 bool rpcb_l1a =
false;
527 bool beamHaloTrigger =
false;
529 int myBXNumber = -1000;
531 for(igmtrr=L1Mrec.begin(); igmtrr!=L1Mrec.end(); igmtrr++) {
532 std::vector<L1MuRegionalCand>::const_iterator iter1;
533 std::vector<L1MuRegionalCand> rmc;
537 rmc = igmtrr->getCSCCands();
538 for(iter1=rmc.begin(); iter1!=rmc.end(); iter1++) {
539 if ( !(*iter1).empty() ) {
541 int kQuality = (*iter1).quality();
542 if (kQuality == 1) beamHaloTrigger =
true;
545 if (igmtrr->getBxInEvent() == 0 && icsc>0) csc_l1a =
true;
546 if (igmtrr->getBxInEvent() == 0 ) { myBXNumber = igmtrr->getBxNr(); }
550 rmc = igmtrr->getDTBXCands();
551 for(iter1=rmc.begin(); iter1!=rmc.end(); iter1++) {
552 if ( !(*iter1).empty() ) {
556 if(igmtrr->getBxInEvent()==0 && idt>0) dt_l1a =
true;
560 rmc = igmtrr->getBrlRPCCands();
561 for(iter1=rmc.begin(); iter1!=rmc.end(); iter1++) {
562 if ( !(*iter1).empty() ) {
566 if(igmtrr->getBxInEvent()==0 && irpcb>0) rpcb_l1a =
true;
570 rmc = igmtrr->getFwdRPCCands();
571 for(iter1=rmc.begin(); iter1!=rmc.end(); iter1++) {
572 if ( !(*iter1).empty() ) {
576 if(igmtrr->getBxInEvent()==0 && irpcf>0) rpcf_l1a =
true;
581 if (csc_l1a)
histos->fill1DHist(myBXNumber,
"vtBXNumber",
"BX Number",4001,-0.5,4000.5,
"Trigger");
582 if (csc_l1a)
histos->fill1DHist(1,
"vtBits",
"trigger bits",11,-0.5,10.5,
"Trigger");
583 if (dt_l1a)
histos->fill1DHist(2,
"vtBits",
"trigger bits",11,-0.5,10.5,
"Trigger");
584 if (rpcb_l1a)
histos->fill1DHist(3,
"vtBits",
"trigger bits",11,-0.5,10.5,
"Trigger");
585 if (rpcf_l1a)
histos->fill1DHist(4,
"vtBits",
"trigger bits",11,-0.5,10.5,
"Trigger");
586 if (beamHaloTrigger)
histos->fill1DHist(8,
"vtBits",
"trigger bits",11,-0.5,10.5,
"Trigger");
589 histos->fill1DHist(1,
"vtCSCY",
"trigger bits",11,-0.5,10.5,
"Trigger");
590 if (dt_l1a)
histos->fill1DHist(2,
"vtCSCY",
"trigger bits",11,-0.5,10.5,
"Trigger");
591 if (rpcb_l1a)
histos->fill1DHist(3,
"vtCSCY",
"trigger bits",11,-0.5,10.5,
"Trigger");
592 if (rpcf_l1a)
histos->fill1DHist(4,
"vtCSCY",
"trigger bits",11,-0.5,10.5,
"Trigger");
593 if ( dt_l1a || rpcb_l1a || rpcf_l1a)
histos->fill1DHist(5,
"vtCSCY",
"trigger bits",11,-0.5,10.5,
"Trigger");
594 if (!(dt_l1a || rpcb_l1a || rpcf_l1a))
histos->fill1DHist(6,
"vtCSCY",
"trigger bits",11,-0.5,10.5,
"Trigger");
596 histos->fill1DHist(1,
"vtCSCN",
"trigger bits",11,-0.5,10.5,
"Trigger");
597 if (dt_l1a)
histos->fill1DHist(2,
"vtCSCN",
"trigger bits",11,-0.5,10.5,
"Trigger");
598 if (rpcb_l1a)
histos->fill1DHist(3,
"vtCSCN",
"trigger bits",11,-0.5,10.5,
"Trigger");
599 if (rpcf_l1a)
histos->fill1DHist(4,
"vtCSCN",
"trigger bits",11,-0.5,10.5,
"Trigger");
600 if ( dt_l1a || rpcb_l1a || rpcf_l1a)
histos->fill1DHist(5,
"vtCSCN",
"trigger bits",11,-0.5,10.5,
"Trigger");
601 if (!(dt_l1a || rpcb_l1a || rpcf_l1a))
histos->fill1DHist(6,
"vtCSCN",
"trigger bits",11,-0.5,10.5,
"Trigger");
606 if (csc_l1a)
return true;
621 int hltSize = hlt->size();
622 for (
int i = 0;
i < hltSize; ++
i){
623 if (hlt->accept(
i))
histos->fill1DHist(
i,
"hltBits",
"HLT Trigger Bits",hltSize+1,-0.5,(
float)hltSize+0.5,
"Trigger");
639 if (nEventsAnalyzed == 1){
641 LogDebug(
"Calibrations") <<
"Loading Calibrations...";
660 LogDebug(
"Calibrations") <<
"Calibrations Loaded!";
662 for (
int i = 0;
i < 400;
i++){
664 histos->fillCalibHist(pGains->
gains[
i].gain_slope,
"hCalibGainsS",
"Gains Slope",400,0,400,bin,
"Calib");
665 histos->fillCalibHist(pCrosstalk->
crosstalk[
i].xtalk_slope_left,
"hCalibXtalkSL",
"Xtalk Slope Left",400,0,400,bin,
"Calib");
666 histos->fillCalibHist(pCrosstalk->
crosstalk[
i].xtalk_slope_right,
"hCalibXtalkSR",
"Xtalk Slope Right",400,0,400,bin,
"Calib");
667 histos->fillCalibHist(pCrosstalk->
crosstalk[
i].xtalk_intercept_left,
"hCalibXtalkIL",
"Xtalk Intercept Left",400,0,400,bin,
"Calib");
668 histos->fillCalibHist(pCrosstalk->
crosstalk[
i].xtalk_intercept_right,
"hCalibXtalkIR",
"Xtalk Intercept Right",400,0,400,bin,
"Calib");
669 histos->fillCalibHist(pPedestals->
pedestals[
i].ped,
"hCalibPedsP",
"Peds",400,0,400,bin,
"Calib");
670 histos->fillCalibHist(pPedestals->
pedestals[
i].rms,
"hCalibPedsR",
"Peds RMS",400,0,400,bin,
"Calib");
671 histos->fillCalibHist(pNoiseMatrix->
matrix[
i].elem33,
"hCalibNoise33",
"Noise Matrix 33",400,0,400,bin,
"Calib");
672 histos->fillCalibHist(pNoiseMatrix->
matrix[
i].elem34,
"hCalibNoise34",
"Noise Matrix 34",400,0,400,bin,
"Calib");
673 histos->fillCalibHist(pNoiseMatrix->
matrix[
i].elem35,
"hCalibNoise35",
"Noise Matrix 35",400,0,400,bin,
"Calib");
674 histos->fillCalibHist(pNoiseMatrix->
matrix[
i].elem44,
"hCalibNoise44",
"Noise Matrix 44",400,0,400,bin,
"Calib");
675 histos->fillCalibHist(pNoiseMatrix->
matrix[
i].elem45,
"hCalibNoise45",
"Noise Matrix 45",400,0,400,bin,
"Calib");
676 histos->fillCalibHist(pNoiseMatrix->
matrix[
i].elem46,
"hCalibNoise46",
"Noise Matrix 46",400,0,400,bin,
"Calib");
677 histos->fillCalibHist(pNoiseMatrix->
matrix[
i].elem55,
"hCalibNoise55",
"Noise Matrix 55",400,0,400,bin,
"Calib");
678 histos->fillCalibHist(pNoiseMatrix->
matrix[
i].elem56,
"hCalibNoise56",
"Noise Matrix 56",400,0,400,bin,
"Calib");
679 histos->fillCalibHist(pNoiseMatrix->
matrix[
i].elem57,
"hCalibNoise57",
"Noise Matrix 57",400,0,400,bin,
"Calib");
680 histos->fillCalibHist(pNoiseMatrix->
matrix[
i].elem66,
"hCalibNoise66",
"Noise Matrix 66",400,0,400,bin,
"Calib");
681 histos->fillCalibHist(pNoiseMatrix->
matrix[
i].elem67,
"hCalibNoise67",
"Noise Matrix 67",400,0,400,bin,
"Calib");
682 histos->fillCalibHist(pNoiseMatrix->
matrix[
i].elem77,
"hCalibNoise77",
"Noise Matrix 77",400,0,400,bin,
"Calib");
701 int nWireGroupsTotal = 0;
704 std::vector<CSCWireDigi>::const_iterator wireIter = (*dWDiter).second.first;
705 std::vector<CSCWireDigi>::const_iterator lWire = (*dWDiter).second.second;
706 for( ; wireIter != lWire; ++wireIter) {
707 int myWire = wireIter->getWireGroup();
708 int myTBin = wireIter->getTimeBin();
710 histos->fill1DHistByType(myWire,
"hWireWire",
"Wiregroup Numbers Fired",
id,113,-0.5,112.5,
"Digis");
711 histos->fill1DHistByType(myTBin,
"hWireTBin",
"Wire TimeBin Fired",
id,17,-0.5,16.5,
"Digis");
712 histos->fillProfile(chamberSerial(
id),myTBin,
"hWireTBinProfile",
"Wire TimeBin Fired",601,-0.5,600.5,-0.5,16.5,
"Digis");
713 if (detailedAnalysis){
714 histos->fill1DHistByLayer(myWire,
"hWireWire",
"Wiregroup Numbers Fired",
id,113,-0.5,112.5,
"WireNumberByLayer");
715 histos->fill1DHistByLayer(myTBin,
"hWireTBin",
"Wire TimeBin Fired",
id,17,-0.5,16.5,
"WireTimeByLayer");
721 if (nWireGroupsTotal == 0) nWireGroupsTotal = -1;
723 histos->fill1DHist(nWireGroupsTotal,
"hWirenGroupsTotal",
"Wires Fired Per Event",151,-0.5,150.5,
"Digis");
735 int nStripsFired = 0;
738 std::vector<CSCStripDigi>::const_iterator stripIter = (*dSDiter).second.first;
739 std::vector<CSCStripDigi>::const_iterator lStrip = (*dSDiter).second.second;
740 for( ; stripIter != lStrip; ++stripIter) {
741 int myStrip = stripIter->getStrip();
742 std::vector<int> myADCVals = stripIter->getADCCounts();
743 bool thisStripFired =
false;
744 float thisPedestal = 0.5*(float)(myADCVals[0]+myADCVals[1]);
747 for (
unsigned int iCount = 0; iCount < myADCVals.size(); iCount++) {
748 diff = (float)myADCVals[iCount]-thisPedestal;
749 if (diff > threshold) { thisStripFired =
true; }
751 if (thisStripFired) {
754 histos->fill1DHistByType(myStrip,
"hStripStrip",
"Strip Number",
id,81,-0.5,80.5,
"Digis");
755 if (detailedAnalysis){
756 histos->fill1DHistByLayer(myStrip,
"hStripStrip",
"Strip Number",
id,81,-0.5,80.5,
"StripNumberByLayer");
762 if (nStripsFired == 0) nStripsFired = -1;
764 histos->fill1DHist(nStripsFired,
"hStripNFired",
"Fired Strips per Event",251,-0.5,250.5,
"Digis");
778 std::vector<CSCStripDigi>::const_iterator pedIt = (*dPNiter).second.first;
779 std::vector<CSCStripDigi>::const_iterator lStrip = (*dPNiter).second.second;
780 for( ; pedIt != lStrip; ++pedIt) {
781 int myStrip = pedIt->getStrip();
782 std::vector<int> myADCVals = pedIt->getADCCounts();
783 float TotalADC = getSignal(*strips,
id, myStrip);
784 bool thisStripFired =
false;
785 float thisPedestal = 0.5*(float)(myADCVals[0]+myADCVals[1]);
786 float thisSignal = (1./6)*(myADCVals[2]+myADCVals[3]+myADCVals[4]+myADCVals[5]+myADCVals[6]+myADCVals[7]);
788 if(
id.
station() == 1 &&
id.ring() == 4)
790 if(myStrip <= 16) myStrip += 64;
792 if (TotalADC > threshold) { thisStripFired =
true;}
793 if (!thisStripFired){
794 float ADC = thisSignal - thisPedestal;
795 histos->fill1DHist(ADC,
"hStripPed",
"Pedestal Noise Distribution",50,-25.,25.,
"PedestalNoise");
796 histos->fill1DHistByType(ADC,
"hStripPedME",
"Pedestal Noise Distribution",
id,50,-25.,25.,
"PedestalNoise");
797 histos->fillProfile(chamberSerial(
id),ADC,
"hStripPedMEProfile",
"Wire TimeBin Fired",601,-0.5,600.5,-25,25,
"PedestalNoise");
798 if (detailedAnalysis){
799 histos->fill1DHistByLayer(ADC,
"hStripPedME",
"Pedestal Noise Distribution",
id,50,-25.,25.,
"PedestalNoiseByLayer");
817 int nRecHits = recHits->size();
826 for (dRHIter = recHits->begin(); dRHIter != recHits->end(); dRHIter++) {
831 int kEndcap = idrec.
endcap();
832 int kRing = idrec.
ring();
833 int kStation = idrec.
station();
834 int kChamber = idrec.
chamber();
838 LocalPoint rhitlocal = (*dRHIter).localPosition();
839 float xreco = rhitlocal.
x();
840 float yreco = rhitlocal.
y();
841 LocalError rerrlocal = (*dRHIter).localPositionError();
843 float xxerr = rerrlocal.
xx();
844 float yyerr = rerrlocal.
yy();
845 float xyerr = rerrlocal.
xy();
847 float stpos = (*dRHIter).positionWithinStrip();
848 float sterr = (*dRHIter).errorWithinStrip();
852 int adcsize = adcs.
size();
855 for (
int i = 0;
i < adcsize;
i++){
856 if (
i != 3 &&
i != 7 &&
i != 11){
857 rHSumQ = rHSumQ + adcs[
i];
859 if (adcsize == 12 && (i < 3 || i > 7) &&
i < 11){
860 sumsides = sumsides + adcs[
i];
863 float rHratioQ = sumsides/rHSumQ;
864 if (adcsize != 12) rHratioQ = -99;
868 rHtime = (*dRHIter).tpeak()/50.;
871 const CSCLayer* csclayer = cscGeom->layer( idrec );
875 float grecx = rhitglobal.
x();
876 float grecy = rhitglobal.
y();
879 if (writeTreeToFile && rhTreeCount < 1500000){
880 histos->fillRechitTree(xreco, yreco, grecx, grecy, kEndcap, kStation, kRing, kChamber, kLayer);
886 histos->fill2DHistByStation(grecx,grecy,
"hRHGlobal",
"recHit Global Position",idrec,100,-800.,800.,100,-800.,800.,
"recHits");
887 if (kStation == 1 && (kRing == 1 || kRing == 4))
histos->fill1DHistByType(rHSumQ,
"hRHSumQ",
"Sum 3x3 recHit Charge",idrec,125,0,4000,
"recHits");
888 else histos->fill1DHistByType(rHSumQ,
"hRHSumQ",
"Sum 3x3 recHit Charge",idrec,125,0,2000,
"recHits");
889 histos->fill1DHistByType(rHratioQ,
"hRHRatioQ",
"Charge Ratio (Ql+Qr)/Qt",idrec,120,-0.1,1.1,
"recHits");
890 histos->fill1DHistByType(rHtime,
"hRHTiming",
"recHit Timing",idrec,200,-10,10,
"recHits");
891 histos->fill1DHistByType(
sqrt(xxerr),
"hRHxerr",
"RecHit Error on Local X",idrec,100,-0.1,2,
"recHits");
892 histos->fill1DHistByType(
sqrt(yyerr),
"hRHyerr",
"RecHit Error on Local Y",idrec,100,-0.1,2,
"recHits");
893 histos->fill1DHistByType(xyerr,
"hRHxyerr",
"Corr. RecHit XY Error",idrec,100,-1,2,
"recHits");
894 if (adcsize == 12)
histos->fill1DHistByType(stpos,
"hRHstpos",
"Reconstructed Position on Strip",idrec,120,-0.6,0.6,
"recHits");
895 histos->fill1DHistByType(sterr,
"hRHsterr",
"Estimated Error on Strip Measurement",idrec,120,-0.05,0.25,
"recHits");
896 histos->fillProfile(chamberSerial(idrec),rHSumQ,
"hRHSumQProfile",
"Sum 3x3 recHit Charge",601,-0.5,600.5,0,4000,
"recHits");
897 histos->fillProfile(chamberSerial(idrec),rHtime,
"hRHTimingProfile",
"recHit Timing",601,-0.5,600.5,-11,11,
"recHits");
898 if (detailedAnalysis){
899 if (kStation == 1 && (kRing == 1 || kRing == 4))
histos->fill1DHistByLayer(rHSumQ,
"hRHSumQ",
"Sum 3x3 recHit Charge",idrec,125,0,4000,
"RHQByLayer");
900 else histos->fill1DHistByLayer(rHSumQ,
"hRHSumQ",
"Sum 3x3 recHit Charge",idrec,125,0,2000,
"RHQByLayer");
901 histos->fill1DHistByLayer(rHratioQ,
"hRHRatioQ",
"Charge Ratio (Ql+Qr)/Qt",idrec,120,-0.1,1.1,
"RHQByLayer");
902 histos->fill1DHistByLayer(rHtime,
"hRHTiming",
"recHit Timing",idrec,200,-10,10,
"RHTimingByLayer");
903 histos->fill2DHistByLayer(xreco,yreco,
"hRHLocalXY",
"recHit Local Position",idrec,50,-100.,100.,75,-150.,150.,
"RHLocalXYByLayer");
904 histos->fill1DHistByLayer(
sqrt(xxerr),
"hRHxerr",
"RecHit Error on Local X",idrec,100,-0.1,2,
"RHErrorsByLayer");
905 histos->fill1DHistByLayer(
sqrt(yyerr),
"hRHyerr",
"RecHit Error on Local Y",idrec,100,-0.1,2,
"RHErrorsByLayer");
906 histos->fill1DHistByType(stpos,
"hRHstpos",
"Reconstructed Position on Strip",idrec,120,-0.6,0.6,
"RHStripPosByLayer");
907 histos->fill1DHistByType(sterr,
"hRHsterr",
"Estimated Error on Strip Measurement",idrec,120,-0.05,0.25,
"RHStripPosByLayer");
912 if (nRecHits == 0) nRecHits = -1;
914 histos->fill1DHist(nRecHits,
"hRHnrechits",
"recHits per Event (all chambers)",151,-0.5,150.5,
"recHits");
927 for (dSHrecIter = recHits->begin(); dSHrecIter != recHits->end(); dSHrecIter++) {
930 LocalPoint rhitlocal = (*dSHrecIter).localPosition();
931 float xreco = rhitlocal.
x();
932 float yreco = rhitlocal.
y();
933 float xError =
sqrt((*dSHrecIter).localPositionError().xx());
934 float yError =
sqrt((*dSHrecIter).localPositionError().yy());
935 float simHitXres = -99;
936 float simHitYres = -99;
942 PSimHitContainer::const_iterator dSHsimIter;
943 for (dSHsimIter = simHits->begin(); dSHsimIter != simHits->end(); dSHsimIter++){
948 if (sId == idrec &&
abs((*dSHsimIter).particleType()) == 13){
950 LocalPoint sHitlocal = (*dSHsimIter).localPosition();
953 if ((sHitlocal.
x() - xreco) < mindiffX && (sHitlocal.
y() - yreco) < mindiffY){
954 simHitXres = (sHitlocal.
x() - xreco);
955 simHitYres = (sHitlocal.
y() - yreco);
956 mindiffX = (sHitlocal.
x() - xreco);
957 xPull = simHitXres/xError;
958 yPull = simHitYres/yError;
963 histos->fill1DHistByType(simHitXres,
"hSimXResid",
"SimHitX - Reconstructed X",idrec,100,-1.0,1.0,
"Resolution");
964 histos->fill1DHistByType(simHitYres,
"hSimYResid",
"SimHitY - Reconstructed Y",idrec,100,-5.0,5.0,
"Resolution");
965 histos->fill1DHistByType(xPull,
"hSimXPull",
"Local X Pulls",idrec,100,-5.0,5.0,
"Resolution");
966 histos->fill1DHistByType(yPull,
"hSimYPull",
"Local Y Pulls",idrec,100,-5.0,5.0,
"Resolution");
981 int nSegments = cscSegments->size();
991 int kEndcap =
id.
endcap();
992 int kRing =
id.ring();
993 int kStation =
id.station();
994 int kChamber =
id.chamber();
997 float chisq = (*dSiter).chi2();
998 int nhits = (*dSiter).nRecHits();
999 int nDOF = 2*nhits-4;
1001 LocalPoint localPos = (*dSiter).localPosition();
1002 float segX = localPos.
x();
1003 float segY = localPos.
y();
1011 float globpPhi = 0.;
1013 float globTheta = 0.;
1015 const CSCChamber* cscchamber = cscGeom->chamber(
id);
1018 globX = globalPosition.
x();
1019 globY = globalPosition.
y();
1020 globZ = globalPosition.
z();
1021 globpPhi = globalPosition.
phi();
1022 globR =
sqrt(globX*globX + globY*globY);
1024 globTheta = globalDirection.
theta();
1025 globPhi = globalDirection.
phi();
1030 if (writeTreeToFile && segTreeCount < 1500000){
1031 histos->fillSegmentTree(segX, segY, globX, globY, kEndcap, kStation, kRing, kChamber);
1036 histos->fill2DHistByStation(globX,globY,
"hSGlobal",
"Segment Global Positions;global x (cm)",
id,100,-800.,800.,100,-800.,800.,
"Segments");
1037 histos->fill1DHistByType(nhits,
"hSnHits",
"N hits on Segments",
id,8,-0.5,7.5,
"Segments");
1038 histos->fill1DHistByType(theta,
"hSTheta",
"local theta segments",
id,128,-3.2,3.2,
"Segments");
1039 histos->fill1DHistByType((chisq/nDOF),
"hSChiSq",
"segments chi-squared/ndof",
id,110,-0.05,10.5,
"Segments");
1040 histos->fill1DHistByType(chisqProb,
"hSChiSqProb",
"segments chi-squared probability",
id,110,-0.05,1.05,
"Segments");
1041 histos->fill1DHist(globTheta,
"hSGlobalTheta",
"segment global theta",128,0,3.2,
"Segments");
1042 histos->fill1DHist(globPhi,
"hSGlobalPhi",
"segment global phi",128,-3.2,3.2,
"Segments");
1043 histos->fillProfile(chamberSerial(
id),nhits,
"hSnHitsProfile",
"N hits on Segments",601,-0.5,600.5,-0.5,7.5,
"Segments");
1044 if (detailedAnalysis){
1045 histos->fill1DHistByChamber(nhits,
"hSnHits",
"N hits on Segments",
id,8,-0.5,7.5,
"HitsOnSegmentByChamber");
1046 histos->fill1DHistByChamber(theta,
"hSTheta",
"local theta segments",
id,128,-3.2,3.2,
"DetailedSegments");
1047 histos->fill1DHistByChamber((chisq/nDOF),
"hSChiSq",
"segments chi-squared/ndof",
id,110,-0.05,10.5,
"SegChi2ByChamber");
1048 histos->fill1DHistByChamber(chisqProb,
"hSChiSqProb",
"segments chi-squared probability",
id,110,-0.05,1.05,
"SegChi2ByChamber");
1053 if (nSegments == 0) nSegments = -1;
1055 histos->fill1DHist(nSegments,
"hSnSegments",
"Segments per Event",31,-0.5,30.5,
"Segments");
1074 std::vector<CSCRecHit2D> theseRecHits = (*dSiter).specificRecHits();
1075 int nRH = (*dSiter).nRecHits();
1077 CLHEP::HepMatrix sp(6,1);
1078 CLHEP::HepMatrix se(6,1);
1079 for ( std::vector<CSCRecHit2D>::const_iterator iRH = theseRecHits.begin(); iRH != theseRecHits.end(); iRH++) {
1082 int kRing = idRH.
ring();
1083 int kStation = idRH.
station();
1088 int nStrips = hitstrips.size();
1089 int centerid = nStrips/2 + 1;
1090 int centerStrip = hitstrips[centerid - 1];
1094 float stpos = (*iRH).positionWithinStrip();
1095 se(kLayer,1) = (*iRH).errorWithinStrip();
1097 if (kStation == 1 && (kRing == 1 || kRing == 4)) sp(kLayer,1) = stpos + centerStrip;
1099 if (kLayer == 1 || kLayer == 3 || kLayer == 5) sp(kLayer,1) = stpos + centerStrip;
1100 if (kLayer == 2 || kLayer == 4 || kLayer == 6) sp(kLayer,1) = stpos - 0.5 + centerStrip;
1106 float residual = -99;
1110 float expected = fitX(sp,se);
1111 residual = expected - sp(3,1);
1112 pull = residual/se(3,1);
1116 histos->fill1DHistByType(residual,
"hSResid",
"Fitted Position on Strip - Reconstructed for Layer 3",
id,100,-0.5,0.5,
"Resolution");
1117 histos->fill1DHistByType(pull,
"hSStripPosPull",
"Strip Measurement Pulls",
id,100,-5.0,5.0,
"Resolution");
1118 histos->fillProfile(chamberSerial(
id),residual,
"hSResidProfile",
"Fitted Position on Strip - Reconstructed for Layer 3",601,-0.5,600.5,-0.5,0.5,
"Resolution");
1119 if (detailedAnalysis){
1120 histos->fill1DHistByChamber(residual,
"hSResid",
"Fitted Position on Strip - Reconstructed for Layer 3",
id,100,-0.5,0.5,
"DetailedResolution");
1121 histos->fill1DHistByChamber(pull,
"hSStripPosPull",
"Strip Measurement Pulls",
id,100,-5.0,5.0,
"Resolution");
1137 int nSAMuons = saMuons->size();
1138 histos->fill1DHist(nSAMuons,
"trNSAMuons",
"N Standalone Muons per Event",6,-0.5,5.5,
"STAMuons");
1140 for(reco::TrackCollection::const_iterator
muon = saMuons->begin();
muon != saMuons->end(); ++
muon ) {
1141 float preco =
muon->p();
1142 float ptreco =
muon->pt();
1143 int n =
muon->recHitsSize();
1144 float chi2 =
muon->chi2();
1145 float normchi2 =
muon->normalizedChi2();
1157 std::vector<CSCDetId> staChambers;
1159 const DetId detId( (*hit)->geographicalId() );
1164 if (rpcId.region() == 1){ nRPCHitsp++; np++;}
1165 if (rpcId.region() == -1){ nRPCHitsm++; nm++;}
1172 staChambers.push_back(detId.rawId());
1174 if (cscId.endcap() == 1){ nCSCHitsp++; np++;}
1175 if (cscId.endcap() == 2){ nCSCHitsm++; nm++;}
1185 double crudeLength = deltaPnt.
mag();
1186 double deltaPhi = innerPnt.phi() - outerPnt.phi();
1187 double innerGlobalPolarAngle = innerKin.theta();
1188 double outerGlobalPolarAngle = outerKin.theta();
1192 histos->fill1DHist(n,
"trN",
"N hits on a STA Muon Track",51,-0.5,50.5,
"STAMuons");
1193 if (np != 0)
histos->fill1DHist(np,
"trNp",
"N hits on a STA Muon Track (plus endcap)",51,-0.5,50.5,
"STAMuons");
1194 if (nm != 0)
histos->fill1DHist(nm,
"trNm",
"N hits on a STA Muon Track (minus endcap)",51,-0.5,50.5,
"STAMuons");
1195 histos->fill1DHist(nDTHits,
"trNDT",
"N DT hits on a STA Muon Track",51,-0.5,50.5,
"STAMuons");
1196 histos->fill1DHist(nCSCHits,
"trNCSC",
"N CSC hits on a STA Muon Track",51,-0.5,50.5,
"STAMuons");
1197 if (nCSCHitsp != 0)
histos->fill1DHist(nCSCHitsp,
"trNCSCp",
"N CSC hits on a STA Muon Track (+ endcap)",51,-0.5,50.5,
"STAMuons");
1198 if (nCSCHitsm != 0)
histos->fill1DHist(nCSCHitsm,
"trNCSCm",
"N CSC hits on a STA Muon Track (- endcap)",51,-0.5,50.5,
"STAMuons");
1199 histos->fill1DHist(nRPCHits,
"trNRPC",
"N RPC hits on a STA Muon Track",51,-0.5,50.5,
"STAMuons");
1200 if (nRPCHitsp != 0)
histos->fill1DHist(nRPCHitsp,
"trNRPCp",
"N RPC hits on a STA Muon Track (+ endcap)",51,-0.5,50.5,
"STAMuons");
1201 if (nRPCHitsm != 0)
histos->fill1DHist(nRPCHitsm,
"trNRPCm",
"N RPC hits on a STA Muon Track (- endcap)",51,-0.5,50.5,
"STAMuons");
1202 histos->fill1DHist(preco,
"trP",
"STA Muon Momentum",100,0,300,
"STAMuons");
1203 histos->fill1DHist(ptreco,
"trPT",
"STA Muon pT",100,0,40,
"STAMuons");
1204 histos->fill1DHist(chi2,
"trChi2",
"STA Muon Chi2",100,0,200,
"STAMuons");
1205 histos->fill1DHist(normchi2,
"trNormChi2",
"STA Muon Normalized Chi2",100,0,10,
"STAMuons");
1206 histos->fill1DHist(crudeLength,
"trLength",
"Straight Line Length of STA Muon",120,0.,2400.,
"STAMuons");
1207 histos->fill1DHist(deltaPhi,
"trDeltaPhi",
"Delta-Phi Between Inner and Outer STA Muon Pos.",100,-0.5,0.5,
"STAMuons");
1208 histos->fill1DHist(innerGlobalPolarAngle,
"trInnerPolar",
"Polar Angle of Inner P Vector (STA muons)",128,0,3.2,
"STAMuons");
1209 histos->fill1DHist(outerGlobalPolarAngle,
"trOuterPolar",
"Polar Angle of Outer P Vector (STA muons)",128,0,3.2,
"STAMuons");
1210 histos->fill1DHist(innerPnt.phi(),
"trInnerPhi",
"Phi of Inner Position (STA muons)",256,-3.2,3.2,
"STAMuons");
1211 histos->fill1DHist(outerPnt.phi(),
"trOuterPhi",
"Phi of Outer Position (STA muons)",256,-3.2,3.2,
"STAMuons");
1223 int st =
id.station();
1225 int ch =
id.chamber();
1226 int ec =
id.endcap();
1228 if (st == 1 && ri == 1) kSerial = ch;
1229 if (st == 1 && ri == 2) kSerial = ch + 36;
1230 if (st == 1 && ri == 3) kSerial = ch + 72;
1231 if (st == 1 && ri == 4) kSerial = ch;
1232 if (st == 2 && ri == 1) kSerial = ch + 108;
1233 if (st == 2 && ri == 2) kSerial = ch + 126;
1234 if (st == 3 && ri == 1) kSerial = ch + 162;
1235 if (st == 3 && ri == 2) kSerial = ch + 180;
1236 if (st == 4 && ri == 1) kSerial = ch + 216;
1237 if (st == 4 && ri == 2) kSerial = ch + 234;
1238 if (ec == 2) kSerial = kSerial + 300;
1247 int st =
id.station();
1249 int ec =
id.endcap();
1251 if (st == 1 && ri == 1) kSerial = ri;
1252 if (st == 1 && ri == 2) kSerial = ri ;
1253 if (st == 1 && ri == 3) kSerial = ri ;
1254 if (st == 1 && ri == 4) kSerial = 1;
1255 if (st == 2 ) kSerial = ri + 3;
1256 if (st == 3 ) kSerial = ri + 5;
1257 if (st == 4 ) kSerial = ri + 7;
1258 if (ec == 2) kSerial = kSerial * (-1);
1276 for (
int i=1;
i<7;
i++){
1280 Sy = Sy + (points(
i,1)/sigma2);
1281 Sx = Sx + ((
i)/sigma2);
1282 Sxx = Sxx + (
i*
i)/sigma2;
1283 Sxy = Sxy + (((
i)*points(
i,1))/sigma2);
1287 float delta = S*Sxx - Sx*Sx;
1288 float intercept = (Sxx*Sy - Sx*Sxy)/delta;
1289 float slope = (S*Sxy - Sx*Sy)/delta;
1300 return (intercept + slope*3);
1314 bool allWires[2][4][4][36][6];
1315 bool allStrips[2][4][4][36][6];
1316 bool AllRecHits[2][4][4][36][6];
1317 bool AllSegments[2][4][4][36];
1320 for(
int iE = 0;iE<2;iE++){
1321 for(
int iS = 0;iS<4;iS++){
1322 for(
int iR = 0; iR<4;iR++){
1323 for(
int iC =0;iC<36;iC++){
1324 AllSegments[iE][iS][iR][iC] =
false;
1326 for(
int iL=0;iL<6;iL++){
1327 allWires[iE][iS][iR][iC][iL] =
false;
1328 allStrips[iE][iS][iR][iC][iL] =
false;
1329 AllRecHits[iE][iS][iR][iC][iL] =
false;
1340 std::vector<CSCWireDigi>::const_iterator wireIter = (*dWDiter).second.first;
1341 std::vector<CSCWireDigi>::const_iterator lWire = (*dWDiter).second.second;
1342 for( ; wireIter != lWire; ++wireIter) {
1351 std::vector<CSCStripDigi>::const_iterator stripIter = (*dSDiter).second.first;
1352 std::vector<CSCStripDigi>::const_iterator lStrip = (*dSDiter).second.second;
1353 for( ; stripIter != lStrip; ++stripIter) {
1354 std::vector<int> myADCVals = stripIter->getADCCounts();
1355 bool thisStripFired =
false;
1356 float thisPedestal = 0.5*(float)(myADCVals[0]+myADCVals[1]);
1359 for (
unsigned int iCount = 0; iCount < myADCVals.size(); iCount++) {
1360 diff = (float)myADCVals[iCount]-thisPedestal;
1361 if (diff > threshold) {
1362 thisStripFired =
true;
1382 std::vector <unsigned int> seg_ME2(2,0) ;
1383 std::vector <unsigned int> seg_ME3(2,0) ;
1384 std::vector < std::pair <CSCDetId, CSCSegment> > theSegments(4);
1396 unsigned int seg_tmp ;
1398 ++seg_ME2[idseg.
endcap() -1];
1399 seg_tmp = seg_ME2[idseg.
endcap() -1];
1402 ++seg_ME3[idseg.
endcap() -1];
1403 seg_tmp = seg_ME3[idseg.
endcap() -1];
1406 if(1== seg_tmp&& 6==(*segEffIt).nRecHits() && (*segEffIt).chi2()/(*segEffIt).degreesOfFreedom()<3.){
1407 std::pair <CSCDetId, CSCSegment> specSeg = make_pair( (
CSCDetId)(*segEffIt).cscDetId(),*segEffIt);
1408 theSegments[2*(idseg.
endcap()-1)+(idseg.
station() -2)] = specSeg;
1430 for(
int iE = 0;iE<2;iE++){
1431 for(
int iS = 0;iS<4;iS++){
1432 for(
int iR = 0; iR<4;iR++){
1433 for(
int iC =0;iC<36;iC++){
1434 int NumberOfLayers = 0;
1435 for(
int iL=0;iL<6;iL++){
1436 if(AllRecHits[iE][iS][iR][iC][iL]){
1441 if (iS==0) bin = iR+1+(iE*10);
1442 else bin = (iS+1)*2 + (iR+1) + (iE*10);
1443 if(NumberOfLayers>1){
1445 if(AllSegments[iE][iS][iR][iC]){
1447 hSSTE->AddBinContent(bin);
1450 hSSTE->AddBinContent(20+bin);
1453 if(AllSegments[iE][iS][iR][iC]){
1454 if(NumberOfLayers==6){
1456 hRHSTE->AddBinContent(bin);;
1459 hRHSTE->AddBinContent(20+bin);;
1467 std::vector < std::pair <CSCDetId, CSCSegment> * > theSeg;
1468 if(1==seg_ME2[0]) theSeg.push_back(&theSegments[0]);
1469 if(1==seg_ME3[0]) theSeg.push_back(&theSegments[1]);
1470 if(1==seg_ME2[1]) theSeg.push_back(&theSegments[2]);
1471 if(1==seg_ME3[1]) theSeg.push_back(&theSegments[3]);
1476 std::map <std::string, float> chamberTypes;
1477 chamberTypes[
"ME1/a"] = 0.5;
1478 chamberTypes[
"ME1/b"] = 1.5;
1479 chamberTypes[
"ME1/2"] = 2.5;
1480 chamberTypes[
"ME1/3"] = 3.5;
1481 chamberTypes[
"ME2/1"] = 4.5;
1482 chamberTypes[
"ME2/2"] = 5.5;
1483 chamberTypes[
"ME3/1"] = 6.5;
1484 chamberTypes[
"ME3/2"] = 7.5;
1485 chamberTypes[
"ME4/1"] = 8.5;
1488 std::map <int , GlobalPoint> extrapolatedPoint;
1489 std::map <int , GlobalPoint>::iterator it;
1490 const std::vector<CSCChamber*> ChamberContainer = cscGeom->chambers();
1492 for(
size_t nCh=0;nCh<ChamberContainer.size();nCh++){
1493 const CSCChamber *cscchamber = ChamberContainer[nCh];
1494 std::pair <CSCDetId, CSCSegment> * thisSegment = 0;
1495 for(
size_t iSeg =0;iSeg<theSeg.size();++iSeg ){
1496 if(cscchamber->
id().
endcap() == theSeg[iSeg]->first.endcap()){
1498 if(2==theSeg[iSeg]->
first.station()){
1499 thisSegment = theSeg[iSeg];
1503 if(3==theSeg[iSeg]->
first.station()){
1504 thisSegment = theSeg[iSeg];
1512 const CSCChamber *segChamber = cscGeom->chamber(thisSegment->first);
1516 it = extrapolatedPoint.find(
int(cscchamberCenter.
z()));
1517 if(it==extrapolatedPoint.end()){
1520 double paramaterLine = lineParametrization(segPos.
z(),cscchamberCenter.
z() , segDir.
z());
1521 double xExtrapolated = extrapolate1D(segPos.
x(),segDir.
x(), paramaterLine);
1522 double yExtrapolated = extrapolate1D(segPos.
y(),segDir.
y(), paramaterLine);
1523 GlobalPoint globP (xExtrapolated, yExtrapolated, cscchamberCenter.
z());
1524 extrapolatedPoint[int(cscchamberCenter.
z())] = globP;
1527 LocalPoint extrapolatedPointLocal = cscchamber->
toLocal(extrapolatedPoint[
int(cscchamberCenter.
z())]);
1530 const std::vector<float> layerBounds = layerGeom->
parameters ();
1531 float shiftFromEdge = 15.;
1532 float shiftFromDeadZone = 10.;
1534 bool pass = withinSensitiveRegion(extrapolatedPointLocal, layerBounds,
1536 shiftFromEdge, shiftFromDeadZone);
1544 for(
int iL =0;iL<6;++iL){
1545 if(AllRecHits[cscchamber->
id().
endcap()-1]
1553 if(cscchamberCenter.
z()<0){
1554 verticalScale = - verticalScale;
1556 verticalScale +=9.5;
1557 hSensitiveAreaEvt->Fill(
float(cscchamber->
id().
chamber()),verticalScale);
1563 hEffDenominator->Fill(
float(cscchamber->
id().
chamber()),verticalScale);
1565 if(AllSegments[cscchamber->
id().
endcap()-1]
1568 hSSTE2->Fill(
float(cscchamber->
id().
chamber()),
float(verticalScale));
1571 for(
int iL =0;iL<6;++iL){
1575 if(AllRecHits[cscchamber->
id().
endcap()-1]
1578 hRHSTE2->Fill(
float(cscchamber->
id().
chamber()),
float(verticalScale),
weight);
1582 if(allWires[cscchamber->
id().
endcap()-1]
1586 hWireSTE2->Fill(
float(cscchamber->
id().
chamber()),
float(verticalScale),
weight);
1589 if(allStrips[cscchamber->
id().
endcap()-1]
1593 hStripSTE2->Fill(
float(cscchamber->
id().
chamber()),
float(verticalScale),
weight);
1609 float Efficiency = 0.;
1610 float EffError = 0.;
1611 if(fabs(Norm)>0.000000001){
1612 Efficiency = bin/Norm;
1614 EffError =
sqrt( (1.-Efficiency)*Efficiency/Norm );
1617 eff[0] = Efficiency;
1622 std::vector<float> eff(2);
1623 int Nbins = readHisto->GetSize()-2;
1624 std::vector<float> bins(Nbins);
1625 std::vector<float> Efficiency(Nbins);
1626 std::vector<float> EffError(Nbins);
1629 for (
int i=0;
i<20;
i++){
1630 Num = readHisto->GetBinContent(
i+1);
1631 Den = readHisto->GetBinContent(
i+21);
1632 getEfficiency(Num, Den, eff);
1633 Efficiency[
i] = eff[0];
1634 EffError[
i] = eff[1];
1635 writeHisto->SetBinContent(
i+1, Efficiency[
i]);
1636 writeHisto->SetBinError(i+1, EffError[i]);
1644 float y_center = 0.;
1645 double yUp = layerBounds[3] + y_center;
1646 double yDown = - layerBounds[3] + y_center;
1647 double xBound1Shifted = layerBounds[0] - shiftFromEdge;
1648 double xBound2Shifted = layerBounds[1] - shiftFromEdge;
1649 double lineSlope = (yUp - yDown)/(xBound2Shifted-xBound1Shifted);
1650 double lineConst = yUp - lineSlope*xBound2Shifted;
1651 double yBorder = lineSlope*
abs(localPos.
x()) + lineConst;
1654 std::vector <float> deadZoneCenter(6);
1655 float cutZone = shiftFromDeadZone;
1657 if(station>1 && station<5){
1659 deadZoneCenter[0]= -162.48 ;
1660 deadZoneCenter[1] = -81.8744;
1661 deadZoneCenter[2] = -21.18165;
1662 deadZoneCenter[3] = 39.51105;
1663 deadZoneCenter[4] = 100.2939;
1664 deadZoneCenter[5] = 160.58;
1666 if(localPos.
y() >yBorder &&
1667 ((localPos.
y()> deadZoneCenter[0] + cutZone && localPos.
y()< deadZoneCenter[1] - cutZone) ||
1668 (localPos.
y()> deadZoneCenter[1] + cutZone && localPos.
y()< deadZoneCenter[2] - cutZone) ||
1669 (localPos.
y()> deadZoneCenter[2] + cutZone && localPos.
y()< deadZoneCenter[3] - cutZone) ||
1670 (localPos.
y()> deadZoneCenter[3] + cutZone && localPos.
y()< deadZoneCenter[4] - cutZone) ||
1671 (localPos.
y()> deadZoneCenter[4] + cutZone && localPos.
y()< deadZoneCenter[5] - cutZone))){
1677 deadZoneCenter[0]= -95.80 ;
1678 deadZoneCenter[1] = -27.47;
1679 deadZoneCenter[2] = 33.67;
1680 deadZoneCenter[3] = 90.85;
1682 else if(3==station){
1683 deadZoneCenter[0]= -89.305 ;
1684 deadZoneCenter[1] = -39.705;
1685 deadZoneCenter[2] = 20.195;
1686 deadZoneCenter[3] = 77.395;
1688 else if(4==station){
1689 deadZoneCenter[0]= -75.645;
1690 deadZoneCenter[1] = -26.055;
1691 deadZoneCenter[2] = 23.855;
1692 deadZoneCenter[3] = 70.575;
1694 if(localPos.
y() >yBorder &&
1695 ((localPos.
y()> deadZoneCenter[0] + cutZone && localPos.
y()< deadZoneCenter[1] - cutZone) ||
1696 (localPos.
y()> deadZoneCenter[1] + cutZone && localPos.
y()< deadZoneCenter[2] - cutZone) ||
1697 (localPos.
y()> deadZoneCenter[2] + cutZone && localPos.
y()< deadZoneCenter[3] - cutZone))){
1702 else if(1==station){
1704 deadZoneCenter[0]= -83.155 ;
1705 deadZoneCenter[1] = -22.7401;
1706 deadZoneCenter[2] = 27.86665;
1707 deadZoneCenter[3] = 81.005;
1708 if(localPos.
y() > yBorder &&
1709 ((localPos.
y()> deadZoneCenter[0] + cutZone && localPos.
y()< deadZoneCenter[1] - cutZone) ||
1710 (localPos.
y()> deadZoneCenter[1] + cutZone && localPos.
y()< deadZoneCenter[2] - cutZone) ||
1711 (localPos.
y()> deadZoneCenter[2] + cutZone && localPos.
y()< deadZoneCenter[3] - cutZone))){
1716 deadZoneCenter[0]= -86.285 ;
1717 deadZoneCenter[1] = -32.88305;
1718 deadZoneCenter[2] = 32.867423;
1719 deadZoneCenter[3] = 88.205;
1720 if(localPos.
y() > (yBorder) &&
1721 ((localPos.
y()> deadZoneCenter[0] + cutZone && localPos.
y()< deadZoneCenter[1] - cutZone) ||
1722 (localPos.
y()> deadZoneCenter[1] + cutZone && localPos.
y()< deadZoneCenter[2] - cutZone) ||
1723 (localPos.
y()> deadZoneCenter[2] + cutZone && localPos.
y()< deadZoneCenter[3] - cutZone))){
1728 deadZoneCenter[0]= -81.0;
1729 deadZoneCenter[1] = 81.0;
1730 if(localPos.
y() > (yBorder) &&
1731 (localPos.
y()> deadZoneCenter[0] + cutZone && localPos.
y()< deadZoneCenter[1] - cutZone )){
1762 for (sIt = stripdigis.begin(); sIt != stripdigis.end(); sIt++){
1767 std::vector<CSCStripDigi>::const_iterator digiItr = (*sIt).second.first;
1768 std::vector<CSCStripDigi>::const_iterator
last = (*sIt).second.second;
1769 for ( ; digiItr !=
last; ++digiItr ) {
1770 int thisStrip = digiItr->getStrip();
1771 if (thisStrip == (centerStrip)){
1772 std::vector<int> myADCVals = digiItr->getADCCounts();
1773 float thisPedestal = 0.5*(float)(myADCVals[0]+myADCVals[1]);
1774 float thisSignal = (myADCVals[2]+myADCVals[3]+myADCVals[4]+myADCVals[5]+myADCVals[6]+myADCVals[7]);
1775 SigADC[0] = thisSignal - 6*thisPedestal;
1778 if (thisStrip == (centerStrip+1)){
1779 std::vector<int> myADCVals = digiItr->getADCCounts();
1780 float thisPedestal = 0.5*(float)(myADCVals[0]+myADCVals[1]);
1781 float thisSignal = (myADCVals[2]+myADCVals[3]+myADCVals[4]+myADCVals[5]+myADCVals[6]+myADCVals[7]);
1782 SigADC[1] = thisSignal - 6*thisPedestal;
1784 if (thisStrip == (centerStrip+2)){
1785 std::vector<int> myADCVals = digiItr->getADCCounts();
1786 float thisPedestal = 0.5*(float)(myADCVals[0]+myADCVals[1]);
1787 float thisSignal = (myADCVals[2]+myADCVals[3]+myADCVals[4]+myADCVals[5]+myADCVals[6]+myADCVals[7]);
1788 SigADC[2] = thisSignal - 6*thisPedestal;
1790 if (thisStrip == (centerStrip-1)){
1791 std::vector<int> myADCVals = digiItr->getADCCounts();
1792 float thisPedestal = 0.5*(float)(myADCVals[0]+myADCVals[1]);
1793 float thisSignal = (myADCVals[2]+myADCVals[3]+myADCVals[4]+myADCVals[5]+myADCVals[6]+myADCVals[7]);
1794 SigADC[3] = thisSignal - 6*thisPedestal;
1796 if (thisStrip == (centerStrip-2)){
1797 std::vector<int> myADCVals = digiItr->getADCCounts();
1798 float thisPedestal = 0.5*(float)(myADCVals[0]+myADCVals[1]);
1799 float thisSignal = (myADCVals[2]+myADCVals[3]+myADCVals[4]+myADCVals[5]+myADCVals[6]+myADCVals[7]);
1800 SigADC[4] = thisSignal - 6*thisPedestal;
1803 TotalADC = 0.2*(SigADC[0]+SigADC[1]+SigADC[2]+SigADC[3]+SigADC[4]);
1818 for (recIt = recHits->begin(); recIt != recHits->end(); recIt++) {
1823 AllRechits.insert(std::pair<CSCDetId , CSCRecHit2D>(idrec,*recIt));
1827 int nStrips = hitstrips.size();
1829 int centerid = nStrips/2 + 1;
1830 int centerStrip = hitstrips[centerid - 1];
1832 float rHsignal = getthisSignal(*strips, idrec, centerStrip);
1833 histos->fill1DHist(rHsignal,
"hrHSignal",
"Signal in the 4th time bin for centre strip",1100,-99,1000,
"recHits");
1839 std::vector<CSCRecHit2D> theseRecHits = (*it).specificRecHits();
1840 for ( std::vector<CSCRecHit2D>::const_iterator iRH = theseRecHits.begin(); iRH != theseRecHits.end(); iRH++) {
1843 float xrec = lpRH.
x();
1844 float yrec = lpRH.
y();
1845 float zrec = lpRH.
z();
1846 bool RHalreadyinMap =
false;
1848 multimap<CSCDetId , CSCRecHit2D>::iterator segRHit;
1849 segRHit = SegRechits.find(idRH);
1850 if (segRHit != SegRechits.end()){
1851 for( ; segRHit != SegRechits.upper_bound(idRH); ++segRHit){
1853 LocalPoint lposRH = (segRHit->second).localPosition();
1854 float xpos = lposRH.
x();
1855 float ypos = lposRH.
y();
1856 float zpos = lposRH.
z();
1857 if ( xrec == xpos && yrec == ypos && zrec == zpos){
1858 RHalreadyinMap =
true;
1863 if(!RHalreadyinMap){ SegRechits.insert(std::pair<CSCDetId , CSCRecHit2D>(idRH,*iRH));}
1867 findNonAssociatedRecHits(cscGeom,strips);
1879 for(std::multimap<CSCDetId , CSCRecHit2D>::iterator allRHiter = AllRechits.begin();allRHiter != AllRechits.end(); ++allRHiter){
1881 LocalPoint lpRH = (allRHiter->second).localPosition();
1882 float xrec = lpRH.
x();
1883 float yrec = lpRH.
y();
1884 float zrec = lpRH.
z();
1886 bool foundmatch =
false;
1887 multimap<CSCDetId , CSCRecHit2D>::iterator segRHit;
1888 segRHit = SegRechits.find(idRH);
1889 if (segRHit != SegRechits.end()){
1890 for( ; segRHit != SegRechits.upper_bound(idRH); ++segRHit){
1892 LocalPoint lposRH = (segRHit->second).localPosition();
1893 float xpos = lposRH.
x();
1894 float ypos = lposRH.
y();
1895 float zpos = lposRH.
z();
1897 if ( xrec == xpos && yrec == ypos && zrec == zpos){
1901 float dclose =1000.;
1905 d =
sqrt(
pow(xrec-xpos,2)+
pow(yrec-ypos,2)+
pow(zrec-zpos,2));
1908 if( distRHmap.find((allRHiter->second)) == distRHmap.end() ) {
1909 distRHmap.insert(make_pair(allRHiter->second,dclose) );
1913 distRHmap.erase(allRHiter->second);
1914 distRHmap.insert(make_pair(allRHiter->second,dclose));
1920 if(!foundmatch){NonAssociatedRechits.insert(std::pair<CSCDetId , CSCRecHit2D>(idRH,allRHiter->second));}
1923 for(std::map<CSCRecHit2D,float,ltrh>::iterator iter = distRHmap.begin();iter != distRHmap.end(); ++iter){
1924 histos->fill1DHist(iter->second,
"hdistRH",
"Distance of Non Associated RecHit from closest Segment RecHit",500,0.,100.,
"NonAssociatedRechits");
1927 for(std::multimap<CSCDetId , CSCRecHit2D>::iterator iter = NonAssociatedRechits.begin();iter != NonAssociatedRechits.end(); ++iter){
1929 int kEndcap = idrec.
endcap();
1930 int cEndcap = idrec.
endcap();
1931 if (kEndcap == 2)cEndcap = -1;
1932 int kRing = idrec.
ring();
1933 int kStation = idrec.
station();
1934 int kChamber = idrec.
chamber();
1938 LocalPoint rhitlocal = (iter->second).localPosition();
1939 float xreco = rhitlocal.
x();
1940 float yreco = rhitlocal.
y();
1944 int nStrips = hitstrips.size();
1945 int centerid = nStrips/2 + 1;
1946 int centerStrip = hitstrips[centerid - 1];
1952 int adcsize = adcs.
size();
1955 for (
int i = 0;
i < adcsize;
i++){
1956 if (
i != 3 &&
i != 7 &&
i != 11){
1957 rHSumQ = rHSumQ + adcs[
i];
1959 if (adcsize == 12 && (i < 3 || i > 7) &&
i < 12){
1960 sumsides = sumsides + adcs[
i];
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();
2022 int nStrips = hitstrips.size();
2023 int centerid = nStrips/2 + 1;
2024 int centerStrip = hitstrips[centerid - 1];
2030 int adcsize = adcs.
size();
2033 for (
int i = 0;
i < adcsize;
i++){
2034 if (
i != 3 &&
i != 7 &&
i != 11){
2035 rHSumQ = rHSumQ + adcs[
i];
2037 if (adcsize == 12 && (i < 3 || i > 7) &&
i < 12){
2038 sumsides = sumsides + adcs[
i];
2041 float rHratioQ = sumsides/rHSumQ;
2042 if (adcsize != 12) rHratioQ = -99;
2045 float rHtime = (iter->second).tpeak()/50;
2048 int rHwidth = getWidth(*strips, idrec, centerStrip);
2052 const CSCLayer* csclayer = cscGeom->layer( idrec );
2056 float grecx = rhitglobal.
x();
2057 float grecy = rhitglobal.
y();
2060 int kCodeBroad = cEndcap * ( 4*(kStation-1) + kRing) ;
2061 int kCodeNarrow = cEndcap * ( 100*(kRing-1) + kChamber) ;
2064 histos->fill1DHist(kCodeBroad,
"hSegRHCodeBroad",
"broad scope code for recHits",33,-16.5,16.5,
"AssociatedRechits");
2065 if (kStation == 1)
histos->fill1DHist(kCodeNarrow,
"hSegRHCodeNarrow1",
"narrow scope recHit code station 1",801,-400.5,400.5,
"AssociatedRechits");
2066 if (kStation == 2)
histos->fill1DHist(kCodeNarrow,
"hSegRHCodeNarrow2",
"narrow scope recHit code station 2",801,-400.5,400.5,
"AssociatedRechits");
2067 if (kStation == 3)
histos->fill1DHist(kCodeNarrow,
"hSegRHCodeNarrow3",
"narrow scope recHit code station 3",801,-400.5,400.5,
"AssociatedRechits");
2068 if (kStation == 4)
histos->fill1DHist(kCodeNarrow,
"hSegRHCodeNarrow4",
"narrow scope recHit code station 4",801,-400.5,400.5,
"AssociatedRechits");
2069 histos->fill1DHistByType(kLayer,
"hSegRHLayer",
"RecHits per Layer",idrec,8,-0.5,7.5,
"AssociatedRechits");
2070 histos->fill1DHistByType(xreco,
"hSegRHX",
"Local X of recHit",idrec,160,-80.,80.,
"AssociatedRechits");
2071 histos->fill1DHistByType(yreco,
"hSegRHY",
"Local Y of recHit",idrec,60,-180.,180.,
"AssociatedRechits");
2072 if (kStation == 1 && (kRing == 1 || kRing == 4))
histos->fill1DHistByType(rHSumQ,
"hSegRHSumQ",
"Sum 3x3 recHit Charge",idrec,250,0,4000,
"AssociatedRechits");
2073 else histos->fill1DHistByType(rHSumQ,
"hSegRHSumQ",
"Sum 3x3 recHit Charge",idrec,250,0,2000,
"AssociatedRechits");
2074 histos->fill1DHistByType(rHratioQ,
"hSegRHRatioQ",
"Ratio (Ql+Qr)/Qt)",idrec,120,-0.1,1.1,
"AssociatedRechits");
2075 histos->fill1DHistByType(rHtime,
"hSegRHTiming",
"recHit Timing",idrec,200,-10,10,
"AssociatedRechits");
2076 histos->fill2DHistByStation(grecx,grecy,
"hSegRHGlobal",
"recHit Global Position",idrec,400,-800.,800.,400,-800.,800.,
"AssociatedRechits");
2077 histos->fill1DHistByType(rHwidth,
"hSegRHwidth",
"width for Non associated recHit",idrec,21,-0.5,20.5,
"AssociatedRechits");
2084 NonAssociatedRechits.clear();
2093 bool foundRHid =
false;
2095 for (sIt = stripdigis.begin(); sIt != stripdigis.end(); sIt++){
2100 vector<CSCStripDigi>::const_iterator digiItr = (*sIt).second.first;
2101 vector<CSCStripDigi>::const_iterator
last = (*sIt).second.second;
2104 int Rg = idRH.
ring();
2105 if (St == 1 && Rg == 4){
2106 while(centerStrip> 16) centerStrip -= 16;
2108 for ( ; digiItr !=
last; ++digiItr ) {
2109 int thisStrip = digiItr->getStrip();
2111 std::vector<int> myADCVals = digiItr->getADCCounts();
2112 float thisPedestal = 0.5*(float)(myADCVals[0]+myADCVals[1]);
2113 float Signal = (float) myADCVals[3];
2114 if (thisStrip == (centerStrip)){
2115 thisADC = Signal-thisPedestal;
2121 if (thisStrip == (centerStrip+1)){
2122 std::vector<int> myADCVals = digiItr->getADCCounts();
2124 if (thisStrip == (centerStrip-1)){
2125 std::vector<int> myADCVals = digiItr->getADCCounts();
2149 for (sIt = stripdigis.begin(); sIt != stripdigis.end(); sIt++){
2152 std::vector<CSCStripDigi>::const_iterator digiItr = (*sIt).second.first;
2153 std::vector<CSCStripDigi>::const_iterator
first = (*sIt).second.first;
2154 std::vector<CSCStripDigi>::const_iterator
last = (*sIt).second.second;
2155 std::vector<CSCStripDigi>::const_iterator it = (*sIt).second.first;
2156 std::vector<CSCStripDigi>::const_iterator itr = (*sIt).second.first;
2159 int Rg = idRH.
ring();
2160 if (St == 1 && Rg == 4){
2161 while(centerStrip> 16) centerStrip -= 16;
2163 for ( ; digiItr !=
last; ++digiItr ) {
2164 int thisStrip = digiItr->getStrip();
2165 if (thisStrip == (centerStrip)){
2167 for( ; it !=
last; ++it ) {
2168 int strip = it->getStrip();
2169 std::vector<int> myADCVals = it->getADCCounts();
2170 float thisPedestal = 0.5*(float)(myADCVals[0]+myADCVals[1]);
2171 if(((
float)myADCVals[3]-thisPedestal) < 6 || widthpos == 10 || it==
last){
break;}
2172 if(strip != centerStrip){ widthpos += 1;
2176 for( ; itr !=
first; --itr) {
2177 int strip = itr->getStrip();
2178 std::vector<int> myADCVals = itr->getADCCounts();
2179 float thisPedestal = 0.5*(float)(myADCVals[0]+myADCVals[1]);
2180 if(((
float)myADCVals[3]-thisPedestal) < 6 || widthneg == 10 || itr==
first){
break;}
2181 if(strip != centerStrip) {widthneg += 1 ;
2189 width = width + widthneg + widthpos ;
2204 int channel=0,
mult,wire,layer,idlayer,idchamber,
ring;
2205 int wire_strip_rechit_present;
2209 std::map<int,int>::iterator intIt;
2211 m_single_wire_layer.clear();
2217 m_wire_hvsegm.clear();
2218 std::map<int,std::vector<int> >::iterator intvecIt;
2220 int csctype[10]= {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
2221 int hvsegm_layer[10]={1, 1, 3, 3, 3, 5, 3, 5, 3, 5};
2224 for(
int i=0;
i<10;
i++) nmbhvsegm.push_back(hvsegm_layer[
i]);
2226 std::vector<int> zer_1_1a(49,0);
2228 if(m_wire_hvsegm.find(
id) == m_wire_hvsegm.end()) m_wire_hvsegm[
id]=zer_1_1a;
2229 intvecIt=m_wire_hvsegm.find(
id);
2230 for(
int wire=1;wire<=48;wire++) intvecIt->second[wire]=1;
2233 std::vector<int> zer_1_1b(49,0);
2235 if(m_wire_hvsegm.find(
id) == m_wire_hvsegm.end()) m_wire_hvsegm[
id]=zer_1_1b;
2236 intvecIt=m_wire_hvsegm.find(
id);
2237 for(
int wire=1;wire<=48;wire++) intvecIt->second[wire]=1;
2240 std::vector<int> zer_1_2(65,0);
2242 if(m_wire_hvsegm.find(
id) == m_wire_hvsegm.end()) m_wire_hvsegm[
id]=zer_1_2;
2243 intvecIt=m_wire_hvsegm.find(
id);
2244 for(
int wire=1;wire<=24;wire++) intvecIt->second[wire]=1;
2245 for(
int wire=25;wire<=48;wire++) intvecIt->second[wire]=2;
2246 for(
int wire=49;wire<=64;wire++) intvecIt->second[wire]=3;
2249 std::vector<int> zer_1_3(33,0);
2251 if(m_wire_hvsegm.find(
id) == m_wire_hvsegm.end()) m_wire_hvsegm[
id]=zer_1_3;
2252 intvecIt=m_wire_hvsegm.find(
id);
2253 for(
int wire=1;wire<=12;wire++) intvecIt->second[wire]=1;
2254 for(
int wire=13;wire<=22;wire++) intvecIt->second[wire]=2;
2255 for(
int wire=23;wire<=32;wire++) intvecIt->second[wire]=3;
2258 std::vector<int> zer_2_1(113,0);
2260 if(m_wire_hvsegm.find(
id) == m_wire_hvsegm.end()) m_wire_hvsegm[
id]=zer_2_1;
2261 intvecIt=m_wire_hvsegm.find(
id);
2262 for(
int wire=1;wire<=44;wire++) intvecIt->second[wire]=1;
2263 for(
int wire=45;wire<=80;wire++) intvecIt->second[wire]=2;
2264 for(
int wire=81;wire<=112;wire++) intvecIt->second[wire]=3;
2267 std::vector<int> zer_2_2(65,0);
2269 if(m_wire_hvsegm.find(
id) == m_wire_hvsegm.end()) m_wire_hvsegm[
id]=zer_2_2;
2270 intvecIt=m_wire_hvsegm.find(
id);
2271 for(
int wire=1;wire<=16;wire++) intvecIt->second[wire]=1;
2272 for(
int wire=17;wire<=28;wire++) intvecIt->second[wire]=2;
2273 for(
int wire=29;wire<=40;wire++) intvecIt->second[wire]=3;
2274 for(
int wire=41;wire<=52;wire++) intvecIt->second[wire]=4;
2275 for(
int wire=53;wire<=64;wire++) intvecIt->second[wire]=5;
2278 std::vector<int> zer_3_1(97,0);
2280 if(m_wire_hvsegm.find(
id) == m_wire_hvsegm.end()) m_wire_hvsegm[
id]=zer_3_1;
2281 intvecIt=m_wire_hvsegm.find(
id);
2282 for(
int wire=1;wire<=32;wire++) intvecIt->second[wire]=1;
2283 for(
int wire=33;wire<=64;wire++) intvecIt->second[wire]=2;
2284 for(
int wire=65;wire<=96;wire++) intvecIt->second[wire]=3;
2287 std::vector<int> zer_3_2(65,0);
2289 if(m_wire_hvsegm.find(
id) == m_wire_hvsegm.end()) m_wire_hvsegm[
id]=zer_3_2;
2290 intvecIt=m_wire_hvsegm.find(
id);
2291 for(
int wire=1;wire<=16;wire++) intvecIt->second[wire]=1;
2292 for(
int wire=17;wire<=28;wire++) intvecIt->second[wire]=2;
2293 for(
int wire=29;wire<=40;wire++) intvecIt->second[wire]=3;
2294 for(
int wire=41;wire<=52;wire++) intvecIt->second[wire]=4;
2295 for(
int wire=53;wire<=64;wire++) intvecIt->second[wire]=5;
2298 std::vector<int> zer_4_1(97,0);
2300 if(m_wire_hvsegm.find(
id) == m_wire_hvsegm.end()) m_wire_hvsegm[
id]=zer_4_1;
2301 intvecIt=m_wire_hvsegm.find(
id);
2302 for(
int wire=1;wire<=32;wire++) intvecIt->second[wire]=1;
2303 for(
int wire=33;wire<=64;wire++) intvecIt->second[wire]=2;
2304 for(
int wire=65;wire<=96;wire++) intvecIt->second[wire]=3;
2307 std::vector<int> zer_4_2(65,0);
2309 if(m_wire_hvsegm.find(
id) == m_wire_hvsegm.end()) m_wire_hvsegm[
id]=zer_4_2;
2310 intvecIt=m_wire_hvsegm.find(
id);
2311 for(
int wire=1;wire<=16;wire++) intvecIt->second[wire]=1;
2312 for(
int wire=17;wire<=28;wire++) intvecIt->second[wire]=2;
2313 for(
int wire=29;wire<=40;wire++) intvecIt->second[wire]=3;
2314 for(
int wire=41;wire<=52;wire++) intvecIt->second[wire]=4;
2315 for(
int wire=53;wire<=64;wire++) intvecIt->second[wire]=5;
2321 wire_strip_rechit_present=0;
2322 if(wirecltn.begin() != wirecltn.end())
2323 wire_strip_rechit_present= wire_strip_rechit_present+1;
2324 if(strpcltn.begin() != strpcltn.end())
2325 wire_strip_rechit_present= wire_strip_rechit_present+2;
2326 if(rechitcltn.begin() != rechitcltn.end())
2327 wire_strip_rechit_present= wire_strip_rechit_present+4;
2329 if(wire_strip_rechit_present==7) {
2337 for(wiredetUnitIt=wirecltn.begin();wiredetUnitIt!=wirecltn.end();
2339 const CSCDetId id = (*wiredetUnitIt).first;
2340 idlayer=indexer.
dbIndex(
id, channel);
2341 idchamber=idlayer/10;
2347 range.first; digiIt!=range.second; ++digiIt){
2348 wire=(*digiIt).getWireGroup();
2354 if(m_single_wire_layer.find(idlayer) == m_single_wire_layer.end())
2355 m_single_wire_layer[idlayer]=wire;
2363 for(recIt = rechitcltn.begin(); recIt != rechitcltn.end(); ++recIt) {
2365 idlayer=indexer.
dbIndex(
id, channel);
2366 idchamber=idlayer/10;
2369 if(m_single_wire_layer.find(idlayer) != m_single_wire_layer.end()) {
2373 if(m_strip.size()==3) {
2376 std::vector<float> adc_left,adc_center,adc_right;
2381 for(
int i=0;
i<3;
i++)
2382 for(
int j=0;
j<4;
j++){
2383 if(m_adc[k]>adcmax) {adcmax=m_adc[
k]; binmx=
j;}
2384 if(
i==0) adc_left.push_back(m_adc[k]);
2385 if(
i==1) adc_center.push_back(m_adc[k]);
2386 if(
i==2) adc_right.push_back(m_adc[k]);
2389 float adc_3_3_sum=0.0;
2390 for(
int j=binmx-1;
j<=binmx+1;
j++) {
2391 adc_3_3_sum=adc_3_3_sum+adc_left[
j]
2396 if(adc_3_3_sum > 0.0 && adc_3_3_sum < 2000.0) {
2400 if(
id.
station()==1 &&
id.
ring()==4 && m_strip[1]>16) flag=1;
2404 wire= m_single_wire_layer[idlayer];
2405 int chambertype=
id.iChamberType(
id.
station(),
id.
ring());
2406 int hvsgmtnmb=m_wire_hvsegm[chambertype][wire];
2407 int nmbofhvsegm=nmbhvsegm[chambertype-1];
2408 int location= (layer-1)*nmbofhvsegm+hvsgmtnmb;
2411 ss<<
"gas_gain_rechit_adc_3_3_sum_location_ME_"<<idchamber;
2412 name=ss.str(); ss.str(
"");
2413 if(
id.
endcap()==1) endcapstr =
"+";
2416 if(
id.
endcap()==2) endcapstr =
"-";
2417 ss<<
"Gas Gain Rechit ADC3X3 Sum ME"<<endcapstr<<
2418 id.station()<<
"/"<<ring<<
"/"<<
id.chamber();
2419 title=ss.str(); ss.str(
"");
2422 histos->fill2DHist(x,y,name.c_str(),title.c_str(),30,1.0,31.0,50,0.0,2000.0,
"GasGain");
2447 int wire,wiretbin,nmbwiretbin,layer,afeb,idlayer,idchamber;
2451 if(wirecltn.begin() != wirecltn.end()) {
2459 for(wiredetUnitIt=wirecltn.begin();wiredetUnitIt!=wirecltn.end();
2461 const CSCDetId id = (*wiredetUnitIt).first;
2462 idlayer=indexer.
dbIndex(
id, channel);
2463 idchamber=idlayer/10;
2466 if (
id.
endcap() == 1) endcapstr =
"+";
2467 if (
id.
endcap() == 2) endcapstr =
"-";
2473 range.first; digiIt!=range.second; ++digiIt){
2474 wire=(*digiIt).getWireGroup();
2475 wiretbin=(*digiIt).getTimeBin();
2476 nmbwiretbin=(*digiIt).getTimeBinsOn().size();
2477 afeb=3*((wire-1)/8)+(layer+1)/2;
2482 ss<<
"afeb_time_bin_vs_afeb_occupancy_ME_"<<idchamber;
2483 name=ss.str(); ss.str(
"");
2484 ss<<
"Time Bin vs AFEB Occupancy ME"<<endcapstr<<
id.station()<<
"/"<<
id.ring()<<
"/"<<
id.chamber();
2485 title=ss.str(); ss.str(
"");
2486 histos->fill2DHist(x,y,name.c_str(),title.c_str(),42,1.,43.,16,0.,16.,
"AFEBTiming");
2491 ss<<
"nmb_afeb_time_bins_vs_afeb_ME_"<<idchamber;
2492 name=ss.str(); ss.str(
"");
2493 ss<<
"Number of Time Bins vs AFEB ME"<<endcapstr<<
id.station()<<
"/"<<
id.ring()<<
"/"<<
id.chamber();
2496 histos->fill2DHist(x,y,name.c_str(),title.c_str(),42,1.,43.,16,0.,16.,
"AFEBTiming");
2512 int strip,tbin,layer,cfeb,idlayer,idchamber,idum;
2516 if(compars.begin() != compars.end()) {
2524 for(compdetUnitIt=compars.begin();compdetUnitIt!=compars.end();
2526 const CSCDetId id = (*compdetUnitIt).first;
2527 idlayer=indexer.
dbIndex(
id, channel);
2528 idchamber=idlayer/10;
2531 if (
id.
endcap() == 1) endcap =
"+";
2532 if (
id.
endcap() == 2) endcap =
"-";
2535 (*compdetUnitIt).second;
2537 range.first; digiIt!=range.second; ++digiIt){
2538 strip=(*digiIt).getStrip();
2544 idum=indexer.
dbIndex(
id, strip);
2546 tbin=(*digiIt).getTimeBin();
2547 cfeb=(strip-1)/16+1;
2553 ss<<
"comp_time_bin_vs_cfeb_occupancy_ME_"<<idchamber;
2554 name=ss.str(); ss.str(
"");
2555 ss<<
"Comparator Time Bin vs CFEB Occupancy ME"<<endcap<<
2556 id.station()<<
"/"<<
id.ring()<<
"/"<<
id.chamber();
2557 title=ss.str(); ss.str(
"");
2558 histos->fill2DHist(x,y,name.c_str(),title.c_str(),5,1.,6.,16,0.,16.,
"CompTiming");
2571 float adc_3_3_sum,adc_3_3_wtbin,
x,
y;
2572 int cfeb,idchamber,
ring;
2576 std::vector<float> zer(6,0.0);
2579 std::map<int,int>::iterator intIt;
2581 if(rechitcltn.begin() != rechitcltn.end()) {
2589 for(recIt = rechitcltn.begin(); recIt != rechitcltn.end(); ++recIt) {
2593 if(m_strip.size()==3) {
2596 std::vector<float> adc_left,adc_center,adc_right;
2601 for(
int i=0;
i<3;
i++)
2602 for(
int j=0;
j<4;
j++){
2603 if(m_adc[k]>adcmax) {adcmax=m_adc[
k]; binmx=
j;}
2604 if(
i==0) adc_left.push_back(m_adc[k]);
2605 if(
i==1) adc_center.push_back(m_adc[k]);
2606 if(
i==2) adc_right.push_back(m_adc[k]);
2611 for(
int j=binmx-1;
j<=binmx+1;
j++) {
2612 adc_3_3_sum=adc_3_3_sum+adc_left[
j]
2618 if(adc_3_3_sum > 100.0) {
2620 int centerStrip=m_strip[1];
2623 if(
id.
station()==1 &&
id.
ring()==4 && centerStrip>16) flag=1;
2626 adc_3_3_wtbin=(*recIt).tpeak()/50;
2627 idchamber=indexer.
dbIndex(
id, centerStrip)/10;
2635 ss<<
"adc_3_3_weight_time_bin_vs_cfeb_occupancy_ME_"<<idchamber;
2636 name=ss.str(); ss.str(
"");
2638 std::string endcapstr;
2639 if(
id.
endcap() == 1) endcapstr =
"+";
2640 if(
id.
endcap() == 2) endcapstr =
"-";
2641 ring=
id.ring();
if(
id.
ring()==4) ring=1;
2642 ss<<
"ADC 3X3 Weighted Time Bin vs CFEB Occupancy ME"
2643 <<endcapstr<<
id.station()<<
"/"<<ring<<
"/"<<
id.chamber();
2644 title=ss.str(); ss.str(
"");
2646 cfeb=(centerStrip-1)/16+1;
2647 x=cfeb; y=adc_3_3_wtbin;
2648 histos->fill2DHist(x,y,name.c_str(),title.c_str(),5,1.,6.,80,-8.,8.,
"ADCTiming");
2667 map<CSCDetId, float > segment_median_map;
2668 map<CSCDetId, GlobalPoint > segment_position_map;
2678 LocalPoint localPos = (*dSiter).localPosition();
2680 const CSCChamber* cscchamber = cscGeom->chamber(
id);
2682 globalPosition = cscchamber->
toGlobal(localPos);
2686 std::vector<CSCRecHit2D> theseRecHits = (*dSiter).specificRecHits();
2687 int nRH = (*dSiter).nRecHits();
2688 if (nRH < 4 )
continue;
2691 vector<float> non_zero;
2693 for ( vector<CSCRecHit2D>::const_iterator iRH = theseRecHits.begin(); iRH != theseRecHits.end(); iRH++) {
2695 non_zero.push_back( iRH->tpeak());
2700 sort(non_zero.begin(),non_zero.end());
2701 int middle_index = non_zero.size()/2;
2702 float average_two = (non_zero.at(middle_index-1) + non_zero.at(middle_index))/2.;
2703 if(non_zero.size()%2)
2704 average_two = non_zero.at(middle_index);
2707 segment_median_map[id]=average_two;
2708 segment_position_map[id]=globalPosition;
2710 double distToIP =
sqrt(globalPosition.
x()*globalPosition.
x()+globalPosition.
y()*globalPosition.
y()+globalPosition.
z()*globalPosition.
z());
2712 histos->fillProfile(chamberSerial(
id),average_two,
"timeChamber",
"Segment mean time",601,-0.5,600.5,-400.,400.,
"TimeMonitoring");
2713 histos->fillProfileByType(
id.chamber(),average_two,
"timeChamberByType",
"Segment mean time by chamber",
id,36,0.5,36.5,-400,400.,
"TimeMonitoring");
2714 histos->fill2DHist(distToIP,average_two,
"seg_time_vs_distToIP",
"Segment time vs. Distance to IP",80,600.,1400.,800,-400,400.,
"TimeMonitoring");
2715 histos->fill2DHist(globalPosition.
z(),average_two,
"seg_time_vs_globZ",
"Segment time vs. z position",240,-1200,1200,800,-400.,400.,
"TimeMonitoring");
2716 histos->fill2DHist(fabs(globalPosition.
z()),average_two,
"seg_time_vs_absglobZ",
"Segment time vs. abs(z position)",120,0.,1200.,800,-400.,400.,
"TimeMonitoring");
2721 map<CSCDetId, float >::const_iterator it_outer;
2722 map<CSCDetId, float >::const_iterator it_inner;
2723 for (it_outer = segment_median_map.begin(); it_outer != segment_median_map.end(); it_outer++){
2725 CSCDetId id_outer = it_outer->first;
2726 float t_outer = it_outer->second;
2729 for (it_inner = segment_median_map.begin(); it_inner != segment_median_map.end(); it_inner++){
2731 CSCDetId id_inner = it_inner->first;
2732 float t_inner = it_inner->second;
2737 if (chamberSerial(id_outer) == chamberSerial(id_inner))
continue;
2747 histos->fill1DHist(t_outer-t_inner,
"diff_opposite_endcaps",
"#Delta t [ME+]-[ME-] for chambers in same station and ring",800,-400.,400.,
"TimeMonitoring");
2748 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");
2755 if( !useDigis )
return;
2758 vector<L1MuGMTReadoutRecord> L1Mrec = pCollection->getRecords();
2759 vector<L1MuGMTReadoutRecord>::const_iterator igmtrr;
2760 int L1GMT_BXN = -100;
2761 bool has_CSCTrigger =
false;
2762 bool has_beamHaloTrigger =
false;
2763 for(igmtrr=L1Mrec.begin(); igmtrr!=L1Mrec.end(); igmtrr++) {
2764 std::vector<L1MuRegionalCand>::const_iterator iter1;
2765 std::vector<L1MuRegionalCand> rmc;
2768 rmc = igmtrr->getCSCCands();
2769 for(iter1=rmc.begin(); iter1!=rmc.end(); iter1++) {
2770 if ( !(*iter1).empty() ) {
2772 int kQuality = (*iter1).quality();
2773 if (kQuality == 1) has_beamHaloTrigger =
true;
2776 if (igmtrr->getBxInEvent() == 0 && icsc>0){
2778 L1GMT_BXN = igmtrr->getBxNr();
2779 has_CSCTrigger =
true;
2781 else if (igmtrr->getBxInEvent() == 0 ) {
2783 L1GMT_BXN = igmtrr->getBxNr();
2792 map<CSCDetId, int > ALCT_KeyWG_map;
2795 const CSCDetId& idALCT = (*j).first;
2798 if((*digiIt).isValid()){
2800 histos->fill1DHist( (*digiIt).getBX(),
"ALCT_getBX",
"ALCT.getBX()",11,-0.5,10.5,
"TimeMonitoring");
2801 histos->fill1DHist( (*digiIt).getFullBX(),
"ALCT_getFullBX",
"ALCT.getFullBX()",3601,-0.5,3600.5,
"TimeMonitoring");
2803 if (ALCT_KeyWG_map.find(idALCT.
chamberId()) == ALCT_KeyWG_map.end()){
2804 ALCT_KeyWG_map[idALCT.
chamberId()] = (*digiIt).getKeyWG();
2816 map<CSCDetId, int > CLCT_getFullBx_map;
2819 const CSCDetId& idCLCT = (*j).first;
2822 if((*digiIt).isValid()){
2824 histos->fill1DHist( (*digiIt).getBX(),
"CLCT_getBX",
"CLCT.getBX()",11,-0.5,10.5,
"TimeMonitoring");
2825 histos->fill1DHist( (*digiIt).getFullBX(),
"CLCT_getFullBX",
"CLCT.getFullBX()",3601,-0.5,3600.5,
"TimeMonitoring");
2827 if (CLCT_getFullBx_map.find(idCLCT.
chamberId()) == CLCT_getFullBx_map.end()){
2828 CLCT_getFullBx_map[idCLCT.
chamberId()] = (*digiIt).getFullBX();
2838 int n_correlatedlcts = 0;
2842 if((*digiIt).isValid()){
2844 histos->fill1DHist( (*digiIt).getBX(),
"CorrelatedLCTS_getBX",
"CorrelatedLCT.getBX()",11,-0.5,10.5,
"TimeMonitoring");
2850 int nRecHits = recHits->size();
2851 int nSegments = cscSegments->size();
2852 if (has_CSCTrigger){
2853 histos->fill1DHist(L1GMT_BXN,
"BX_L1CSCCand",
"BX of L1 CSC Cand",4001,-0.5,4000.5,
"TimeMonitoring");
2854 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");
2855 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");
2856 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");
2857 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");
2858 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");
2860 if (has_CSCTrigger && has_beamHaloTrigger){
2861 histos->fill1DHist(L1GMT_BXN,
"BX_L1CSCCand_w_beamHalo",
"BX of L1 CSC (w beamHalo bit)",4001,-0.5,4000.5,
"TimeMonitoring");
2862 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");
2863 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");
2864 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");
2865 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");
2866 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");
2881 event.getByLabel(
"source", rawdata);
2882 bool goodEvent =
false;
2886 unsigned long dccBinCheckMask = 0x06080016;
2887 unsigned int examinerMask = 0x1FEBF3F6;
2888 unsigned int errorMask = 0x0;
2896 const FEDRawData& fedData = rawdata->FEDData(
id);
2897 unsigned long length = fedData.
size();
2901 std::stringstream examiner_out, examiner_err;
2908 if( examinerMask&0x40000 ) examiner->
crcCFEB(1);
2909 if( examinerMask&0x8000 ) examiner->
crcTMB (1);
2910 if( examinerMask&0x0400 ) examiner->
crcALCT(1);
2913 examiner->
setMask(examinerMask);
2914 const short unsigned int *
data = (
short unsigned int *)fedData.
data();
2916 if( examiner->
check(data,
long(fedData.
size()/2)) < 0 ) {
2920 goodEvent=!(examiner->
errors()&dccBinCheckMask);
2929 const std::vector<CSCDDUEventData> & dduData = dccData.
dduData();
2934 for (
unsigned int iDDU=0; iDDU<dduData.size(); ++iDDU) {
2937 if (dduData[iDDU].trailer().errorstat()&errorMask) {
2938 LogTrace(
"CSCDCCUnpacker|CSCRawToDigi") <<
"DDU# " << iDDU <<
" has serious error - no digis unpacked! " <<
2939 std::hex << dduData[iDDU].trailer().errorstat();
2944 const std::vector<CSCEventData> & cscData = dduData[iDDU].cscData();
2945 for (
unsigned int iCSC=0; iCSC<cscData.size(); ++iCSC) {
2947 int vmecrate = cscData[iCSC].dmbHeader()->crateID();
2948 int dmb = cscData[iCSC].dmbHeader()->dmbID();
2956 if ((vmecrate>=1)&&(vmecrate<=60) && (dmb>=1)&&(dmb<=10)&&(dmb!=6)) {
2957 layer = pcrate->
detId(vmecrate, dmb,icfeb,ilayer );
2960 LogTrace (
"CSCTimingAlignment|CSCDCCUnpacker|CSCRawToDigi") <<
" detID input out of range!!! ";
2961 LogTrace (
"CSCTimingAlignment|CSCDCCUnpacker|CSCRawToDigi")
2962 <<
" skipping chamber vme= " << vmecrate <<
" dmb= " << dmb;
2967 int nalct = cscData[iCSC].dmbHeader()->nalct();
2968 bool goodALCT=
false;
2970 if (nalct&&cscData[iCSC].alctHeader()) {
2971 if (cscData[iCSC].alctHeader()->
check()){
2977 int nclct = cscData[iCSC].dmbHeader()->nclct();
2979 if (nclct&&cscData[iCSC].tmbData()) {
2980 if (cscData[iCSC].tmbHeader()->
check()){
2981 if (cscData[iCSC].clctData()->
check()) goodTMB=
true;
2985 if (goodTMB && goodALCT) {
2987 if (ALCT_KeyWG_map.find(layer) == ALCT_KeyWG_map.end()) {
2991 if (CLCT_getFullBx_map.find(layer) == CLCT_getFullBx_map.end()) {
2995 int ALCT0Key = ALCT_KeyWG_map.find(layer)->second;
2996 int CLCTPretrigger = CLCT_getFullBx_map.find(layer)->second;
3000 const CSCTMBHeader *tmbHead = cscData[iCSC].tmbHeader();
3002 histos->fill1DHistByStation(tmbHead->
BXNCount(),
"TMB_BXNCount" ,
"TMB_BXNCount" , layer.
chamberId(),3601,-0.5,3600.5,
"TimeMonitoring");
3003 histos->fill1DHistByStation(tmbHead->
ALCTMatchTime(),
"TMB_ALCTMatchTime",
"TMB_ALCTMatchTime", layer.
chamberId(),7,-0.5,6.5,
"TimeMonitoring");
3005 histos->fill1DHist(tmbHead->
BXNCount(),
"TMB_BXNCount" ,
"TMB_BXNCount" , 3601,-0.5,3600.5,
"TimeMonitoring");
3006 histos->fill1DHist(tmbHead->
ALCTMatchTime(),
"TMB_ALCTMatchTime",
"TMB_ALCTMatchTime", 7,-0.5,6.5,
"TimeMonitoring");
3008 histos->fill1DHistByType(tmbHead->
ALCTMatchTime(),
"TMB_ALCTMatchTime",
"TMB_ALCTMatchTime",layer.
chamberId(), 7,-0.5,6.5,
"TimeMonitoring");
3010 histos->fillProfile( chamberSerial(layer.
chamberId()),tmbHead->
ALCTMatchTime(),
"prof_TMB_ALCTMatchTime",
"prof_TMB_ALCTMatchTime", 601,-0.5,600.5,-0.5,7.5,
"TimeMonitoring");
3011 histos->fillProfile(ALCT0Key,tmbHead->
ALCTMatchTime(),
"prof_TMB_ALCTMatchTime_v_ALCT0KeyWG",
"prof_TMB_ALCTMatchTime_v_ALCT0KeyWG",128,-0.5,127.5,0,7,
"TimeMonitoring");
3012 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");
3017 if (TMB_ALCT_rel_L1A > 3563)
3018 TMB_ALCT_rel_L1A = TMB_ALCT_rel_L1A - 3564;
3019 if (TMB_ALCT_rel_L1A < 0)
3020 TMB_ALCT_rel_L1A = TMB_ALCT_rel_L1A + 3564;
3023 histos->fill1DHist(TMB_ALCT_rel_L1A,
"h1D_TMB_ALCT_rel_L1A",
"h1D_TMB_ALCT_rel_L1A",11,144.5,155.5,
"TimeMonitoring");
3024 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");
3025 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");
3026 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");
3027 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");
3029 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");
3030 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");
3031 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");
3037 if (examiner!=
NULL)
delete examiner;
3046 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
bool withinSensitiveRegion(LocalPoint localPos, const std::vector< float > layerBounds, int station, int ring, float shiftFromEdge, float shiftFromDeadZone)
void analyze(const edm::Event &event, const edm::EventSetup &eventSetup)
Perform the analysis.
CSCDetId id() const
Get the (concrete) DetId.
double deltaPhi(float phi1, float phi2)
#define DEFINE_FWK_MODULE(type)
size_t size() const
return number of contained object
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)
void redirect(std::ostream &str)
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 doTrigger(edm::Handle< L1MuGMTReadoutCollection > pCollection)
Geom::Theta< T > theta() const
std::string chamberTypeName() const
edm::RangeMap< int, std::vector< float > > ADCContainer
virtual const std::vector< float > parameters() const
C::const_iterator const_iterator
constant access iterator type
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)
bool check(const DataFrame &df, bool capcheck, bool dvercheck)
int getWidth(const CSCStripDigiCollection &stripdigis, CSCDetId idRH, int centerStrip)
void histoEfficiency(TH1F *readHisto, TH1F *writeHisto)
int ringSerial(CSCDetId id)
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)
float fitX(CLHEP::HepMatrix sp, CLHEP::HepMatrix ep)
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< DigiType >::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)
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.
perl if(1 lt scalar(@::datatypes))
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)
std::vector< int > ChannelContainer
void doCalibrations(const edm::EventSetup &eventSetup)