32 theSTAMuonLabel =
pset.getUntrackedParameter<
string>(
"StandAloneTrackCollectionLabel");
33 theSeedCollectionLabel =
pset.getUntrackedParameter<
string>(
"MuonSeedCollectionLabel");
34 theDataType =
pset.getUntrackedParameter<
string>(
"DataType");
36 if (theDataType !=
"RealData" && theDataType !=
"SimData")
37 edm::LogInfo(
"PhysicsObjectsMonitor") <<
"Error in Data Type!!" << endl;
39 if (theDataType ==
"SimData") {
40 edm::LogInfo(
"PhysicsObjectsMonitor") <<
"Sorry! Running this package on simulation is no longer supported! ";
45 consumes<reco::TrackCollection>(
pset.getUntrackedParameter<
string>(
"StandAloneTrackCollectionLabel"));
54 hPres = iBooker.
book1D(
"pTRes",
"pT Resolution", 100, -2, 2);
55 h1_Pres = iBooker.
book1D(
"invPTRes",
"1/pT Resolution", 100, -2, 2);
57 charge = iBooker.
book1D(
"charge",
"track charge", 5, -2.5, 2.5);
58 ptot = iBooker.
book1D(
"ptot",
"track momentum", 50, 0, 50);
59 pt = iBooker.
book1D(
"pt",
"track pT", 100, 0, 50);
60 px = iBooker.
book1D(
"px ",
"track px", 100, -50, 50);
61 py = iBooker.
book1D(
"py",
"track py", 100, -50, 50);
62 pz = iBooker.
book1D(
"pz",
"track pz", 100, -50, 50);
63 Nmuon = iBooker.
book1D(
"Nmuon",
"Number of muon tracks", 11, -.5, 10.5);
64 Nrechits = iBooker.
book1D(
"Nrechits",
"Number of RecHits/Segments on track", 21, -.5, 21.5);
65 NDThits = iBooker.
book1D(
"NDThits",
"Number of DT Hits/Segments on track", 31, -.5, 31.5);
66 NCSChits = iBooker.
book1D(
"NCSChits",
"Number of CSC Hits/Segments on track", 31, -.5, 31.5);
67 NRPChits = iBooker.
book1D(
"NRPChits",
"Number of RPC hits on track", 11, -.5, 11.5);
69 DTvsCSC = iBooker.
book2D(
"DTvsCSC",
"Number of DT vs CSC hits on track", 29, -.5, 28.5, 29, -.5, 28.5);
70 TH2F *root_ob = DTvsCSC->
getTH2F();
71 root_ob->SetXTitle(
"Number of DT hits");
72 root_ob->SetYTitle(
"Number of CSC hits");
76 edm::LogInfo(
"PhysicsObjectsMonitor") <<
"Run: " <<
event.id().run() <<
" Event: " <<
event.id().event();
81 event.getByToken(theSTAMuonToken_,
staTracks);
83 const auto &theMGField =
eventSetup.getHandle(magFiledToken_);
88 reco::TrackCollection::const_iterator staTrack;
101 if ((*it)->isValid()) {
102 edm::LogInfo(
"PhysicsObjectsMonitor") <<
"Analyzer: Aha this looks like a Rechit!" << std::endl;
110 edm::LogInfo(
"PhysicsObjectsMonitor") <<
"This is an UNKNOWN hit !! " << std::endl;
116 Nrechits->Fill(nrechits);
117 NDThits->Fill(nDThits);
118 NCSChits->Fill(nCSChits);
119 DTvsCSC->Fill(nDThits, nCSChits);
120 NRPChits->Fill(nRPChits);
122 debug.dumpFTS(
track.impactPointTSCP().theState());
124 recPt =
track.impactPointTSCP().momentum().perp();
126 <<
" p: " <<
track.impactPointTSCP().momentum().mag() <<
" pT: " <<
recPt << endl;
128 ptot->Fill(
track.impactPointTSCP().momentum().mag());
130 px->Fill(
track.impactPointTSCP().momentum().x());
131 py->Fill(
track.impactPointTSCP().momentum().y());
132 pz->Fill(
track.impactPointTSCP().momentum().z());
135 if (
recPt && theDataType ==
"SimData") {
136 hPres->Fill((
recPt - simPt) / simPt);
137 h1_Pres->Fill((1 /
recPt - 1 / simPt) / (1 / simPt));
virtual void setCurrentFolder(std::string const &fullpath)
#define DEFINE_FWK_MODULE(type)
PhysicsObjectsMonitor(const edm::ParameterSet &pset)
Constructor.
virtual TH2F * getTH2F() const
void analyze(const edm::Event &event, const edm::EventSetup &eventSetup) override
void bookHistograms(DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
Log< level::Info, false > LogInfo
MonitorElement * book2D(TString const &name, TString const &title, int nchX, double lowX, double highX, int nchY, double lowY, double highY, FUNC onbooking=NOOP())
~PhysicsObjectsMonitor() override
Destructor.
MonitorElement * book1D(TString const &name, TString const &title, int const nchX, double const lowX, double const highX, FUNC onbooking=NOOP())