diff --git a/Validation/MuonGEMDigis/interface/GEMDigiTrackMatch.h b/Validation/MuonGEMDigis/interface/GEMDigiTrackMatch.h index c2b2314f61244..9d786cff64352 100644 --- a/Validation/MuonGEMDigis/interface/GEMDigiTrackMatch.h +++ b/Validation/MuonGEMDigis/interface/GEMDigiTrackMatch.h @@ -16,49 +16,34 @@ class GEMDigiTrackMatch : public GEMTrackMatch ~GEMDigiTrackMatch(); void analyze(const edm::Event& e, const edm::EventSetup&); void bookHisto(); - + void FillWithTrigger( MonitorElement* me[4][3], bool array[3][2], Float_t value); private: MonitorElement* track_eta; MonitorElement* track_phi; - MonitorElement* track_dg_eta; - MonitorElement* track_sh_eta; - - MonitorElement* dg_eta[4]; - MonitorElement* dg_sh_eta[4]; + //MonitorElement* track_dg_eta; + //MonitorElement* track_sh_eta; + MonitorElement* dg_eta[4][3]; + MonitorElement* dg_sh_eta[4][3]; - MonitorElement* dg_phi[4]; - MonitorElement* dg_sh_phi[4]; - MonitorElement* pad_eta[4]; - MonitorElement* pad_phi[4]; + MonitorElement* dg_phi[4][3]; + MonitorElement* dg_sh_phi[4][3]; + MonitorElement* pad_eta[4][3]; + MonitorElement* pad_phi[4][3]; +/* MonitorElement* dg_lx_even; - MonitorElement* dg_lx_even_l1; - MonitorElement* dg_lx_even_l2; - MonitorElement* dg_lx_even_l1or2; - MonitorElement* dg_lx_even_l1and2; - - MonitorElement* dg_ly_even; - MonitorElement* dg_ly_even_l1; - MonitorElement* dg_ly_even_l2; - MonitorElement* dg_ly_even_l1or2; - MonitorElement* dg_ly_even_l1and2; - MonitorElement* dg_lx_odd; - MonitorElement* dg_lx_odd_l1; - MonitorElement* dg_lx_odd_l2; - MonitorElement* dg_lx_odd_l1or2; - MonitorElement* dg_lx_odd_l1and2; - + MonitorElement* dg_ly_even; MonitorElement* dg_ly_odd; - MonitorElement* dg_ly_odd_l1; - MonitorElement* dg_ly_odd_l2; - MonitorElement* dg_ly_odd_l1or2; - MonitorElement* dg_ly_odd_l1and2; +//// + MonitorElement* dg_lx_even[4][3][2]; + MonitorElement* dg_ly_even[4][3][2]; +*/ }; diff --git a/Validation/MuonGEMDigis/src/GEMDigiTrackMatch.cc b/Validation/MuonGEMDigis/src/GEMDigiTrackMatch.cc index 5d1b240f7a7de..6ac15ef05bd6f 100644 --- a/Validation/MuonGEMDigis/src/GEMDigiTrackMatch.cc +++ b/Validation/MuonGEMDigis/src/GEMDigiTrackMatch.cc @@ -6,6 +6,7 @@ #include #include +using namespace std; GEMDigiTrackMatch::GEMDigiTrackMatch(DQMStore* dbe, std::string simInputLabel , edm::ParameterSet cfg) : GEMTrackMatch(dbe,simInputLabel,cfg) { minPt_ = cfg_.getUntrackedParameter("gemDigiMinPt",5.0); @@ -13,64 +14,68 @@ GEMDigiTrackMatch::GEMDigiTrackMatch(DQMStore* dbe, std::string simInputLabel , maxEta_ = cfg_.getUntrackedParameter("gemDigiMaxEta",2.18); } +void GEMDigiTrackMatch::FillWithTrigger( MonitorElement* hist[4][3], bool array[3][2], Float_t value) +{ + for( int i=0 ; i<3 ; i++) { + if ( array[i][0] ) hist[0][i]->Fill(value); + if ( array[i][1] ) hist[1][i]->Fill(value); + if ( array[i][0] || array[i][1] ) hist[2][i]->Fill(value); + if ( array[i][0] && array[i][1] ) hist[3][i]->Fill(value); + } + return; +} + + void GEMDigiTrackMatch::bookHisto(){ const float PI=TMath::Pi(); - track_eta = dbe_->book1D("track_eta", "track_eta;SimTrack |#eta|;# of tracks", 140,1.5,2.5); - track_phi = dbe_->book1D("track_phi", "track_phi;SimTrack |#eta|;# of tracks", 100,-PI,PI); - - dg_eta[0] = dbe_->book1D("dg_eta_l1","dg_eta_l1",140,1.5,2.5); - dg_eta[1] = dbe_->book1D("dg_eta_l2","dg_eta_l2",140,1.5,2.5); - dg_eta[2] = dbe_->book1D("dg_eta_l1or2","dg_eta_l1or2",140,1.5,2.5); - dg_eta[3] = dbe_->book1D("dg_eta_l1and2","dg_eta_l1and2",140,1.5,2.5); - - dg_sh_eta[0] = dbe_->book1D("dg_sh_eta_l1","dg_sh_eta_l1",140,1.5,2.5); - dg_sh_eta[1] = dbe_->book1D("dg_sh_eta_l2","dg_sh_eta_l2",140,1.5,2.5); - dg_sh_eta[2] = dbe_->book1D("dg_sh_eta_l1or2","dg_sh_eta_l1or2",140,1.5,2.5); - dg_sh_eta[3] = dbe_->book1D("dg_sh_eta_l1and2","dg_sh_eta_l1and2",140,1.5,2.5); - - dg_phi[0] = dbe_->book1D("dg_phi_l1","dg_phi_l1",100,-PI,PI); - dg_phi[1] = dbe_->book1D("dg_phi_l2","dg_phi_l2",100,-PI,PI); - dg_phi[2] = dbe_->book1D("dg_phi_l1or2","dg_phi_l1or2",100,-PI,PI); - dg_phi[3] = dbe_->book1D("dg_phi_l1and2","dg_phi_l1and2",100,-PI,PI); - - dg_sh_phi[0] = dbe_->book1D("dg_sh_phi_l1","dg_sh_phi_l1",100,-PI,PI); - dg_sh_phi[1] = dbe_->book1D("dg_sh_phi_l2","dg_sh_phi_l2",100,-PI,PI); - dg_sh_phi[2] = dbe_->book1D("dg_sh_phi_l1or2","dg_sh_phi_l1or2",100,-PI,PI); - dg_sh_phi[3] = dbe_->book1D("dg_sh_phi_l1and2","dg_sh_phi_l1and2",100,-PI,PI); - - pad_eta[0] = dbe_->book1D("pad_eta_l1","pad_eta_l1",140,1.5,2.5); - pad_eta[1] = dbe_->book1D("pad_eta_l2","pad_eta_l2",140,1.5,2.5); - pad_eta[2] = dbe_->book1D("pad_eta_l1or2","pad_eta_l1or2",140,1.5,2.5); - pad_eta[3] = dbe_->book1D("copad_eta","copad_eta",140,1.5,2.5); - - pad_phi[0] = dbe_->book1D("pad_phi_l1","pad_phi_l1",100,-PI,PI); - pad_phi[1] = dbe_->book1D("pad_phi_l2","pad_phi_l2",100,-PI,PI); - pad_phi[2] = dbe_->book1D("pad_phi_l1or2","pad_phi_l1or2",100,-PI,PI); - pad_phi[3] = dbe_->book1D("copad_phi","copad_phi",100,-PI,PI); - - dg_lx_even = dbe_->book1D("dg_lx_even","dg_lx_even",100,-100,100); - dg_lx_even_l1 = dbe_->book1D("dg_lx_even_l1","dg_lx_even_l1",100,-100,100); - dg_lx_even_l2 = dbe_->book1D("dg_lx_even_l2","dg_lx_even_l2",100,-100,100); - dg_lx_even_l1or2 = dbe_->book1D("dg_lx_even_l1or2","dg_lx_even_l1or2",100,-100,100); - dg_lx_even_l1and2 = dbe_->book1D("dg_lx_even_l1and2","dg_lx_even_l1and2",100,-100,100); - - dg_ly_even = dbe_->book1D("dg_ly_even","dg_ly_even",100,-100,100); - dg_ly_even_l1 = dbe_->book1D("dg_ly_even_l1","dg_ly_even_l1",100,-100,100); - dg_ly_even_l2 = dbe_->book1D("dg_ly_even_l2","dg_ly_even_l2",100,-100,100); - dg_ly_even_l1or2 = dbe_->book1D("dg_ly_even_l1or2","dg_ly_even_l1or2",100,-100,100); - dg_ly_even_l1and2 = dbe_->book1D("dg_ly_even_l1and2","dg_ly_even_l1and2",100,-100,100); - - dg_lx_odd = dbe_->book1D("dg_lx_odd","dg_lx_odd",100,-100,100); - dg_lx_odd_l1 = dbe_->book1D("dg_lx_odd_l1","dg_lx_odd_l1",100,-100,100); - dg_lx_odd_l2 = dbe_->book1D("dg_lx_odd_l2","dg_lx_odd_l2",100,-100,100); - dg_lx_odd_l1or2 = dbe_->book1D("dg_lx_odd_l1or2","dg_lx_odd_l1or2",100,-100,100); - dg_lx_odd_l1and2 = dbe_->book1D("dg_lx_odd_l1and2","dg_lx_odd_l1and2",100,-100,100); - - dg_ly_odd = dbe_->book1D("dg_ly_odd","dg_ly_odd",100,-100,100); - dg_ly_odd_l1 = dbe_->book1D("dg_ly_odd_l1","dg_ly_odd_l1",100,-100,100); - dg_ly_odd_l2 = dbe_->book1D("dg_ly_odd_l2","dg_ly_odd_l2",100,-100,100); - dg_ly_odd_l1or2 = dbe_->book1D("dg_ly_odd_l1or2","dg_ly_odd_l1or2",100,-100,100); - dg_ly_odd_l1and2 = dbe_->book1D("dg_ly_odd_l1and2","dg_ly_odd_l1and2",100,-100,100); + const char* l_suffix[4] = {"_l1","_l2","_l1or2","_l1and2"}; + const char* s_suffix[3] = {"_st1","_st2_short","_st2_long"}; + const char* c_suffix[2] = {"_even","_odd"}; + + //track_eta = dbe_->book1D("track_eta", "track_eta;SimTrack |#eta|;# of tracks", 140,minEta_,maxEta_); + //track_phi = dbe_->book1D("track_phi", "track_phi;SimTrack |#eta|;# of tracks", 100,-PI,PI); + + track_eta = dbe_->book1D("track_eta","track_eta",140,minEta_,maxEta_); + track_phi = dbe_->book1D("track_phi","track_phi",100,-PI,PI); + + for( unsigned int i=0 ; i<4; i++) { + for( unsigned int j=0 ; j<3 ; j++) { + string suffix = string(l_suffix[i])+string(s_suffix[j]); + string dg_eta_name = string("dg_eta")+suffix; + string dg_eta_title = dg_eta_name+"; tracks |#eta|; # of tracks"; + dg_eta[i][j] = dbe_->book1D( dg_eta_name.c_str(), dg_eta_title.c_str(), 140, minEta_, maxEta_) ; + + string dg_sh_eta_name = string("dg_sh_eta")+suffix; + string dg_sh_eta_title = dg_sh_eta_name+"; tracks |#eta|; # of tracks"; + dg_sh_eta[i][j] = dbe_->book1D( dg_sh_eta_name.c_str(), dg_sh_eta_title.c_str(), 140, minEta_, maxEta_) ; + + string dg_phi_name = string("dg_phi")+suffix; + string dg_phi_title = dg_eta_name+"; tracks |#phi|; # of tracks"; + dg_phi[i][j] = dbe_->book1D( dg_phi_name.c_str(), dg_phi_title.c_str(), 100, -PI,PI) ; + + string dg_sh_phi_name = string("dg_sh_phi")+suffix; + string dg_sh_phi_title = dg_sh_phi_name+"; tracks |#phi|; # of tracks"; + dg_sh_phi[i][j] = dbe_->book1D( dg_sh_phi_name.c_str(), dg_sh_phi_title.c_str(), 100,-PI,PI) ; + + string pad_eta_name = string("pad_eta")+suffix; + string pad_eta_title = pad_eta_name+"; tracks |#eta|; # of tracks"; + pad_eta[i][j] = dbe_->book1D( pad_eta_name.c_str(), pad_eta_title.c_str(), 140, minEta_, maxEta_) ; + + string pad_phi_name = string("pad_phi")+suffix; + string pad_phi_title = pad_phi_name+"; tracks |#phi|; # of tracks"; + pad_phi[i][j] = dbe_->book1D( pad_phi_name.c_str(), pad_phi_title.c_str(), 100, -PI,PI) ; + for ( unsigned int k = 0 ; k<2 ; k++) { + suffix = suffix+ string(c_suffix[k]); + string dg_lx_name = string("dg_lx")+suffix; + string dg_lx_title = dg_lx_name+"; local X[cm]; Entries"; + //dg_lx[i][j][k] = dbe_->book1D( dg_lx_name.c_str(), dg_lx_title.c_str(), 100,-100,100); + + string dg_ly_name = string("dg_ly")+suffix; + string dg_ly_title = dg_ly_name+"; local Y[cm]; Entries"; + //dg_ly[i][j][k] = dbe_->book1D( dg_ly_name.c_str(), dg_ly_title.c_str(), 100,-100,100); + } + } + } } GEMDigiTrackMatch::~GEMDigiTrackMatch() { } @@ -88,6 +93,9 @@ void GEMDigiTrackMatch::analyze(const edm::Event& iEvent, const edm::EventSetup& Char_t has_gem_dg_l1, has_gem_dg_l2; Char_t has_gem_pad_l1, has_gem_pad_l2; Char_t has_gem_sh_l1, has_gem_sh_l2; + bool gem_sh[3][2]; + bool gem_dg[3][2]; + bool gem_pad[3][2]; }; MySimTrack track_; @@ -113,12 +121,6 @@ void GEMDigiTrackMatch::analyze(const edm::Event& iEvent, const edm::EventSetup& track_.pt = t.momentum().pt(); track_.phi = t.momentum().phi(); track_.eta = t.momentum().eta(); - track_.gem_sh_layer1 = 0; - track_.gem_sh_layer2 = 0; - track_.gem_dg_layer1 = 0; - track_.gem_dg_layer2 = 0; - track_.gem_pad_layer1 = 0; - track_.gem_pad_layer2 = 0; track_.gem_lx_even =0; track_.gem_ly_even =0; track_.gem_lx_odd =0; @@ -127,141 +129,45 @@ void GEMDigiTrackMatch::analyze(const edm::Event& iEvent, const edm::EventSetup& track_.has_gem_dg_l2 = 0; track_.has_gem_pad_l1 = 0; track_.has_gem_pad_l2 = 0; + for ( int i= 0 ; i< 3 ; i++) { + for ( int j= 0 ; j<2 ; j++) { + track_.gem_sh[i][j] = false; + track_.gem_dg[i][j] = false; + track_.gem_pad[i][j] = false; + } + } // ** GEM SimHits ** // auto gem_sh_ids_ch = match_sh.chamberIdsGEM(); for(auto d: gem_sh_ids_ch) { GEMDetId id(d); - - if (id.layer() == 1) - { - track_.gem_sh_layer1 = 1; - } - else if (id.layer() == 2) - { - track_.gem_sh_layer2 = 1; - } - } - + track_.gem_sh[ id.station()-1][ (id.layer()-1)] = true; + } // ** GEM Digis, Pads and CoPads ** // - - auto gem_dg_ids_ch = match_gd.chamberIds(); for(auto d: gem_dg_ids_ch) { GEMDetId id(d); - if (id.layer() == 1) - { - track_.gem_dg_layer1 = 1; - track_.gem_pad_layer1 = 1; - } - else if (id.layer() == 2) - { - track_.gem_dg_layer2 = 1; - track_.gem_pad_layer2 = 1; - } - //else { edm::LogInfo("GEMDIGI")<<"GEM Digi did not found on any layer." } + track_.gem_dg[ id.station()-1][ (id.layer()-1)] = true; + track_.gem_pad[ id.station()-1][ (id.layer()-1)] = true; } - track_eta->Fill( fabs( track_.eta) ); - if ( track_.gem_dg_layer1 > 0 ) { - dg_eta[0]->Fill ( fabs( track_.eta ) ); - } - if ( track_.gem_dg_layer2 > 0 ) { - dg_eta[1]->Fill ( fabs( track_.eta ) ); - } - if ( track_.gem_dg_layer1 > 0 || track_.gem_dg_layer2>0 ) { - dg_eta[2]->Fill ( fabs( track_.eta ) ); - } - if ( track_.gem_dg_layer1 > 0 && track_.gem_dg_layer2>0 ) { - dg_eta[3]->Fill( fabs(track_.eta) ); - } - if ( track_.gem_dg_layer1 ==0 && track_.gem_dg_layer2==0) { - edm::LogInfo("GEMDIGI")<<"it has no layer on digi!"; - } - - - if ( track_.gem_sh_layer1 > 0 ) { - dg_sh_eta[0]->Fill ( fabs(track_.eta)); - } - if ( track_.gem_sh_layer2 > 0 ) { - dg_sh_eta[1]->Fill( fabs(track_.eta)); - } - if (track_.gem_sh_layer1 >0 || track_.gem_sh_layer2>0 ) { - dg_sh_eta[2]->Fill( fabs(track_.eta)); - } - if (track_.gem_sh_layer1 >0 && track_.gem_sh_layer2>0 ) { - dg_sh_eta[3]->Fill( fabs(track_.eta)); - } - if ( track_.gem_sh_layer1 ==0 && track_.gem_sh_layer2==0) { - edm::LogInfo("GEMDigiTrackMatch")<<"it has no layer on sh hit!"; - } - - - if ( track_.gem_pad_layer1 > 0 ) { - pad_eta[0]->Fill ( fabs(track_.eta) ); - } - if ( track_.gem_pad_layer2 > 0 ) { - pad_eta[1]->Fill ( fabs(track_.eta) ); - } - if ( track_.gem_pad_layer1 > 0 || track_.gem_pad_layer2>0 ) { - pad_eta[2]->Fill( fabs(track_.eta)); - } - if ( track_.gem_pad_layer1 > 0 && track_.gem_pad_layer2>0 ) { - pad_eta[3]->Fill( fabs(track_.eta)); - } - if ( track_.gem_pad_layer1==0 && track_.gem_pad_layer2==0) { - edm::LogInfo("GEMDigiTrackMatch")<<"it has no layer on pad!"; - } - - // phi efficiency. - if( fabs(track_.eta) < maxEta_ && fabs( track_.eta) > minEta_ ) { - track_phi->Fill( track_.phi); - if ( track_.gem_dg_layer1 > 0 ) { - dg_phi[0]->Fill ( track_.phi ); - } - if ( track_.gem_dg_layer2 > 0 ) { - dg_phi[1]->Fill ( track_.phi ); - } - if ( track_.gem_dg_layer1 > 0 || track_.gem_dg_layer2 > 0 ) { - dg_phi[2]->Fill( track_.phi ); - } - if ( track_.gem_dg_layer1 > 0 && track_.gem_dg_layer2 > 0 ) { - dg_phi[3]->Fill( track_.phi ); - } - - if ( track_.gem_sh_layer1 > 0 ) { - dg_sh_phi[0]->Fill ( track_.phi); - } - if ( track_.gem_sh_layer2 > 0 ) { - dg_sh_phi[1]->Fill( track_.phi); - } - if (track_.gem_sh_layer1 >0 || track_.gem_sh_layer2>0 ) { - dg_sh_phi[2]->Fill( track_.phi); - } - if (track_.gem_sh_layer1 >0 && track_.gem_sh_layer2>0 ) { - dg_sh_phi[3]->Fill( track_.phi); - } - - - if ( track_.gem_pad_layer1 > 0 ) { - pad_phi[0]->Fill ( track_.phi ); - } - if ( track_.gem_pad_layer2 > 0 ) { - pad_phi[1]->Fill ( track_.phi ); - } - if ( track_.gem_pad_layer1 > 0 || track_.gem_pad_layer2>0 ) { - pad_phi[2]->Fill( track_.phi ); - } - if ( track_.gem_pad_layer1 > 0 && track_.gem_pad_layer2>0 ) { - pad_phi[3]->Fill( track_.phi ); - } - - } + track_eta->Fill( fabs( track_.eta)) ; + FillWithTrigger( dg_sh_eta, track_.gem_sh , fabs( track_.eta) ); + FillWithTrigger( dg_eta, track_.gem_dg , fabs( track_.eta) ); + FillWithTrigger( pad_eta, track_.gem_pad , fabs( track_.eta) ); + + if ( track_.eta> minEta_ && track_.eta< maxEta_) { + track_phi->Fill( fabs( track_.phi)) ; + FillWithTrigger( dg_sh_phi, track_.gem_sh , fabs( track_.phi) ); + FillWithTrigger( dg_phi, track_.gem_dg , fabs( track_.phi) ); + FillWithTrigger( pad_phi, track_.gem_pad , fabs( track_.phi) ); + } + // Calculation of the localXY efficiency GlobalPoint gp_track(match_sh.propagatedPositionGEM()); @@ -328,7 +234,7 @@ void GEMDigiTrackMatch::analyze(const edm::Event& iEvent, const edm::EventSetup& track_.has_gem_dg_l2 |= 1; track_.has_gem_pad_l2 |= 1; } - +/* dg_lx_even->Fill( track_.gem_lx_even); dg_lx_odd->Fill( track_.gem_lx_odd); dg_ly_even->Fill( track_.gem_ly_even); @@ -366,5 +272,7 @@ void GEMDigiTrackMatch::analyze(const edm::Event& iEvent, const edm::EventSetup& dg_lx_odd_l1and2->Fill ( track_.gem_lx_odd); dg_ly_odd_l1and2->Fill ( track_.gem_ly_odd); } +*/ + } }