00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072
00073
00074
00075
00076
00077
00078
00079
00080
00081
00082
00083
00084
00085
00086
00087
00088
00089
00090
00091
00092 #include <iostream>
00093 #include <sstream>
00094 #include <fstream>
00095 #include <vector>
00096
00097 #include "FWCore/ServiceRegistry/interface/Service.h"
00098 #include "FWCore/MessageLogger/interface/MessageLogger.h"
00099
00100 #include "DQM/L1TMonitor/interface/L1TDTTPG.h"
00101 #include "DataFormats/L1DTTrackFinder/interface/L1MuDTChambPhContainer.h"
00102 #include "DataFormats/L1DTTrackFinder/interface/L1MuDTChambPhDigi.h"
00103 #include "DataFormats/L1DTTrackFinder/interface/L1MuDTChambThContainer.h"
00104 #include "DataFormats/L1DTTrackFinder/interface/L1MuDTChambThDigi.h"
00105 #include "DataFormats/L1DTTrackFinder/interface/L1MuDTTrackContainer.h"
00106 #include "DQMServices/Core/interface/DQMStore.h"
00107
00108 using namespace std;
00109 using namespace edm;
00110
00111 L1TDTTPG::L1TDTTPG(const ParameterSet& ps)
00112 : dttpgSource_( ps.getParameter< InputTag >("dttpgSource") )
00113 {
00114
00115
00116 verbose_ = ps.getUntrackedParameter<bool>("verbose", false);
00117
00118 if(verbose_) cout << "L1TDTTPG: constructor...." << endl;
00119
00120
00121 dbe = NULL;
00122 if ( ps.getUntrackedParameter<bool>("DQMStore", false) )
00123 {
00124 dbe = Service<DQMStore>().operator->();
00125 dbe->setVerbose(0);
00126 }
00127
00128 outputFile_ = ps.getUntrackedParameter<string>("outputFile", "");
00129 if ( outputFile_.size() != 0 ) {
00130 cout << "L1T Monitoring histograms will be saved to " << outputFile_.c_str() << endl;
00131 }
00132
00133 bool disable = ps.getUntrackedParameter<bool>("disableROOToutput", false);
00134 if(disable){
00135 outputFile_="";
00136 }
00137
00138
00139 if ( dbe !=NULL ) {
00140 dbe->setCurrentFolder("L1T/L1TDTTPG");
00141 }
00142
00143
00144 }
00145
00146 L1TDTTPG::~L1TDTTPG()
00147 {
00148 }
00149
00150 void L1TDTTPG::beginJob(void)
00151 {
00152
00153 nev_ = 0;
00154
00155
00156 DQMStore* dbe = 0;
00157 dbe = Service<DQMStore>().operator->();
00158 if ( dbe ) {
00159 dbe->setCurrentFolder("L1T/L1TDTTPG");
00160 dbe->rmdir("L1T/L1TDTTPG");
00161 }
00162
00163
00164 if ( dbe )
00165 {
00166 dbe->setCurrentFolder("L1T/L1TDTTPG");
00167
00168
00169
00170 dttpgphbx[0] = dbe->book1D("BxEncoding_PHI",
00171 "Bunch encoding DTTF Phi",11,0,11);
00172
00173 dttpgphbx[1] = dbe->book1D("BxEncoding_OUT",
00174 "Bunch encoding DTTF Output",11,0,11);
00175
00176
00177 dttpgphbx[2] = dbe->book1D("NumberOfSegmentsPHI_BunchNeg1",
00178 "Number of segments for bunch -1 Dttf Phi",
00179 20,0,20);
00180
00181 dttpgphbx[3] = dbe->book1D("NumberOfSegmentsPHI_Bunch0",
00182 "Number of segments for bunch 0 Dttf Phi",
00183 20,0,20);
00184
00185 dttpgphbx[4] = dbe->book1D("NumberOfSegmentsPHI_Bunch1",
00186 "Number of segments for bunch 1 Dttf Phi",
00187 20,0,20);
00188
00189
00190 dttpgphbx[5] = dbe->book1D("NumberOfSegmentsOUT_BunchNeg1",
00191 "Number of segments for bunch -1 Dttf Output",
00192 20,0,20);
00193
00194 dttpgphbx[6] = dbe->book1D("NumberOfSegmentsOUT_Bunch0",
00195 "Number of segments for bunch 0 Dttf Output",
00196 20,0,20);
00197
00198 dttpgphbx[7] = dbe->book1D("NumberOfSegmentsOUT_Bunch1",
00199 "Number of segments for bunch 1 Dttf Output",
00200 20,0,20);
00201
00202 for(int i=0;i<2;i++){
00203 dttpgphbx[i]->setBinLabel(1,"None");
00204 dttpgphbx[i]->setBinLabel(3,"Only bx=-1");
00205 dttpgphbx[i]->setBinLabel(4,"Only bx= 0");
00206 dttpgphbx[i]->setBinLabel(5,"Only bx=+1");
00207 dttpgphbx[i]->setBinLabel(7,"Bx=-1,0");
00208 dttpgphbx[i]->setBinLabel(8,"Bx=-1,1");
00209 dttpgphbx[i]->setBinLabel(9,"Bx= 0,1");
00210 dttpgphbx[i]->setBinLabel(11,"All bx");
00211 }
00212
00213 dttpgphbxcomp = dbe->book2D("BxEncoding_PHI_OUT",
00214 "Bunch encoding: DTTF Phi vs. Output",
00215 11,0,11,11,0,11);
00216 dttpgphbxcomp->setAxisTitle("DTTF (output)",1);
00217 dttpgphbxcomp->setAxisTitle("PHI-TF",2);
00218 for(int i=1;i<=2;i++){
00219 dttpgphbxcomp->setBinLabel(1,"None",i);
00220 dttpgphbxcomp->setBinLabel(3,"Only bx=-1",i);
00221 dttpgphbxcomp->setBinLabel(4,"Only bx= 0",i);
00222 dttpgphbxcomp->setBinLabel(5,"Only bx=+1",i);
00223 dttpgphbxcomp->setBinLabel(7,"Bx=-1,0",i);
00224 dttpgphbxcomp->setBinLabel(8,"Bx=-1,1",i);
00225 dttpgphbxcomp->setBinLabel(9,"Bx= 0,1",i);
00226 dttpgphbxcomp->setBinLabel(11,"All bx",i);
00227 }
00228
00229 dttpgphntrack = dbe->book1D("DT_TPG_phi_ntrack",
00230 "DT TPG phi ntrack", 20, -0.5, 19.5 ) ;
00231 dttpgthntrack = dbe->book1D("DT_TPG_theta_ntrack",
00232 "DT TPG theta ntrack", 20, -0.5, 19.5 ) ;
00233
00234 for (int ibx=0 ; ibx<=2; ibx++) {
00235
00236 ostringstream bxnum;
00237 bxnum << ibx-1;
00238 string bxn;
00239 if (ibx<2)
00240 bxn = bxnum.str();
00241 else
00242 bxn = "+" + bxnum.str();
00243
00244
00245 dttpgphwheel[ibx] = dbe->book1D("DT_TPG_phi_wheel_number_"+bxn,
00246 "DT TPG phi wheel number "+bxn, 5, -2.5, 2.5 ) ;
00247 dttpgphsector[ibx] = dbe->book1D("DT_TPG_phi_sector_number_"+bxn,
00248 "DT TPG phi sector number "+bxn, 12, -0.5, 11.5 );
00249 dttpgphstation[ibx] = dbe->book1D("DT_TPG_phi_station_number_"+bxn,
00250 "DT TPG phi station number "+bxn, 5, 0.5, 4.5 ) ;
00251
00252
00253
00254
00255 dttpgphquality[ibx] = dbe->book1D("DT_TPG_phi_quality_"+bxn,
00256 "DT TPG phi quality "+bxn, 8, -0.5, 7.5 ) ;
00257 dttpgphts2tag[ibx] = dbe->book1D("DT_TPG_phi_Ts2Tag_"+bxn,
00258 "DT TPG phi Ts2Tag "+bxn, 2, -0.5, 1.5 ) ;
00259
00260
00261 dttpgphmapbx[ibx] = dbe->book2D("DT_TPG_phi_map_bx"+bxn,
00262 "Map of triggers per station (BX="+bxn+")",20,1,21,12,0,12);
00263 setMapPhLabel(dttpgphmapbx[ibx]);
00264
00265
00266 dttpgthbx[ibx] = dbe->book1D("DT_TPG_theta_bx_"+bxn,
00267 "DT TPG theta bx "+bxn, 50, -24.5, 24.5 ) ;
00268 dttpgthwheel[ibx] = dbe->book1D("DT_TPG_theta_wheel_number_"+bxn,
00269 "DT TPG theta wheel number "+bxn, 5, -2.5, 2.5 ) ;
00270 dttpgthsector[ibx] = dbe->book1D("DT_TPG_theta_sector_number_"+bxn,
00271 "DT TPG theta sector number "+bxn, 12, -0.5, 11.5 ) ;
00272 dttpgthstation[ibx] = dbe->book1D("DT_TPG_theta_station_number_"+bxn,
00273 "DT TPG theta station number "+bxn, 5, -0.5, 4.5 ) ;
00274 dttpgththeta[ibx] = dbe->book1D("DT_TPG_theta_"+bxn,
00275 "DT TPG theta "+bxn, 20, -0.5, 19.5 ) ;
00276 dttpgthquality[ibx] = dbe->book1D("DT_TPG_theta_quality_"+bxn,
00277 "DT TPG theta quality "+bxn, 8, -0.5, 7.5 ) ;
00278 dttpgthmapbx[ibx] = dbe->book2D("DT_TPG_theta_map_bx_"+bxn,
00279 "Map of triggers per station (BX="+bxn+")",15,1,16,12,0,12);
00280 setMapThLabel(dttpgthmapbx[ibx]);
00281
00282
00283 dttf_p_phi[ibx] = dbe->book1D("dttf_p_phi_"+bxn, "dttf phi output #phi "+bxn, 256,
00284 -0.5, 255.5);
00285 dttf_p_qual[ibx] = dbe->book1D("dttf_p_qual_"+bxn, "dttf phi output qual "+bxn, 8, -0.5, 7.5);
00286 dttf_p_q[ibx] = dbe->book1D("dttf_p_q_"+bxn, "dttf phi output q "+bxn, 2, -0.5, 1.5);
00287 dttf_p_pt[ibx] = dbe->book1D("dttf_p_pt_"+bxn, "dttf phi output p_{t} "+bxn, 32, -0.5, 31.5);
00288
00289 }
00290
00291 dttpgphmap = dbe->book2D("DT_TPG_phi_map",
00292 "Map of triggers per station",20,1,21,12,0,12);
00293 dttpgphmapcorr = dbe->book2D("DT_TPG_phi_map_corr",
00294 "Map of correlated triggers per station",20,1,21,12,0,12);
00295 dttpgphmap2nd = dbe->book2D("DT_TPG_phi_map_2nd",
00296 "Map of second tracks per station",20,1,21,12,0,12);
00297 dttpgphbestmap = dbe->book2D("DT_TPG_phi_best_map",
00298 "Map of best triggers per station",20,1,21,12,0,12);
00299 dttpgphbestmapcorr = dbe->book2D("DT_TPG_phi_best_map_corr",
00300 "Map of correlated best triggers per station",20,1,21,12,0,12);
00301 setMapPhLabel(dttpgphmap);
00302 setMapPhLabel(dttpgphmapcorr);
00303 setMapPhLabel(dttpgphmap2nd);
00304 setMapPhLabel(dttpgphbestmap);
00305 setMapPhLabel(dttpgphbestmapcorr);
00306
00307
00308
00309 dttpgthmap = dbe->book2D("DT_TPG_theta_map",
00310 "Map of triggers per station",15,1,16,12,0,12);
00311 dttpgthmaph = dbe->book2D("DT_TPG_theta_map_h",
00312 "Map of H quality triggers per station",15,1,16,12,0,12);
00313 dttpgthbestmap = dbe->book2D("DT_TPG_theta_best_map",
00314 "Map of besttriggers per station",15,1,16,12,0,12);
00315 dttpgthbestmaph = dbe->book2D("DT_TPG_theta_best_map_h",
00316 "Map of H quality best triggers per station",15,1,16,12,0,12);
00317 setMapThLabel(dttpgthmap);
00318 setMapThLabel(dttpgthmaph);
00319 setMapThLabel(dttpgthbestmap);
00320 setMapThLabel(dttpgthbestmaph);
00321
00322
00323 }
00324 }
00325
00326
00327 void L1TDTTPG::endJob(void)
00328 {
00329 if(verbose_) cout << "L1TDTTPG: end job...." << endl;
00330 LogInfo("EndJob") << "analyzed " << nev_ << " events";
00331
00332 if ( outputFile_.size() != 0 && dbe ) dbe->save(outputFile_);
00333
00334 return;
00335 }
00336
00337 void L1TDTTPG::analyze(const Event& e, const EventSetup& c)
00338 {
00339
00340 nev_++;
00341 if(verbose_) cout << "L1TDTTPG: analyze...." << endl;
00342
00343 edm::Handle<L1MuDTChambPhContainer > myL1MuDTChambPhContainer;
00344 e.getByLabel(dttpgSource_,myL1MuDTChambPhContainer);
00345
00346 if (!myL1MuDTChambPhContainer.isValid()) {
00347 edm::LogInfo("DataNotFound") << "can't find L1MuDTChambPhContainer with label "
00348 << dttpgSource_.label() ;
00349 return;
00350 }
00351 L1MuDTChambPhContainer::Phi_Container *myPhContainer =
00352 myL1MuDTChambPhContainer->getContainer();
00353
00354 edm::Handle<L1MuDTChambThContainer > myL1MuDTChambThContainer;
00355 e.getByLabel(dttpgSource_,myL1MuDTChambThContainer);
00356
00357 if (!myL1MuDTChambThContainer.isValid()) {
00358 edm::LogInfo("DataNotFound") << "can't find L1MuDTChambThContainer with label "
00359 << dttpgSource_.label() ;
00360 edm::LogInfo("DataNotFound") << "if this fails try to add DATA to the process name." ;
00361
00362 return;
00363 }
00364 L1MuDTChambThContainer::The_Container* myThContainer =
00365 myL1MuDTChambThContainer->getContainer();
00366
00367 int ndttpgphtrack = 0;
00368 int ndttpgthtrack = 0;
00369 int NumberOfSegmentsPhi[3]={0,0,0};
00370
00371 for( L1MuDTChambPhContainer::Phi_Container::const_iterator
00372 DTPhDigiItr = myPhContainer->begin() ;
00373 DTPhDigiItr != myPhContainer->end() ;
00374 ++DTPhDigiItr )
00375 {
00376 int bx = DTPhDigiItr->bxNum() - DTPhDigiItr->Ts2Tag();
00377 if(bx == -1)
00378 NumberOfSegmentsPhi[0]++;
00379 if(bx == 0)
00380 NumberOfSegmentsPhi[1]++;
00381 if(bx == 1)
00382 NumberOfSegmentsPhi[2]++;
00383 }
00384
00385
00386 for(int k=0;k<3;k++){
00387 dttpgphbx[k+2]->Fill(NumberOfSegmentsPhi[k]);
00388 }
00389 int bxCounterDttfPhi=0;
00390 for (int k=0;k<3;k++){
00391 if (NumberOfSegmentsPhi[k]>0)
00392 bxCounterDttfPhi++;
00393 }
00394
00395
00396
00397 int bxCodePhi=0;
00398 if(bxCounterDttfPhi==0){
00399 bxCodePhi=0;
00400 }else if(bxCounterDttfPhi==1){
00401 for(int k=0;k<3;k++){
00402 if(NumberOfSegmentsPhi[k]>0)
00403 bxCodePhi=k+2;
00404 }
00405 }else if(bxCounterDttfPhi==2){
00406 for(int k=0;k<3;k++){
00407 if(NumberOfSegmentsPhi[k]==0)
00408 bxCodePhi=8-k;
00409 }
00410 }else if(bxCounterDttfPhi==3){
00411 bxCodePhi=10;
00412 }
00413
00414
00415 dttpgphbx[0]->Fill(bxCodePhi);
00416
00417
00418 const L1MuDTChambPhDigi* bestPhQualMap[5][12][4];
00419 memset(bestPhQualMap,0,240*sizeof(L1MuDTChambPhDigi*));
00420
00421 for( L1MuDTChambPhContainer::Phi_Container::const_iterator
00422 DTPhDigiItr = myPhContainer->begin() ;
00423 DTPhDigiItr != myPhContainer->end() ;
00424 ++DTPhDigiItr )
00425 {
00426
00427 ndttpgphtrack++;
00428
00429 int bxindex = DTPhDigiItr->bxNum() - DTPhDigiItr->Ts2Tag() + 1;
00430
00431 dttpgphwheel[bxindex]->Fill(DTPhDigiItr->whNum());
00432 if (verbose_)
00433 {
00434 cout << "DTTPG phi wheel number " << DTPhDigiItr->whNum() << endl;
00435 }
00436 dttpgphstation[bxindex]->Fill(DTPhDigiItr->stNum());
00437 if (verbose_)
00438 {
00439 cout << "DTTPG phi station number " << DTPhDigiItr->stNum() << endl;
00440 }
00441 dttpgphsector[bxindex]->Fill(DTPhDigiItr->scNum());
00442 if (verbose_)
00443 {
00444 cout << "DTTPG phi sector number " << DTPhDigiItr->scNum() << endl;
00445 }
00446
00447
00448
00449
00450
00451
00452
00453
00454
00455
00456 dttpgphquality[bxindex]->Fill(DTPhDigiItr->code());
00457 if (verbose_)
00458 {
00459 cout << "DTTPG phi quality " << DTPhDigiItr->code() << endl;
00460 }
00461 dttpgphts2tag[bxindex]->Fill(DTPhDigiItr->Ts2Tag());
00462 if (verbose_)
00463 {
00464 cout << "DTTPG phi ts2tag " << DTPhDigiItr->Ts2Tag() << endl;
00465 }
00466
00467
00468
00469
00470
00471
00472 int ypos = DTPhDigiItr->scNum();
00473 int xpos = DTPhDigiItr->stNum()+4*(DTPhDigiItr->whNum()+2);
00474 dttpgphmap->Fill(xpos,ypos);
00475 if (DTPhDigiItr->Ts2Tag())
00476 dttpgphmap2nd->Fill(xpos,ypos);
00477 dttpgphmapbx[bxindex]->Fill(xpos,ypos);
00478 if (DTPhDigiItr->code()>3)
00479 dttpgphmapcorr->Fill(xpos,ypos);
00480
00481 if (bestPhQualMap[DTPhDigiItr->whNum()+2][ DTPhDigiItr->scNum()][DTPhDigiItr->stNum()-1]==0 ||
00482 bestPhQualMap[DTPhDigiItr->whNum()+2][ DTPhDigiItr->scNum()][DTPhDigiItr->stNum()-1]->code()<DTPhDigiItr->code())
00483 {
00484 bestPhQualMap[DTPhDigiItr->whNum()+2][ DTPhDigiItr->scNum()][DTPhDigiItr->stNum()-1]=&(*DTPhDigiItr);
00485 }
00486
00487 }
00488
00489 for (int iwh=0; iwh<5; iwh++){
00490 for (int isec=0; isec<12; isec++){
00491 for (int ist=0; ist<4; ist++){
00492 if (bestPhQualMap[iwh][isec][ist]){
00493 int xpos = iwh*4+ist+1;
00494 dttpgphbestmap->Fill(xpos,isec);
00495 if(bestPhQualMap[iwh][isec][ist]->code()>3)
00496 dttpgphbestmapcorr->Fill(xpos,isec);
00497 }
00498 }
00499 }
00500 }
00501
00502
00503 int bestThQualMap[5][12][3];
00504 memset(bestThQualMap,0,180*sizeof(int));
00505
00506 for( L1MuDTChambThContainer::The_Container::const_iterator
00507 DTThDigiItr = myThContainer->begin() ;
00508 DTThDigiItr != myThContainer->end() ;
00509 ++DTThDigiItr )
00510 {
00511 ndttpgthtrack++;
00512
00513 int bxindex = DTThDigiItr->bxNum() + 1;
00514
00515 dttpgthwheel[bxindex]->Fill(DTThDigiItr->whNum());
00516 if (verbose_)
00517 {
00518 cout << "DTTPG theta wheel number " << DTThDigiItr->whNum() << endl;
00519 }
00520 dttpgthstation[bxindex]->Fill(DTThDigiItr->stNum());
00521 if (verbose_)
00522 {
00523 cout << "DTTPG theta station number " << DTThDigiItr->stNum() << endl;
00524 }
00525 dttpgthsector[bxindex]->Fill(DTThDigiItr->scNum());
00526 if (verbose_)
00527 {
00528 cout << "DTTPG theta sector number " << DTThDigiItr->scNum() << endl;
00529 }
00530 dttpgthbx[bxindex]->Fill(DTThDigiItr->bxNum());
00531 if (verbose_)
00532 {
00533 cout << "DTTPG theta bx number " << DTThDigiItr->bxNum() << endl;
00534 }
00535 int thcode[7]= {0,0,0,0,0,0,0};
00536 for (int j = 0; j < 7; j++)
00537 {
00538 dttpgththeta[bxindex]->Fill(DTThDigiItr->position(j));
00539 if (verbose_)
00540 {
00541 cout << "DTTPG theta position " << DTThDigiItr->position(j) << endl;
00542 }
00543 thcode[j]=DTThDigiItr->code(j);
00544 dttpgthquality[bxindex]->Fill(thcode[j]);
00545 if (verbose_)
00546 {
00547 cout << "DTTPG theta quality " << DTThDigiItr->code(j) << endl;
00548 }
00549 }
00550
00551 int ypos = DTThDigiItr->scNum();
00552 int xpos = DTThDigiItr->stNum()+4*(DTThDigiItr->whNum()+2);
00553 int bestqual=0;
00554 dttpgthmap->Fill(xpos,ypos);
00555 dttpgthmapbx[bxindex]->Fill(xpos,ypos);
00556 for (int pos = 0; pos < 7; pos++){
00557 if (thcode[pos]>bestqual)
00558 bestqual=thcode[pos];
00559 if(thcode[pos]==2)
00560 dttpgthmaph->Fill(xpos,ypos);
00561 }
00562
00563 if (bestThQualMap[DTThDigiItr->whNum()+2][ DTThDigiItr->scNum()][DTThDigiItr->stNum()-1] < bestqual)
00564 {
00565 bestThQualMap[DTThDigiItr->whNum()+2][ DTThDigiItr->scNum()][DTThDigiItr->stNum()-1]=bestqual;
00566 }
00567 }
00568
00569 for (int iwh=0; iwh<5; iwh++){
00570 for (int isec=0; isec<12; isec++){
00571 for (int ist=0; ist<3; ist++){
00572 if (bestThQualMap[iwh][isec][ist]){
00573 int xpos = iwh*4+ist+1;
00574 dttpgthbestmap->Fill(xpos,isec);
00575 if(bestThQualMap[iwh][isec][ist]==2)
00576 dttpgthbestmaph->Fill(xpos,isec);
00577 }
00578 }
00579 }
00580 }
00581
00582
00583 dttpgphntrack->Fill(ndttpgphtrack);
00584 if (verbose_)
00585 {
00586 cout << "DTTPG phi ntrack " << ndttpgphtrack << endl;
00587 }
00588 dttpgthntrack->Fill(ndttpgthtrack);
00589 if (verbose_) {
00590 cout << "DTTPG theta ntrack " << ndttpgthtrack << endl;
00591 }
00592
00593 edm::Handle<L1MuDTTrackContainer > myL1MuDTTrackContainer;
00594
00595
00596 std::string trstring;
00597 trstring = dttpgSource_.label()+":"+"DATA"+":"+dttpgSource_.process();
00598 edm::InputTag trInputTag(trstring);
00599 e.getByLabel(trInputTag,myL1MuDTTrackContainer);
00600
00601 if (!myL1MuDTTrackContainer.isValid()) {
00602 edm::LogInfo("DataNotFound") << "can't find L1MuDTTrackContainer with label "
00603 << dttpgSource_.label() ;
00604 return;
00605 }
00606
00607 L1MuDTTrackContainer::TrackContainer *t = myL1MuDTTrackContainer->getContainer();
00608
00609
00610
00611 int NumberOfSegmentsOut[3]={0,0,0};
00612 for ( L1MuDTTrackContainer::TrackContainer::const_iterator i
00613 = t->begin(); i != t->end(); ++i ) {
00614 if(i->bx() ==-1)
00615 NumberOfSegmentsOut[0]++;
00616 if(i->bx() ==0)
00617 NumberOfSegmentsOut[1]++;
00618 if(i->bx() ==1)
00619 NumberOfSegmentsOut[2]++;
00620 }
00621
00622
00623
00624 for(int k=0;k<3;k++){
00625 dttpgphbx[k+5]->Fill(NumberOfSegmentsOut[k]);
00626 }
00627
00628
00629
00630 int bxCounterDttfOut=0;
00631 for (int k=0;k<3;k++){
00632 if (NumberOfSegmentsOut[k]>0)
00633 bxCounterDttfOut++;
00634 }
00635
00636 int bxCodeOut=0;
00637 if(bxCounterDttfOut==0){
00638 bxCodeOut=0;
00639 }else if(bxCounterDttfOut==1){
00640 for(int k=0;k<3;k++){
00641 if(NumberOfSegmentsOut[k]>0)
00642 bxCodeOut=k+2;
00643 }
00644 }else if(bxCounterDttfOut==2){
00645 for(int k=0;k<3;k++){
00646 if(NumberOfSegmentsOut[k]==0)
00647 bxCodeOut=8-k;
00648 }
00649 }else if(bxCounterDttfOut==3){
00650 bxCodeOut=10;
00651 }
00652
00653
00654 dttpgphbx[1]->Fill(bxCodeOut);
00655
00656
00657
00658
00659 dttpgphbxcomp->Fill(bxCodePhi,bxCodeOut);
00660
00661
00662 for ( L1MuDTTrackContainer::TrackContainer::const_iterator i
00663 = t->begin(); i != t->end(); ++i ) {
00664 if ( verbose_ ) {
00665 std::cout << "bx = " << i->bx()
00666 << std::endl;
00667 std::cout << "quality (packed) = " << i->quality_packed()
00668 << std::endl;
00669 std::cout << "pt (packed) = " << i->pt_packed()
00670 << std::endl;
00671 std::cout << "phi (packed) = " << i->phi_packed()
00672 << std::endl;
00673 std::cout << "charge (packed) = " << i->charge_packed()
00674 << std::endl;
00675 }
00676
00677
00678 int bxindex = i->bx() + 1;
00679 dttf_p_phi[bxindex]->Fill(i->phi_packed());
00680 dttf_p_qual[bxindex]->Fill(i->quality_packed());
00681 dttf_p_pt[bxindex]->Fill(i->pt_packed());
00682 dttf_p_q[bxindex]->Fill(i->charge_packed());
00683 }
00684
00685 }
00686
00687 void L1TDTTPG::setMapPhLabel(MonitorElement *me)
00688 {
00689
00690 me->setAxisTitle("DTTF Sector",2);
00691 for(int i=0;i<5;i++){
00692 ostringstream wheel;
00693 wheel << i-2;
00694 me->setBinLabel(1+i*4,"Wheel "+ wheel.str(),1);
00695 }
00696
00697 }
00698
00699 void L1TDTTPG::setMapThLabel(MonitorElement *me)
00700 {
00701
00702 me->setAxisTitle("DTTF Sector",2);
00703 for(int i=0;i<5;i++){
00704 ostringstream wheel;
00705 wheel << i-2;
00706 me->setBinLabel(1+i*3,"Wheel "+ wheel.str(),1);
00707 }
00708
00709 }