42 isLocalRun(ps.getUntrackedParameter<bool>(
"localrun",
true))
48 LogTrace(
"DTDQM|DTMonitorModule|DTLocalTriggerTask") <<
"[DTLocalTriggerTask]: Constructor"<<endl;
72 LogTrace(
"DTDQM|DTMonitorModule|DTLocalTriggerTask") <<
"[DTLocalTriggerTask]: analyzed " <<
nevents <<
" events" << endl;
80 LogTrace(
"DTDQM|DTMonitorModule|DTLocalTriggerTask") <<
"[DTLocalTriggerTask]: BeginJob" << endl;
88 LogTrace(
"DTDQM|DTMonitorModule|DTLocalTriggerTask") <<
"[DTLocalTriggerTask]: BeginRun" << endl;
95 vector<string> trigSources;
97 trigSources.push_back(
"");
100 trigSources.push_back(
"_DTonly");
101 trigSources.push_back(
"_NoDT");
102 trigSources.push_back(
"_DTalso");
104 vector<string>::const_iterator trigSrcIt = trigSources.begin();
105 vector<string>::const_iterator trigSrcEnd = trigSources.end();
112 for (
int stat=1;stat<5;++stat){
113 for (
int wh=-2;wh<3;++wh){
114 for (
int sect=1;sect<13;++sect){
118 bookHistos(dtChId,
"LocalTriggerPhi",
"DCC_BXvsQual"+(*trigSrcIt));
119 bookHistos(dtChId,
"LocalTriggerPhi",
"DCC_QualvsPhirad"+(*trigSrcIt));
123 bookHistos(dtChId,
"LocalTriggerPhi",
"DDU_BXvsQual"+(*trigSrcIt));
131 for (;trigSrcIt!=trigSrcEnd;++trigSrcIt){
132 for (
int wh=-2;wh<3;++wh){
137 for (
int sect=1;sect<13;++sect){
138 for (
int stat=1;stat<5;++stat){
142 bookHistos(dtChId,
"LocalTriggerPhi",
"DCC_BXvsQual"+(*trigSrcIt));
144 bookHistos(dtChId,
"LocalTriggerPhi",
"DCC_QualvsPhirad"+(*trigSrcIt));
145 bookHistos(dtChId,
"LocalTriggerPhi",
"DCC_QualvsPhibend"+(*trigSrcIt));
147 bookHistos(dtChId,
"LocalTriggerPhi",
"DCC_Flag1stvsQual"+(*trigSrcIt));
148 bookHistos(dtChId,
"LocalTriggerPhi",
"DCC_BestQual"+(*trigSrcIt));
150 bookHistos(dtChId,
"LocalTriggerTheta",
"DCC_PositionvsBX"+(*trigSrcIt));
157 bookHistos(dtChId,
"Segment",
"DCC_PhitkvsPhitrig"+(*trigSrcIt));
158 bookHistos(dtChId,
"Segment",
"DCC_PhibtkvsPhibtrig"+(*trigSrcIt));
159 bookHistos(dtChId,
"Segment",
"DCC_PhiResidual"+(*trigSrcIt));
160 bookHistos(dtChId,
"Segment",
"DCC_PhiResidualvsLUTPhi"+(*trigSrcIt));
161 bookHistos(dtChId,
"Segment",
"DCC_PhibResidual"+(*trigSrcIt));
162 bookHistos(dtChId,
"Segment",
"DCC_HitstkvsQualtrig"+(*trigSrcIt));
163 bookHistos(dtChId,
"Segment",
"DCC_TrackPosvsAngle"+(*trigSrcIt));
164 bookHistos(dtChId,
"Segment",
"DCC_TrackPosvsAngleandTrig"+(*trigSrcIt));
165 bookHistos(dtChId,
"Segment",
"DCC_TrackPosvsAngleandTrigHHHL"+(*trigSrcIt));
167 bookHistos(dtChId,
"Segment",
"DCC_TrackThetaPosvsAngle"+(*trigSrcIt));
168 bookHistos(dtChId,
"Segment",
"DCC_TrackThetaPosvsAngleandTrig"+(*trigSrcIt));
177 bookHistos(dtChId,
"LocalTriggerPhi",
"DDU_BXvsQual"+(*trigSrcIt));
178 bookHistos(dtChId,
"LocalTriggerPhi",
"DDU_Flag1stvsQual"+(*trigSrcIt));
179 bookHistos(dtChId,
"LocalTriggerPhi",
"DDU_BestQual"+(*trigSrcIt));
181 bookHistos(dtChId,
"LocalTriggerTheta",
"DDU_ThetaBXvsQual"+(*trigSrcIt));
182 bookHistos(dtChId,
"LocalTriggerTheta",
"DDU_ThetaBestQual"+(*trigSrcIt));
186 bookHistos(dtChId,
"Segment",
"DDU_HitstkvsQualtrig"+(*trigSrcIt));
187 bookHistos(dtChId,
"Segment",
"DDU_TrackPosvsAngle"+(*trigSrcIt));
188 bookHistos(dtChId,
"Segment",
"DDU_TrackPosvsAngleandTrig"+(*trigSrcIt));
189 bookHistos(dtChId,
"Segment",
"DDU_TrackPosvsAngleandTrigHHHL"+(*trigSrcIt));
191 bookHistos(dtChId,
"Segment",
"DDU_TrackThetaPosvsAngle"+(*trigSrcIt));
192 bookHistos(dtChId,
"Segment",
"DDU_TrackThetaPosvsAngleandTrig"+(*trigSrcIt));
193 bookHistos(dtChId,
"Segment",
"DDU_TrackThetaPosvsAngleandTrigH"+(*trigSrcIt));
201 bookHistos(dtChId,
"LocalTriggerPhi",
"COM_QualDDUvsQualDCC"+(*trigSrcIt));
206 for (
int sect=13;sect<15;++sect){
210 bookHistos(dtChId,
"Segment",
"DCC_PhitkvsPhitrig"+(*trigSrcIt));
211 bookHistos(dtChId,
"Segment",
"DCC_PhibtkvsPhibtrig"+(*trigSrcIt));
212 bookHistos(dtChId,
"Segment",
"DCC_PhiResidual"+(*trigSrcIt));
213 bookHistos(dtChId,
"Segment",
"DCC_PhiResidualvsLUTPhi"+(*trigSrcIt));
214 bookHistos(dtChId,
"Segment",
"DCC_PhibResidual"+(*trigSrcIt));
228 LogTrace(
"DTDQM|DTMonitorModule|DTLocalTriggerTask") <<
"[DTLocalTriggerTask]: Begin of LS transition" << endl;
231 for(
map<uint32_t, map<string, MonitorElement*> > ::const_iterator
histo =
digiHistos.begin();
234 for(map<string, MonitorElement*> ::const_iterator ht = (*histo).second.begin();
235 ht != (*histo).second.end();
237 (*ht).second->Reset();
247 LogVerbatim(
"DTDQM|DTMonitorModule|DTLocalTriggerTask") <<
"[DTLocalTriggerTask]: analyzed " <<
nevents <<
" events" << endl;
285 vector<L1MuDTChambPhDigi>* l1PhTrig = l1DTTPGPh->getContainer();
289 vector<L1MuDTChambThDigi>* l1ThTrig = l1DTTPGTh->getContainer();
314 bool isDCC = histoTag.substr(0,3) ==
"DCC";
316 if (histoTag ==
"DCC_ErrorsChamberID") {
329 stringstream wheel; wheel << wh;
331 stringstream sector; sector << sc;
337 string histoType = histoTag.substr(4,histoTag.find(
"_",4)-4);
338 bool isDCC = histoTag.substr(0,3) ==
"DCC";
341 "/Sector" + sector.str() +
342 "/Station" + station.str() +
"/" + folder);
344 string histoName = histoTag +
"_W" + wheel.str() +
"_Sec" + sector.str() +
"_St" + station.str();
346 LogTrace(
"DTDQM|DTMonitorModule|DTLocalTriggerTask") <<
"[DTLocalTriggerTask]: booking " <<
topFolder(isDCC) <<
"Wheel" << wheel.str()
347 <<
"/Sector" << sector.str()
348 <<
"/Station"<< station.str() <<
"/" << folder <<
"/" << histoName << endl;
350 if (histoType.find(
"BX") != string::npos){
351 if (histoTag.substr(0,3) ==
"DCC"){
359 rangeBX = (int)(maxBX-minBX);
362 if ( folder ==
"LocalTriggerPhi") {
364 if( histoType ==
"BXvsQual" ){
366 dbe->
book2D(histoName,
"BX vs trigger quality",7,-0.5,6.5,rangeBX,minBX,maxBX);
370 if( histoType ==
"BestQual" ){
372 dbe->
book1D(histoName,
"Trigger quality of best primitives",7,-0.5,6.5);
376 if( histoType ==
"QualvsPhirad" ){
378 dbe->
book2D(histoName,
"Trigger quality vs local position",100,-500.,500.,7,-0.5,6.5);
382 if( histoType ==
"QualvsPhibend" ) {
384 dbe->
book2D(histoName,
"Trigger quality vs local direction",200,-40.,40.,7,-0.5,6.5);
388 if( histoType ==
"Flag1stvsQual" ) {
390 dbe->
book2D(histoName,
"1st/2nd trig flag vs quality",7,-0.5,6.5,2,-0.5,1.5);
394 if( histoType ==
"QualDDUvsQualDCC" ){
396 dbe->
book2D(histoName,
"DDU quality vs DCC quality",8,-1.5,6.5,8,-1.5,6.5);
403 else if ( folder ==
"LocalTriggerTheta") {
405 if( histoType ==
"PositionvsBX" ) {
407 dbe->
book2D(histoName,
"Theta trigger position vs BX",rangeBX,minBX,maxBX,7,-0.5,6.5);
410 if( histoType ==
"PositionvsQual" ) {
412 dbe->
book2D(histoName,
"Theta trigger position vs quality",7,-0.5,6.5,7,-0.5,6.5);
416 if( histoType ==
"ThetaBXvsQual" ) {
418 dbe->
book2D(histoName,
"BX vs trigger quality",7,-0.5,6.5,rangeBX,minBX,maxBX);
421 if( histoType ==
"ThetaBestQual" ){
423 dbe->
book1D(histoName,
"Trigger quality of best primitives (theta)",7,-0.5,6.5);
429 else if ( folder ==
"Segment") {
431 if( histoType.find(
"TrackThetaPosvsAngle" ) == 0 ) {
433 string histoLabel =
"Position vs Angle (theta)";
434 if (histoType.find(
"andTrigH") != string::npos) histoLabel +=
" for H triggers";
435 else if (histoType.find(
"andTrig") != string::npos) histoLabel +=
" for triggers";
441 dbe->
book2D(histoName,histoLabel,16,-40.,40.,nbins,min,max);
444 if( histoType.find(
"TrackPosvsAngle") == 0 ){
450 string histoLabel =
"Position vs Angle (phi)";
451 if (histoType.find(
"andTrigHHHL") != string::npos) histoLabel +=
" for HH/HL triggers";
452 else if (histoType.find(
"andTrig") != string::npos) histoLabel +=
" for triggers";
455 dbe->
book2D(histoName,histoLabel,16,-40.,40.,nbins,min,max);
458 if( histoType ==
"PhitkvsPhitrig" ){
460 dbe->
book2D(histoName,
"Local position: segment vs trigger",100,-500.,500.,100,-500.,500.);
463 if( histoType ==
"PhibtkvsPhibtrig" ){
465 dbe->
book2D(histoName,
"Local direction : segment vs trigger",200,-40.,40.,200,-40.,40.);
468 if( histoType ==
"PhiResidual" ){
470 dbe->
book1D(histoName,
"Trigger local position - Segment local position (correlated triggers)",400,-10.,10.);
473 if( histoType ==
"PhibResidual" ){
475 dbe->
book1D(histoName,
"Trigger local direction - Segment local direction (correlated triggers)",500,-10.,10.);
478 if( histoType ==
"HitstkvsQualtrig" ){
480 dbe->
book2D(histoName,
"Segment hits (phi) vs trigger quality",7,-0.5,6.5,10,0.5,10.5);
491 stringstream wheel; wheel << wh;
493 string histoType = histoTag.substr(4,histoTag.find(
"_",4)-4);
494 bool isDCC = histoTag.substr(0,3) ==
"DCC";
498 string histoName = histoTag +
"_W" + wheel.str();
500 LogTrace(
"DTDQM|DTMonitorModule|DTLocalTriggerTask") <<
"[DTLocalTriggerTask]: booking " <<
topFolder(isDCC)
501 <<
"Wheel" << wheel.str() <<
"/" << histoName << endl;
503 if( histoType.find(
"BXDiff") != string::npos ){
514 std::vector<L1MuDTChambThDigi>* thTrigs ){
521 for (
int i=0;
i<5;++
i){
522 for (
int j=0;
j<6;++
j){
523 for (
int k=0;
k<13;++
k){
530 vector<L1MuDTChambPhDigi>::const_iterator iph = phTrigs->begin();
531 vector<L1MuDTChambPhDigi>::const_iterator iphe = phTrigs->end();
532 for(; iph !=iphe ; ++iph) {
534 int phwheel = iph->whNum();
535 int phsec = iph->scNum() + 1;
536 int phst = iph->stNum();
537 int phbx = iph->bxNum();
538 int phcode = iph->code();
539 int phi1st = iph->Ts2Tag();
547 if(phcode>
phcode_best[phwheel+3][phst][phsec] && phcode<7) {
549 iphbest[phwheel+3][phst][phsec] = &(*iph);
556 uint32_t indexCh = dtChId.
rawId();
558 map<string, MonitorElement*> &innerME =
digiHistos[indexCh];
559 if (innerME.find(
"DCC_BXvsQual"+
trigsrc) == innerME.end()){
575 innerME.find(
"DCC_BXvsQual"+
trigsrc)->second->Fill(phcode,phbx-phi1st);
576 innerME.find(
"DCC_QualvsPhirad"+
trigsrc)->second->Fill(x,phcode);
579 innerME.find(
"DCC_BXvsQual"+
trigsrc)->second->Fill(phcode,phbx-phi1st);
580 innerME.find(
"DCC_Flag1stvsQual"+
trigsrc)->second->Fill(phcode,phi1st);
582 innerME.find(
"DCC_QualvsPhirad"+
trigsrc)->second->Fill(x,phcode);
583 innerME.find(
"DCC_QualvsPhibend"+
trigsrc)->second->Fill(angle,phcode);
591 vector<L1MuDTChambThDigi>::const_iterator ith = thTrigs->begin();
592 vector<L1MuDTChambThDigi>::const_iterator ithe = thTrigs->end();
593 for(; ith != ithe; ++ith) {
594 int thwheel = ith->whNum();
595 int thsec = ith->scNum() + 1;
596 int thst = ith->stNum();
597 int thbx = ith->bxNum();
600 thcode[
pos] = ith->code(
pos);
604 ithbest[thwheel+3][thst][thsec] = &(*ith);
609 uint32_t indexCh = dtChId.
rawId();
611 map<string, MonitorElement*> &innerME =
digiHistos[indexCh];
612 if (innerME.find(
"DCC_PositionvsBX"+
trigsrc) == innerME.end()){
622 innerME.find(
"DCC_PositionvsBX"+
trigsrc)->second->Fill(thbx,
pos);
636 for (
int st=1;st<5;++st){
637 for (
int wh=-2;wh<3;++wh){
638 for (
int sc=1;sc<13;++sc){
641 uint32_t indexCh =
id.rawId();
642 map<string, MonitorElement*> &innerME =
digiHistos[indexCh];
643 if (innerME.find(
"DCC_BestQual"+
trigsrc) == innerME.end())
666 for (
int i=0;
i<5;++
i){
667 for (
int j=0;
j<6;++
j){
668 for (
int k=0;
k<13;++
k){
675 for (detUnitIt=trigsDDU->begin();
676 detUnitIt!=trigsDDU->end();
681 uint32_t indexCh =
id.
rawId();
682 map<string, MonitorElement*> &innerME =
digiHistos[indexCh];
685 int sec =
id.sector();
686 int st =
id.station();
689 trigIt!=range.second;
692 int bx = trigIt->bx();
693 int quality = trigIt->quality();
694 int thqual = trigIt->trTheta();
695 int flag1st = trigIt->secondTrack() ? 1 : 0;
698 if( quality>-1 && quality<7 ) {
705 if (innerME.find(
"DDU_BXvsQual"+
trigsrc) == innerME.end()){
711 innerME.find(
"DDU_BXvsQual"+
trigsrc)->second->Fill(quality,bx-flag1st);
714 innerME.find(
"DDU_BXvsQual"+
trigsrc)->second->Fill(quality,bx-flag1st);
715 innerME.find(
"DDU_Flag1stvsQual"+
trigsrc)->second->Fill(quality,flag1st);
718 if( thqual>0 && !
tpMode ) {
723 if (innerME.find(
"DDU_ThetaBXvsQual"+
trigsrc) == innerME.end())
725 innerME.find(
"DDU_ThetaBXvsQual"+
trigsrc)->second->Fill(thqual,bx);
734 if (innerME.find(
"DDU_BestQual"+
trigsrc) == innerME.end())
739 if (innerME.find(
"DDU_ThetaBestQual"+
trigsrc) == innerME.end())
754 memset(
track_ok,
false,450*
sizeof(
bool));
757 vector<const DTRecSegment4D*> best4DSegments;
760 for (chamberId = segments4D->id_begin(); chamberId != segments4D->id_end(); ++chamberId){
767 for ( track = range.first; track != range.second; ++track){
769 if( (*track).hasPhi() ) {
777 int sector = (*track).chamberId().sector();
778 int station = (*track).chamberId().station();
782 else if (sector==14){
790 if (tmpBest) best4DSegments.push_back(tmpBest);
793 vector<const DTRecSegment4D*>::const_iterator btrack;
795 for ( btrack = best4DSegments.begin(); btrack != best4DSegments.end(); ++btrack ){
797 if( (*btrack)->hasPhi() ) {
799 int wheel = (*btrack)->chamberId().wheel();
800 int station = (*btrack)->chamberId().station();
801 int sector = (*btrack)->chamberId().sector();
803 float x_track, y_track, x_angle, y_angle;
805 int nHitsPhi = (*btrack)->phiSegment()->degreesOfFreedom()+2;
808 uint32_t indexCh = dtChId.
rawId();
809 map<string, MonitorElement*> &innerMECh =
digiHistos[indexCh];
812 indexCh = dtChIdSC.
rawId();
813 map<string, MonitorElement*> &innerME =
digiHistos[indexCh];
820 if (innerME.find(
"DDU_HitstkvsQualtrig"+
trigsrc) == innerME.end())
822 innerME.find(
"DDU_HitstkvsQualtrig"+
trigsrc)->second->Fill(
dduphcode_best[wheel+3][station][scsector],nHitsPhi);
830 if (innerME.find(
"DCC_HitstkvsQualtrig"+
trigsrc) == innerME.end()){
833 innerME.find(
"DCC_HitstkvsQualtrig"+
trigsrc)->second->Fill(
phcode_best[wheel+3][station][scsector],nHitsPhi);
835 if (
phcode_best[wheel+3][station][scsector]>3 && nHitsPhi>=7){
841 if (innerMECh.find(
"DCC_PhibResidual"+
trigsrc) == innerMECh.end()){
849 innerMECh.find(
"DCC_PhitkvsPhitrig"+
trigsrc)->second->Fill(x_trigger,x_track);
850 innerMECh.find(
"DCC_PhibtkvsPhibtrig"+
trigsrc)->second->Fill(angle_trigger,x_angle);
851 innerMECh.find(
"DCC_PhiResidual"+
trigsrc)->second->Fill(x_trigger-x_track);
852 innerMECh.find(
"DCC_PhibResidual"+
trigsrc)->second->Fill(angle_trigger-x_angle);
863 bool trigFlagDCC =
false;
864 for (
int ist=1; ist<5; ist++){
868 track_ok[wheel+3][ist][scsector]==
true){
874 if (trigFlagDCC && fabs(x_angle)<40. && nHitsPhi>=7){
876 if (innerME.find(
"DCC_TrackPosvsAngle"+
trigsrc) == innerME.end()){
883 innerME.find(
"DCC_TrackPosvsAngle"+
trigsrc)->second->Fill(x_angle,x_track);
885 innerME.find(
"DCC_TrackPosvsAngleandTrig"+
trigsrc)->second->Fill(x_angle,x_track);
887 innerME.find(
"DCC_TrackPosvsAngleandTrigHHHL"+
trigsrc)->second->Fill(x_angle,x_track);
893 if ((*btrack)->hasZed() && trigFlagDCC && fabs(y_angle)<40. && (*btrack)->zSegment()->degreesOfFreedom()>=1){
895 if (innerME.find(
"DCC_TrackThetaPosvsAngle"+
trigsrc) == innerME.end()){
902 innerME.find(
"DCC_TrackThetaPosvsAngle"+
trigsrc)->second->Fill(y_angle,y_track);
904 innerME.find(
"DCC_TrackThetaPosvsAngleandTrig"+
trigsrc)->second->Fill(y_angle,y_track);
916 bool trigFlagDDU =
false;
917 for (
int ist=1; ist<5; ist++){
921 track_ok[wheel+3][ist][scsector]==
true){
927 if (trigFlagDDU && fabs(x_angle)<40. && nHitsPhi>=7){
929 if (innerME.find(
"DDU_TrackPosvsAngle"+
trigsrc) == innerME.end()){
936 innerME.find(
"DDU_TrackPosvsAngle"+
trigsrc)->second->Fill(x_angle,x_track);
938 innerME.find(
"DDU_TrackPosvsAngleandTrig"+
trigsrc)->second->Fill(x_angle,x_track);
940 innerME.find(
"DDU_TrackPosvsAngleandTrigHHHL"+
trigsrc)->second->Fill(x_angle,x_track);
946 if ((*btrack)->hasZed() && trigFlagDDU && fabs(y_angle)<40. && (*btrack)->zSegment()->degreesOfFreedom()>=1){
948 if (innerME.find(
"DDU_TrackThetaPosvsAngle"+
trigsrc) == innerME.end()){
955 innerME.find(
"DDU_TrackThetaPosvsAngle"+
trigsrc)->second->Fill(y_angle,y_track);
957 innerME.find(
"DDU_TrackThetaPosvsAngleandTrig"+
trigsrc)->second->Fill(y_angle,y_track);
959 innerME.find(
"DDU_TrackThetaPosvsAngleandTrigH"+
trigsrc)->second->Fill(y_angle,y_track);
976 for (
int st=1;st<5;++st){
977 for (
int wh=-2;wh<3;++wh){
978 for (
int sc=1;sc<13;++sc){
982 uint32_t indexCh =
id.rawId();
983 map<string, MonitorElement*> &innerME =
digiHistos[indexCh];
984 if (innerME.find(
"COM_QualDDUvsQualDCC"+trigsrc) == innerME.end())
985 bookHistos(
id,
"LocalTriggerPhi",
"COM_QualDDUvsQualDCC"+trigsrc);
991 (
wheelHistos[wh]).
find(
"COM_BXDiff"+trigsrc)->second->Fill(sc,st,bxDDU-bxDCC);
1007 axis=histo->GetXaxis();
1010 axis=histo->GetYaxis();
1014 string labels[7] = {
"LI",
"LO",
"HI",
"HO",
"LL",
"HL",
"HH"};
1015 int istart = axis->GetXmin()<-1 ? 2 : 1;
1016 for (
int i=0;
i<7;
i++) {
1017 axis->SetBinLabel(
i+istart,labels[
i].c_str());
1030 for (std::vector<LTCDigi>::const_iterator ltc_it = ltcdigis->begin(); ltc_it != ltcdigis->end(); ltc_it++){
1032 size_t otherTriggerSum=0;
1033 for (
size_t i = 1;
i < 6;
i++) {
1034 otherTriggerSum += size_t((*ltc_it).HasTriggered(
i));
1036 if ((*ltc_it).HasTriggered(0) && otherTriggerSum == 0)
1038 else if (!(*ltc_it).HasTriggered(0))
1040 else if ((*ltc_it).HasTriggered(0) && otherTriggerSum > 0)
LuminosityBlockID id() const
T getParameter(std::string const &) const
T getUntrackedParameter(std::string const &, T const &) const
void bookWheelHistos(int wh, std::string histoTag)
Book the histograms.
std::pair< const_iterator, const_iterator > range
iterator range
void thetaRange(const DTChamberId &id, float &min, float &max, int &nbins, float step=15)
Compute theta range in local chamber coordinates.
int phcode_best[6][5][13]
std::string baseFolderDDU
MonitorElement * book1D(const char *name, const char *title, int nchX, double lowX, double highX)
Book 1D histogram.
virtual int degreesOfFreedom() const
return the DOF of the segment
void rmdir(const std::string &fullpath)
std::map< int, std::map< std::string, MonitorElement * > > wheelHistos
int thcode_best[6][5][13]
const DTChamberRecSegment2D * phiSegment() const
The superPhi segment: 0 if no phi projection available.
float trigDir(const L1MuDTChambPhDigi *trig)
Return local direction (trigger RF) for a given trigger primitive.
int dduphcode_best[6][5][13]
void bookBarrelHistos(std::string histoTag)
Book the histograms.
void runDDUvsDCCAnalysis(std::string &trigsrc)
Run analysis on ROS data.
virtual DTChamberId chamberId() const
The (specific) DetId of the chamber on which the segment resides.
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
void runDCCAnalysis(std::vector< L1MuDTChambPhDigi > *phTrigs, std::vector< L1MuDTChambThDigi > *thTrigs)
Run analysis on DCC data.
void analyze(const edm::Event &e, const edm::EventSetup &c)
Analyze.
int dduthcode_best[6][5][13]
void runSegmentAnalysis(edm::Handle< DTRecSegment4DCollection > &segments4D)
Run analysis using DT 4D segments.
uint32_t rawId() const
get the raw id
C::const_iterator const_iterator
constant access iterator type
const T & max(const T &a, const T &b)
std::string baseFolderDCC
void bookHistos(const DTChamberId &dtCh, std::string folder, std::string histoTag)
Book the histograms.
void trigToSeg(int st, float &x, float dir)
Compute Trigger x coordinate in chamber RF.
edm::InputTag ltcDigiCollectionTag
DTLocalTriggerTask(const edm::ParameterSet &ps)
Constructor.
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
edm::ESHandle< DTGeometry > muonGeom
void phiRange(const DTChamberId &id, float &min, float &max, int &nbins, float step=15)
Compute phi range in local chamber coordinates.
const DTLocalTrigger * iphbestddu[6][5][13]
const L1MuDTChambThDigi * ithbest[6][5][13]
LuminosityBlockNumber_t luminosityBlock() const
void setQLabels(MonitorElement *me, short int iaxis)
Set Quality labels.
std::vector< DigiType >::const_iterator const_iterator
edm::ParameterSet parameters
std::string & topFolder(bool isDCC)
Get the Top folder (different between Physics and TP and DCC/DDU)
DTTrigGeomUtils * trigGeomUtils
const L1MuDTChambPhDigi * iphbest[6][5][13]
void beginLuminosityBlock(const edm::LuminosityBlock &lumiSeg, const edm::EventSetup &context)
To reset the MEs.
virtual ~DTLocalTriggerTask()
Destructor.
void triggerSource(const edm::Event &e)
Get the L1A source.
std::pair< const_iterator, const_iterator > Range
float trigPos(const L1MuDTChambPhDigi *trig)
Return local position (trigger RF) for a given trigger primitive.
int station() const
Return the station number.
MonitorElement * book2D(const char *name, const char *title, int nchX, double lowX, double highX, int nchY, double lowY, double highY)
Book 2D histogram.
int wheel() const
Return the wheel number.
MonitorElement * dcc_IDDataErrorPlot
void setAxisTitle(const std::string &title, int axis=1)
set x-, y- or z-axis title (axis=1, 2, 3 respectively)
std::map< uint32_t, std::map< std::string, MonitorElement * > > digiHistos
void computeSCCoordinates(const DTRecSegment4D *track, int &scsec, float &x, float &xdir, float &y, float &ydir)
Compute track coordinates with SC sector numbering.
void beginRun(const edm::Run &, const edm::EventSetup &)
Beginrun.
void setCurrentFolder(const std::string &fullpath)
void runDDUAnalysis(edm::Handle< DTLocalTriggerCollection > &trigsDDU)
Run analysis on ROS data.
T angle(T x1, T y1, T z1, T x2, T y2, T z2)
MonitorElement * bookProfile2D(const char *name, const char *title, int nchX, double lowX, double highX, int nchY, double lowY, double highY, int nchZ, double lowZ, double highZ, const char *option="s")