17 : m_gctinp_tag(iConfig.getUntrackedParameter<edm::
InputTag>(
"rctInputTag", edm::
InputTag(
"rctDigis"))),
18 m_energy_tag(iConfig.getUntrackedParameter<edm::
InputTag>(
"gctInputTag", edm::
InputTag(
"gctDigis"))),
39 double lsbForEt = jfPars.product()->getRgnEtLsbGeV();
40 double lsbForHt = jfPars.product()->getHtLsbGeV();
42 unsigned httJetThreshold =
static_cast<int>(jfPars.product()->getHtJetEtThresholdGeV() / lsbForHt);
43 unsigned htmJetThreshold =
static_cast<int>(jfPars.product()->getMHtJetEtThresholdGeV() / lsbForHt);
67 for (L1GctEtTotalCollection::const_iterator jbx = sumEtColl->begin(); jbx != sumEtColl->end(); jbx++) {
69 etTot =
static_cast<double>(jbx->et());
74 for (L1GctEtHadCollection::const_iterator jbx = sumHtColl->begin(); jbx != sumHtColl->end(); jbx++) {
76 etHad =
static_cast<double>(jbx->et());
82 for (L1GctEtMissCollection::const_iterator jbx = missEtColl->begin(); jbx != missEtColl->end(); jbx++) {
84 etMiss =
static_cast<double>(jbx->et());
85 int phibin = jbx->phi();
88 double etMPhi =
static_cast<double>(phibin);
90 etMAng = (etMPhi + 0.5) *
M_PI / 36.;
94 double etTotFromRegions = 0.0;
95 double exTotFromRegions = 0.0;
96 double eyTotFromRegions = 0.0;
97 for (L1CaloRegionCollection::const_iterator jrg = inputColl->begin(); jrg != inputColl->end(); jrg++) {
99 double rgEt =
static_cast<double>(jrg->et()) * lsbForEt;
100 double rgPhibin =
static_cast<double>(jrg->id().iphi());
101 double rgPh = (rgPhibin + 0.5) *
M_PI / 9.;
103 etTotFromRegions += rgEt;
104 exTotFromRegions += rgEt *
cos(rgPh);
105 eyTotFromRegions += rgEt *
sin(rgPh);
109 double htMissGct = 0.0;
110 double htMissAng = 0.0;
111 double htMissGeV = 0.0;
112 for (L1GctHtMissCollection::const_iterator jbx = missHtColl->begin(); jbx != missHtColl->end(); jbx++) {
113 if (jbx->bx() == 0) {
114 htMissGct =
static_cast<double>(jbx->et());
115 htMissGeV = htMissScale->et(jbx->et());
116 int phibin = jbx->phi();
119 double htMPhi =
static_cast<double>(phibin);
120 htMissAng = (htMPhi + 0.5) *
M_PI / 9.;
124 double htFromJets = 0.0;
125 double hxFromJets = 0.0;
126 double hyFromJets = 0.0;
127 for (L1GctInternJetDataCollection::const_iterator
jet = internalJetsColl->begin();
jet != internalJetsColl->end();
129 if (
jet->bx() == 0 && !
jet->empty()) {
130 unsigned jetEtGct =
jet->et();
131 double jetEt =
static_cast<double>(jetEtGct);
132 int phibin =
jet->regionId().iphi();
136 double jetAng = (
static_cast<double>(phibin)) *
M_PI / 9.;
137 if (jetEtGct > httJetThreshold) {
140 if (jetEtGct > htmJetThreshold) {
141 hxFromJets += jetEt *
cos(jetAng);
142 hyFromJets += jetEt *
sin(jetAng);
147 double dPhiMetMht =
deltaPhi(etMAng, htMissAng);
158 if (htMissGct < 126.5) {
166 sqrt(exTotFromRegions * exTotFromRegions + eyTotFromRegions * eyTotFromRegions));
169 sqrt(exTotFromRegions * exTotFromRegions + eyTotFromRegions * eyTotFromRegions));
177 if (htMissGct < 126.5) {
190 for (L1GctHFRingEtSumsCollection::const_iterator es = HFEtSumsColl->begin(); es != HFEtSumsColl->end(); es++) {
199 for (L1GctHFBitCountsCollection::const_iterator bc = HFCountsColl->begin(); bc != HFCountsColl->end(); bc++) {
215 theSumEtInLsb = dir0.
make<TH1F>(
"SumEtInLsb",
"Total Et (GCT units)", 128, 0., 2048.);
216 theSumHtInLsb = dir0.
make<TH1F>(
"SumHtInLsb",
"Total Ht (GCT units)", 128, 0., 2048.);
217 theMissEtInLsb = dir0.
make<TH1F>(
"MissEtInLsb",
"Missing Et magnitude (GCT units)", 128, 0., 1024.);
218 theMissHtInLsb = dir0.
make<TH1F>(
"MissHtInLsb",
"Missing Ht magnitude (GCT units)", 128, 0., 127.);
219 theSumEtInGeV = dir0.
make<TH1F>(
"SumEtInGeV",
"Total Et (in GeV)", 100, 0., 1000.);
220 theSumHtInGeV = dir0.
make<TH1F>(
"SumHtInGeV",
"Total Ht (in GeV)", 100, 0., 1000.);
221 theMissEtInGeV = dir0.
make<TH1F>(
"MissEtInGeV",
"Missing Et magnitude (in GeV)", 100, 0., 500.);
223 theMissEtVector = dir0.
make<TH2F>(
"MissEtVector",
"Missing Ex vs Missing Ey", 100, -100., 100., 100, -100., 100.);
224 theMissHtInGeV = dir0.
make<TH1F>(
"MissHtInGeV",
"Missing Ht magnitude (in GeV)", 100, 0., 500.);
226 theMissHtVector = dir0.
make<TH2F>(
"MissHtVector",
"Missing Hx vs Missing Hy", 100, -100., 100., 100, -100., 100.);
228 dir0.
make<TH2F>(
"SumEtVsInputRegions",
"Total Et vs sum of input regions", 100, 0., 1000., 100, 0., 1000.);
230 "MissEtMagVsInputRegions",
"Missing Et magnitude vs sum of input regions", 100, 0., 500., 100, 0., 500.);
232 "MissEtAngleVsInputRegions",
"Missing Et angle vs sum of input regions", 72, -
M_PI,
M_PI, 72, -
M_PI,
M_PI);
234 "MissHtMagVsInputRegions",
"Missing Ht magnitude vs sum of input regions", 100, 0., 500., 100, 0., 500.);
235 theMissEtVsMissHt = dir0.
make<TH2F>(
"MissEtVsMissHt",
"Missing Et vs Missing Ht", 100, 0., 500., 100, 0., 500.);
237 "MissEtVsMissHtAngle",
"Angle correlation Missing Et vs Missing Ht", 72, -
M_PI,
M_PI, 72, -
M_PI,
M_PI);
239 dir0.
make<TH2F>(
"theDPhiVsMissEt",
"Angle difference MET-MHT vs MET magnitude", 72, -
M_PI,
M_PI, 100, 0., 500.);
241 dir0.
make<TH2F>(
"theDPhiVsMissHt",
"Angle difference MET-MHT vs MHT magnitude", 72, -
M_PI,
M_PI, 100, 0., 500.);
244 "HtVsInternalJetsSum",
"Ht vs scalar sum of jet Et values (in GeV)", 128, 0., 2048., 128, 0., 2048.);
246 "MissHtVsInternalJetsSum",
"Missing Ht vs vector sum of jet Et values (in GeV)", 128, 0., 512., 128, 0., 512.);
248 "Angle correlation Missing Ht vs vector sum of jet Et values",
256 "Missing Ht x component vs sum of jet Et values (in GeV)",
264 "Missing Ht y component vs sum of jet Et values (in GeV)",
TH1F * theHfRing1EtSumPositiveEta
TH2F * theMissHxVsInternalJetsSum
TH2F * theMissHtVsInternalJetsSum
#define DEFINE_FWK_MODULE(type)
Sin< T >::type sin(const T &t)
TH2F * theHtVsInternalJetsSum
L1GctValidation(const edm::ParameterSet &)
edm::ESGetToken< L1CaloEtScale, L1HtMissScaleRcd > m_htMissScaleToken
TH2F * theMissHyVsInternalJetsSum
TH1F * theHfRing1CountPositiveEta
TH1F * theHfRing0EtSumPositiveEta
TH1F * theHfRing0CountNegativeEta
edm::ESGetToken< L1GctJetFinderParams, L1GctJetFinderParamsRcd > m_jfParsToken
Cos< T >::type cos(const T &t)
TH2F * theSumEtVsInputRegions
edm::InputTag m_energy_tag
T * make(const Args &...args) const
make new ROOT object
TH2F * theMissEtAngleVsInputRegions
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
TH1F * theHfRing1EtSumNegativeEta
edm::InputTag m_gctinp_tag
TH1F * theHfRing1CountNegativeEta
TFileDirectory mkdir(const std::string &dir, const std::string &descr="")
create a new subdirectory
void analyze(const edm::Event &, const edm::EventSetup &) override
~L1GctValidation() override
edm::ESGetToken< L1CaloEtScale, L1HfRingEtScaleRcd > m_hfRingEtScaleToken
TH1F * theHfRing0CountPositiveEta
TH2F * theMissHtPhiVsInternalJetsSum
ESHandle< T > getHandle(const ESGetToken< T, R > &iToken) const
TH1F * theHfRing0EtSumNegativeEta
TH2F * theMissEtVsMissHtAngle
TH2F * theMissEtMagVsInputRegions
TH2F * theMissHtMagVsInputRegions