|
void | beginJob () override |
|
| CSCSkim (const edm::ParameterSet &pset) |
|
void | endJob () override |
|
bool | filter (edm::Event &event, const edm::EventSetup &eventSetup) override |
|
| ~CSCSkim () override |
|
| EDFilter ()=default |
|
| EDFilter (const EDFilter &)=delete |
|
SerialTaskQueue * | globalLuminosityBlocksQueue () final |
|
SerialTaskQueue * | globalRunsQueue () final |
|
bool | hasAbilityToProduceInBeginLumis () const final |
|
bool | hasAbilityToProduceInBeginProcessBlocks () const final |
|
bool | hasAbilityToProduceInBeginRuns () const final |
|
bool | hasAbilityToProduceInEndLumis () const final |
|
bool | hasAbilityToProduceInEndProcessBlocks () const final |
|
bool | hasAbilityToProduceInEndRuns () const final |
|
const EDFilter & | operator= (const EDFilter &)=delete |
|
bool | wantsGlobalLuminosityBlocks () const final |
|
bool | wantsGlobalRuns () const final |
|
bool | wantsInputProcessBlocks () const final |
|
bool | wantsProcessBlocks () const final |
|
| EDFilterBase () |
|
ModuleDescription const & | moduleDescription () const |
|
bool | wantsStreamLuminosityBlocks () const |
|
bool | wantsStreamRuns () const |
|
| ~EDFilterBase () override |
|
void | callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func) |
|
std::vector< edm::ProductResolverIndex > const & | indiciesForPutProducts (BranchType iBranchType) const |
|
| ProducerBase () |
|
std::vector< edm::ProductResolverIndex > const & | putTokenIndexToProductResolverIndex () const |
|
std::vector< bool > const & | recordProvenanceList () const |
|
void | registerProducts (ProducerBase *, ProductRegistry *, ModuleDescription const &) |
|
std::function< void(BranchDescription const &)> | registrationCallback () const |
| used by the fwk to register list of products More...
|
|
void | resolvePutIndicies (BranchType iBranchType, ModuleToResolverIndicies const &iIndicies, std::string const &moduleLabel) |
|
TypeLabelList const & | typeLabelList () const |
| used by the fwk to register the list of products of this module More...
|
|
| ~ProducerBase () noexcept(false) override |
|
std::vector< ConsumesInfo > | consumesInfo () const |
|
void | convertCurrentProcessAlias (std::string const &processName) |
| Convert "@currentProcess" in InputTag process names to the actual current process name. More...
|
|
| EDConsumerBase () |
|
| EDConsumerBase (EDConsumerBase const &)=delete |
|
| EDConsumerBase (EDConsumerBase &&)=default |
|
ESProxyIndex const * | esGetTokenIndices (edm::Transition iTrans) const |
|
std::vector< ESProxyIndex > const & | esGetTokenIndicesVector (edm::Transition iTrans) const |
|
std::vector< ESRecordIndex > const & | esGetTokenRecordIndicesVector (edm::Transition iTrans) const |
|
ProductResolverIndexAndSkipBit | indexFrom (EDGetToken, BranchType, TypeID const &) const |
|
void | itemsMayGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const |
|
void | itemsToGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const |
|
std::vector< ProductResolverIndexAndSkipBit > const & | itemsToGetFrom (BranchType iType) const |
|
void | labelsForToken (EDGetToken iToken, Labels &oLabels) const |
|
void | modulesWhoseProductsAreConsumed (std::array< std::vector< ModuleDescription const *> *, NumBranchTypes > &modulesAll, std::vector< ModuleProcessName > &modulesInPreviousProcesses, ProductRegistry const &preg, std::map< std::string, ModuleDescription const *> const &labelsToDesc, std::string const &processName) const |
|
EDConsumerBase const & | operator= (EDConsumerBase const &)=delete |
|
EDConsumerBase & | operator= (EDConsumerBase &&)=default |
|
bool | registeredToConsume (ProductResolverIndex, bool, BranchType) const |
|
bool | registeredToConsumeMany (TypeID const &, BranchType) const |
|
void | selectInputProcessBlocks (ProductRegistry const &productRegistry, ProcessBlockHelperBase const &processBlockHelperBase) |
|
ProductResolverIndexAndSkipBit | uncheckedIndexFrom (EDGetToken) const |
|
void | updateLookup (BranchType iBranchType, ProductResolverIndexHelper const &, bool iPrefetchMayGet) |
|
void | updateLookup (eventsetup::ESRecordsToProxyIndices const &) |
|
virtual | ~EDConsumerBase () noexcept(false) |
|
|
typedef EDFilterBase | ModuleType |
|
using | ModuleToResolverIndicies = std::unordered_multimap< std::string, std::tuple< edm::TypeID const *, const char *, edm::ProductResolverIndex > > |
|
typedef ProductRegistryHelper::TypeLabelList | TypeLabelList |
|
typedef ProductLabels | Labels |
|
static const std::string & | baseType () |
|
static void | fillDescriptions (ConfigurationDescriptions &descriptions) |
|
static void | prevalidate (ConfigurationDescriptions &descriptions) |
|
template<Transition Tr = Transition::Event> |
auto | produces (std::string instanceName) noexcept |
| declare what type of product will make and with which optional label More...
|
|
template<Transition B> |
BranchAliasSetter | produces (const TypeID &id, std::string instanceName=std::string(), bool recordProvenance=true) |
|
template<BranchType B> |
BranchAliasSetter | produces (const TypeID &id, std::string instanceName=std::string(), bool recordProvenance=true) |
|
BranchAliasSetter | produces (const TypeID &id, std::string instanceName=std::string(), bool recordProvenance=true) |
|
template<typename ProductType , Transition B> |
BranchAliasSetterT< ProductType > | produces (std::string instanceName) |
|
template<class ProductType > |
BranchAliasSetterT< ProductType > | produces () |
|
template<typename ProductType , BranchType B> |
BranchAliasSetterT< ProductType > | produces (std::string instanceName) |
|
template<typename ProductType , BranchType B> |
BranchAliasSetterT< ProductType > | produces () |
|
template<class ProductType > |
BranchAliasSetterT< ProductType > | produces (std::string instanceName) |
|
template<typename ProductType , Transition B> |
BranchAliasSetterT< ProductType > | produces () |
|
template<Transition Tr = Transition::Event> |
auto | produces () noexcept |
|
ProducesCollector | producesCollector () |
|
template<typename ProductType , BranchType B = InEvent> |
EDGetTokenT< ProductType > | consumes (edm::InputTag const &tag) |
|
template<BranchType B = InEvent> |
EDConsumerBaseAdaptor< B > | consumes (edm::InputTag tag) noexcept |
|
EDGetToken | consumes (const TypeToGet &id, edm::InputTag const &tag) |
|
template<BranchType B> |
EDGetToken | consumes (TypeToGet const &id, edm::InputTag const &tag) |
|
ConsumesCollector | consumesCollector () |
| Use a ConsumesCollector to gather consumes information from helper functions. More...
|
|
template<typename ProductType , BranchType B = InEvent> |
void | consumesMany () |
|
void | consumesMany (const TypeToGet &id) |
|
template<BranchType B> |
void | consumesMany (const TypeToGet &id) |
|
template<typename ESProduct , typename ESRecord , Transition Tr = Transition::Event> |
auto | esConsumes () |
|
template<typename ESProduct , typename ESRecord , Transition Tr = Transition::Event> |
auto | esConsumes (ESInputTag const &tag) |
|
template<Transition Tr = Transition::Event> |
constexpr auto | esConsumes () |
|
template<Transition Tr = Transition::Event> |
auto | esConsumes (ESInputTag tag) |
|
template<Transition Tr = Transition::Event> |
ESGetTokenGeneric | esConsumes (eventsetup::EventSetupRecordKey const &iRecord, eventsetup::DataKey const &iKey) |
| Used with EventSetupRecord::doGet. More...
|
|
template<typename ProductType , BranchType B = InEvent> |
EDGetTokenT< ProductType > | mayConsume (edm::InputTag const &tag) |
|
EDGetToken | mayConsume (const TypeToGet &id, edm::InputTag const &tag) |
|
template<BranchType B> |
EDGetToken | mayConsume (const TypeToGet &id, edm::InputTag const &tag) |
|
void | resetItemsToGetFrom (BranchType iType) |
|
This simple program selects minimal CSC events for output.
Michael Schmitt, Northwestern University, July 2008
Description: Offline skim module for CSC cosmic ray data
Implementation: <Notes on="" implementation>="">
Definition at line 72 of file CSCSkim.h.
Definition at line 51 of file CSCSkim.cc.
References demandChambersBothSides, glm_token, histogramFileName, HLT_2022v12_cff::InputTag, makeHistograms, makeHistogramsForMessyEvents, minimumHitChambers, minimumSegments, nCSCHitsMin, nLayersWithHitsMinimum, nTrHitsMin, nValidHitsMin, outputFileName, pMin, muonDTDigis_cfi::pset, redChiSqMax, rExtMax, rh_token, sam_token, sdr_token, sds_token, seg_token, AlCaHLTBitMon_QueryRunRegistry::string, trk_token, typeOfSkim, wdr_token, wds_token, whichChamber, whichEndcap, whichRing, whichStation, zInnerMax, zLengthMin, and zLengthTrMin.
90 pMin =
pset.getUntrackedParameter<
double>(
"pMin", 3.);
91 zLengthMin =
pset.getUntrackedParameter<
double>(
"zLengthMin", 200.);
93 zInnerMax =
pset.getUntrackedParameter<
double>(
"zInnerMax", 9000.);
96 rExtMax =
pset.getUntrackedParameter<
double>(
"rExtMax", 3000.);
100 LogInfo(
"[CSCSkim] Setup") <<
"\n\t===== CSCSkim =====\n" 101 <<
"\t\ttype of skim ...............................\t" <<
typeOfSkim 104 <<
"\n\t\tminimum number of segments ...............\t" <<
minimumSegments 106 <<
"\n\t\tmake histograms...........................\t" <<
makeHistograms 108 <<
"\n\t===================\n\n";
edm::EDGetTokenT< CSCSegmentCollection > seg_token
edm::EDGetTokenT< reco::TrackCollection > sam_token
bool makeHistogramsForMessyEvents
int nLayersWithHitsMinimum
edm::EDGetTokenT< CSCWireDigiCollection > wds_token
std::string outputFileName
edm::EDGetTokenT< reco::TrackCollection > trk_token
edm::EDGetTokenT< reco::MuonCollection > glm_token
std::string histogramFileName
edm::EDGetTokenT< CSCStripDigiCollection > sds_token
edm::EDGetTokenT< CSCRecHit2DCollection > rh_token
Log< level::Info, false > LogInfo
const edm::ESGetToken< CSCGeometry, MuonGeometryRecord > m_CSCGeomToken
edm::EDGetTokenT< CSCWireDigiCollection > wdr_token
edm::EDGetTokenT< CSCStripDigiCollection > sdr_token
bool demandChambersBothSides
void CSCSkim::beginJob |
( |
void |
| ) |
|
|
overridevirtual |
Reimplemented from edm::one::EDFilterBase.
Definition at line 119 of file CSCSkim.cc.
References histogramFileName, hxnHitChambers, hxnRecHits, hxnRecHitsSel, hxnSegments, iEvent, iRun, makeHistograms, makeHistogramsForMessyEvents, mevnChambers0, mevnChambers1, mevnRecHits0, mevnRecHits1, mevnSegments0, mevnSegments1, nEventsAnalyzed, nEventsCertainChamber, nEventsChambersBothSides, nEventsDTOverlap, nEventsForBFieldStudies, nEventsHaloLike, nEventsLongSATrack, nEventsMessy, nEventsOverlappingChambers, nEventsSelected, theHistogramFile, xxnCSCHits, xxnTrackerHits, xxnValidHits, xxP, and xxredChiSq.
141 hxnRecHits =
new TH1F(
"hxnRecHits",
"n RecHits", 61, -0.5, 60.5);
142 hxnSegments =
new TH1F(
"hxnSegments",
"n Segments", 11, -0.5, 10.5);
143 hxnHitChambers =
new TH1F(
"hxnHitsChambers",
"n chambers with hits", 11, -0.5, 10.5);
144 hxnRecHitsSel =
new TH1F(
"hxnRecHitsSel",
"n RecHits selected", 61, -0.5, 60.5);
146 xxP =
new TH1F(
"xxP",
"P global", 100, 0., 200.);
147 xxnValidHits =
new TH1F(
"xxnValidHits",
"n valid hits global", 61, -0.5, 60.5);
148 xxnTrackerHits =
new TH1F(
"xxnTrackerHits",
"n tracker hits global", 61, -0.5, 60.5);
149 xxnCSCHits =
new TH1F(
"xxnCSCHits",
"n CSC hits global", 41, -0.5, 40.5);
150 xxredChiSq =
new TH1F(
"xxredChiSq",
"red chisq global", 100, 0., 100.);
154 mevnRecHits0 =
new TH1F(
"mevnRecHits0",
"n RecHits", 121, -0.5, 120.5);
155 mevnChambers0 =
new TH1F(
"mevnChambers0",
"n chambers with hits", 21, -0.5, 20.5);
156 mevnSegments0 =
new TH1F(
"mevnSegments0",
"n Segments", 21, -0.5, 20.5);
157 mevnRecHits1 =
new TH1F(
"mevnRecHits1",
"n RecHits", 100, 0., 300.);
158 mevnChambers1 =
new TH1F(
"mevnChambers1",
"n chambers with hits", 50, 0., 50.);
159 mevnSegments1 =
new TH1F(
"mevnSegments1",
"n Segments", 30, 0., 30.);
bool makeHistogramsForMessyEvents
int nEventsForBFieldStudies
int nEventsChambersBothSides
int nEventsOverlappingChambers
std::string histogramFileName
int nEventsCertainChamber
Definition at line 1109 of file CSCSkim.cc.
References funct::abs(), MuonSubdetId::CSC, L1TkHTMissProducer_cfi::deltaZ, MuonSubdetId::DT, spr::goodTrack(), trackingPlots::hp, DetId::Muon, HLT_2022v12_cff::muon, dqmiodumpmetadata::n, nCSCHitsMin, nTrHitsMin, nValidHitsMin, pMin, redChiSqMax, rExtMax, mathSSE::sqrt(), HLT_2022v12_cff::track, tracks, zInnerMax, zLengthMin, and zLengthTrMin.
Referenced by filter().
1112 bool acceptThisEvent =
false;
1117 int nGoodSAMuons = 0;
1118 for (reco::TrackCollection::const_iterator
muon = saMuons->begin();
muon != saMuons->end(); ++
muon) {
1119 float preco =
muon->p();
1122 GlobalPoint iPnt(innerPo.x(), innerPo.y(), innerPo.z());
1124 GlobalPoint oPnt(outerPo.x(), outerPo.y(), outerPo.z());
1125 float zLength =
abs(iPnt.z() - oPnt.z());
1128 GlobalVector iP(innerMom.x(), innerMom.y(), innerMom.z());
1130 GlobalVector oP(outerMom.x(), outerMom.y(), outerMom.z());
1132 const float zRef = 300.;
1133 float xExt = 10000.;
1134 float yExt = 10000.;
1135 if (
abs(oPnt.z()) <
abs(iPnt.z())) {
1138 deltaZ = zRef - oPnt.z();
1140 deltaZ = -zRef - oPnt.z();
1142 xExt = oPnt.x() +
deltaZ * oP.x() / oP.z();
1143 yExt = oPnt.y() +
deltaZ * oP.y() / oP.z();
1147 deltaZ = zRef - iPnt.z();
1149 deltaZ = -zRef - iPnt.z();
1151 xExt = iPnt.x() +
deltaZ * iP.x() / iP.z();
1152 yExt = iPnt.y() +
deltaZ * iP.y() / iP.z();
1154 float rExt =
sqrt(xExt * xExt + yExt * yExt);
1161 const DetId detId((*hit)->geographicalId());
1173 if (
abs(iPnt.z()) <
abs(iPnt.z())) {
1192 int nGoodTracks = 0;
1194 float preco =
track->p();
1195 int n =
track->recHitsSize();
1198 GlobalPoint iPnt(innerPo.x(), innerPo.y(), innerPo.z());
1200 GlobalPoint oPnt(outerPo.x(), outerPo.y(), outerPo.z());
1201 float zLength =
abs(iPnt.z() - oPnt.z());
1204 GlobalVector iP(innerMom.x(), innerMom.y(), innerMom.z());
1206 GlobalVector oP(outerMom.x(), outerMom.y(), outerMom.z());
1208 const float zRef = 300.;
1209 float xExt = 10000.;
1210 float yExt = 10000.;
1211 if (
abs(oPnt.z()) >
abs(iPnt.z())) {
1214 deltaZ = zRef - oPnt.z();
1216 deltaZ = -zRef - oPnt.z();
1218 xExt = oPnt.x() +
deltaZ * oP.x() / oP.z();
1219 yExt = oPnt.y() +
deltaZ * oP.y() / oP.z();
1223 deltaZ = zRef - iPnt.z();
1225 deltaZ = -zRef - iPnt.z();
1227 xExt = iPnt.x() +
deltaZ * iP.x() / iP.z();
1228 yExt = iPnt.y() +
deltaZ * iP.y() / iP.z();
1230 float rExt =
sqrt(xExt * xExt + yExt * yExt);
1243 int nGoodGlobalMuons = 0;
1244 for (reco::MuonCollection::const_iterator global = gMuons->begin(); global != gMuons->end(); ++global) {
1245 if (global->isGlobalMuon()) {
1246 float pDef = global->p();
1247 float redChiSq = global->globalTrack()->normalizedChi2();
1251 int nTrackerHits =
hp.numberOfValidTrackerHits();
1258 hit != (global->globalTrack())->recHitsEnd();
1260 const DetId detId((*hit)->geographicalId());
1270 bool goodGlobalMuon =
1273 if (goodGlobalMuon) {
1284 acceptThisEvent = ((nGoodSAMuons > 0) && (nGoodTracks > 0)) || (nGoodGlobalMuons > 0);
1286 return acceptThisEvent;
bool goodTrack(const reco::Track *pTrack, math::XYZPoint leadPV, trackSelectionParameters parameters, bool debug=false)
Abs< T >::type abs(const T &t)
auto const & tracks
cannot be loose
XYZVectorD XYZVector
spatial vector with cartesian internal representation
XYZPointD XYZPoint
point in space with cartesian internal representation
Definition at line 375 of file CSCSkim.cc.
References CSCDetId::chamber(), chamberSerial(), dtChamberEfficiency_cfi::cscSegments, CSCDetId::endcap(), dqmMemoryStats::float, hxnHitChambers, hxnRecHits, hxnRecHitsSel, hxnSegments, mps_fire::i, createfilelist::int, dqmiolumiharvest::j, kLayer(), CSCDetId::layer(), LogDebug, makeHistograms, minimumHitChambers, minimumSegments, nEventsChambersBothSides, nLayersWithHitsMinimum, funct::pow(), CSCDetId::ring(), CSCDetId::station(), and typeOfSkim.
Referenced by filter().
378 int nRecHits = cscRecHits->size();
382 for (
int i = 0;
i < 600;
i++) {
391 for (recIt = cscRecHits->begin(); recIt != cscRecHits->end(); recIt++) {
394 int kEndcap = idrec.
endcap();
395 int kRing = idrec.
ring();
396 int kStation = idrec.
station();
397 int kChamber = idrec.
chamber();
401 int kSerial =
chamberSerial(kEndcap, kStation, kRing, kChamber);
406 cntRecHit[kSerial] += kDigit;
414 int nChambersWithMinimalHits = 0;
415 int nChambersWithMinimalHitsPOS = 0;
416 int nChambersWithMinimalHitsNEG = 0;
418 for (
int i = 0;
i < 600;
i++) {
419 if (cntRecHit[
i] > 0) {
420 int nLayersWithHits = 0;
422 for (
int j = 5;
j > -1;
j--) {
423 float digit =
dummy /
pow((
float)10., (
float)
j);
424 int kCount = (
int)digit;
431 nChambersWithMinimalHitsPOS++;
433 nChambersWithMinimalHitsNEG++;
438 nChambersWithMinimalHits = nChambersWithMinimalHitsPOS + nChambersWithMinimalHitsNEG;
454 if (nChambersWithMinimalHits > 0) {
464 bool chambersOnBothSides =
467 if (chambersOnBothSides) {
471 bool selectEvent =
false;
473 selectEvent = basicEvent;
476 selectEvent = chambersOnBothSides;
480 LogDebug(
"[CSCSkim]") <<
"----- nRecHits = " << nRecHits
481 <<
"\tnChambersWithMinimalHits = " << nChambersWithMinimalHits <<
"\tnSegments = " << nSegments
482 <<
"\tselect? " << selectEvent << std::endl;
int nLayersWithHitsMinimum
int nEventsChambersBothSides
C::const_iterator const_iterator
constant access iterator type
static const std::string kLayer("layer")
int chamberSerial(int kE, int kS, int kR, int kCh)
Power< A, B >::type pow(const A &a, const B &b)
Definition at line 592 of file CSCSkim.cc.
References CSCDetId::chamber(), chamberSerial(), dtChamberEfficiency_cfi::cscSegments, CSCDetId::endcap(), dqmMemoryStats::float, mps_fire::i, createfilelist::int, dqmiolumiharvest::j, kLayer(), CSCDetId::layer(), LogDebug, makeHistogramsForMessyEvents, mevnChambers0, mevnChambers1, mevnRecHits0, mevnRecHits1, mevnSegments0, mevnSegments1, nLayersWithHitsMinimum, funct::pow(), CSCDetId::ring(), and CSCDetId::station().
Referenced by filter().
595 int nRecHits = cscRecHits->size();
599 for (
int i = 0;
i < 600;
i++) {
608 for (recIt = cscRecHits->begin(); recIt != cscRecHits->end(); recIt++) {
611 int kEndcap = idrec.
endcap();
612 int kRing = idrec.
ring();
613 int kStation = idrec.
station();
614 int kChamber = idrec.
chamber();
618 int kSerial =
chamberSerial(kEndcap, kStation, kRing, kChamber);
623 cntRecHit[kSerial] += kDigit;
631 int nChambersWithMinimalHits = 0;
632 int nChambersWithMinimalHitsPOS = 0;
633 int nChambersWithMinimalHitsNEG = 0;
635 for (
int i = 0;
i < 600;
i++) {
636 if (cntRecHit[
i] > 0) {
637 int nLayersWithHits = 0;
639 for (
int j = 5;
j > -1;
j--) {
640 float digit =
dummy /
pow((
float)10., (
float)
j);
641 int kCount = (
int)digit;
648 nChambersWithMinimalHitsPOS++;
650 nChambersWithMinimalHitsNEG++;
655 nChambersWithMinimalHits = nChambersWithMinimalHitsPOS + nChambersWithMinimalHitsNEG;
672 double dummy = (double)nRecHits;
676 dummy = (double)nChambersWithMinimalHits;
680 dummy = (double)nSegments;
691 bool selectEvent =
false;
692 if ((nRecHits > 54) && (nChambersWithMinimalHits > 5)) {
697 LogDebug(
"[CSCSkim]") <<
"----- nRecHits = " << nRecHits
698 <<
"\tnChambersWithMinimalHits = " << nChambersWithMinimalHits <<
"\tnSegments = " << nSegments
699 <<
"\tselect? " << selectEvent << std::endl;
bool makeHistogramsForMessyEvents
int nLayersWithHitsMinimum
C::const_iterator const_iterator
constant access iterator type
static const std::string kLayer("layer")
int chamberSerial(int kE, int kS, int kR, int kCh)
Power< A, B >::type pow(const A &a, const B &b)
void CSCSkim::endJob |
( |
void |
| ) |
|
|
overridevirtual |
Reimplemented from edm::one::EDFilterBase.
Definition at line 167 of file CSCSkim.cc.
References dqmMemoryStats::float, HLT_2022v12_cff::fraction, hxnHitChambers, hxnRecHits, hxnRecHitsSel, hxnSegments, LogDebug, makeHistograms, makeHistogramsForMessyEvents, mevnChambers0, mevnChambers1, mevnRecHits0, mevnRecHits1, mevnSegments0, mevnSegments1, nEventsAnalyzed, nEventsCertainChamber, nEventsChambersBothSides, nEventsDTOverlap, nEventsForBFieldStudies, nEventsHaloLike, nEventsLongSATrack, nEventsMessy, nEventsOverlappingChambers, nEventsSelected, theHistogramFile, and typeOfSkim.
175 LogInfo(
"[CSCSkim] Summary") <<
"\n\n\t====== CSCSkim ==========================================================\n" 176 <<
"\t\ttype of skim ...............................\t" <<
typeOfSkim <<
"\n" 179 <<
"\tfraction= " <<
fraction << std::endl
182 <<
"\t\tevents lots of hit chambers . \t" <<
nEventsMessy <<
"\n" 188 <<
"\t=========================================================================\n\n";
192 LogDebug(
"[CSCSkim]") <<
"======= write out my histograms ====\n";
bool makeHistogramsForMessyEvents
int nEventsForBFieldStudies
int nEventsChambersBothSides
int nEventsOverlappingChambers
Log< level::Info, false > LogInfo
int nEventsCertainChamber
Implements edm::one::EDFilterBase.
Definition at line 215 of file CSCSkim.cc.
References dtChamberEfficiency_cfi::cscSegments, doBFieldStudySelection(), doCertainChamberSelection(), doCSCSkimming(), doDTOverlap(), doHaloLike(), doLongSATrack(), doMessyEventSkimming(), doOverlapSkimming(), options_cfi::eventSetup, glm_token, iEvent, iRun, LogDebug, m_CSCGeomToken, nEventsAnalyzed, nEventsCertainChamber, nEventsDTOverlap, nEventsForBFieldStudies, nEventsHaloLike, nEventsLongSATrack, nEventsMessy, nEventsOverlappingChambers, nEventsSelected, rh_token, sam_token, sdr_token, sds_token, seg_token, DigiDM_cff::strips, tracks, trk_token, typeOfSkim, wdr_token, wds_token, and DigiDM_cff::wires.
219 iRun =
event.id().run();
220 iEvent =
event.id().event();
231 if (
event.eventAuxiliary().isRealData()) {
241 event.getByToken(
rh_token, cscRecHits);
267 bool basicEvent =
false;
273 bool goodOverlapEvent =
false;
276 if (goodOverlapEvent) {
282 bool messyEvent =
false;
291 bool hasChamber =
false;
300 bool DTOverlapCandidate =
false;
303 if (DTOverlapCandidate) {
309 bool HaloLike =
false;
318 bool LongSATrack =
false;
327 bool GoodForBFieldStudy =
false;
330 if (GoodForBFieldStudy) {
336 bool selectThisEvent =
false;
338 selectThisEvent = basicEvent;
341 selectThisEvent = goodOverlapEvent;
344 selectThisEvent = messyEvent;
347 selectThisEvent = hasChamber;
350 selectThisEvent = DTOverlapCandidate;
353 selectThisEvent = HaloLike;
356 selectThisEvent = LongSATrack;
359 selectThisEvent = GoodForBFieldStudy;
362 if (selectThisEvent) {
366 return selectThisEvent;
edm::EDGetTokenT< CSCSegmentCollection > seg_token
edm::EDGetTokenT< reco::TrackCollection > sam_token
int nEventsForBFieldStudies
edm::EDGetTokenT< CSCWireDigiCollection > wds_token
bool doLongSATrack(edm::Handle< reco::TrackCollection > saTracks)
bool doOverlapSkimming(edm::Handle< CSCSegmentCollection > cscSegments)
bool doDTOverlap(edm::Handle< CSCSegmentCollection > cscSegments)
int nEventsOverlappingChambers
edm::EDGetTokenT< reco::TrackCollection > trk_token
edm::EDGetTokenT< reco::MuonCollection > glm_token
edm::EDGetTokenT< CSCStripDigiCollection > sds_token
edm::EDGetTokenT< CSCRecHit2DCollection > rh_token
bool doCSCSkimming(edm::Handle< CSCRecHit2DCollection > cscRecHits, edm::Handle< CSCSegmentCollection > cscSegments)
bool doCertainChamberSelection(edm::Handle< CSCWireDigiCollection > wires, edm::Handle< CSCStripDigiCollection > strips)
bool doBFieldStudySelection(edm::Handle< reco::TrackCollection > saTracks, edm::Handle< reco::TrackCollection > Tracks, edm::Handle< reco::MuonCollection > gMuons)
int nEventsCertainChamber
auto const & tracks
cannot be loose
bool doMessyEventSkimming(edm::Handle< CSCRecHit2DCollection > cscRecHits, edm::Handle< CSCSegmentCollection > cscSegments)
const edm::ESGetToken< CSCGeometry, MuonGeometryRecord > m_CSCGeomToken
strips
#turn off noise in all subdetectors simHcalUnsuppressedDigis.doNoise = False mix.digitizers.hcal.doNoise = False simEcalUnsuppressedDigis.doNoise = False mix.digitizers.ecal.doNoise = False simEcalUnsuppressedDigis.doESNoise = False simSiPixelDigis.AddNoise = False mix.digitizers.pixel.AddNoise = False simSiStripDigis.Noise = False mix.digitizers.strip.AddNoise = False
edm::EDGetTokenT< CSCWireDigiCollection > wdr_token
edm::EDGetTokenT< CSCStripDigiCollection > sdr_token
bool doHaloLike(edm::Handle< CSCSegmentCollection > cscSegments)