|
|
#include <CSCEfficiency.h>
|
| CSCEfficiency (const edm::ParameterSet &pset) |
| Constructor. More...
|
|
| ~CSCEfficiency () override |
| Destructor. More...
|
|
| EDFilter () |
|
SerialTaskQueue * | globalLuminosityBlocksQueue () |
|
SerialTaskQueue * | globalRunsQueue () |
|
ModuleDescription const & | moduleDescription () const |
|
| ~EDFilter () 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 &&)=default |
|
| EDConsumerBase (EDConsumerBase const &)=delete |
|
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 & | operator= (EDConsumerBase &&)=default |
|
EDConsumerBase const & | operator= (EDConsumerBase const &)=delete |
|
bool | registeredToConsume (ProductResolverIndex, bool, BranchType) const |
|
bool | registeredToConsumeMany (TypeID const &, BranchType) const |
|
ProductResolverIndexAndSkipBit | uncheckedIndexFrom (EDGetToken) const |
|
void | updateLookup (BranchType iBranchType, ProductResolverIndexHelper const &, bool iPrefetchMayGet) |
|
void | updateLookup (eventsetup::ESRecordsToProxyIndices const &) |
|
virtual | ~EDConsumerBase () noexcept(false) |
|
|
bool | applyTrigger (edm::Handle< edm::TriggerResults > &hltR, const edm::TriggerNames &triggerNames) |
|
void | beginJob () override |
|
void | chamberCandidates (int station, int ring, float phi, std::vector< int > &coupleOfChambers) |
|
bool | checkLocal (double yLocal, double yBoundary, int station, int ring) |
|
void | chooseDirection (CLHEP::Hep3Vector &innerPosition, CLHEP::Hep3Vector &outerPosition) |
|
bool | efficienciesPerChamber (CSCDetId &id, const CSCChamber *cscChamber, FreeTrajectoryState &ftsChamber) |
|
void | endJob () override |
|
double | extrapolate1D (double initPosition, double initDirection, double parameterOfTheLine) |
|
void | fillDigiInfo (edm::Handle< CSCALCTDigiCollection > &alcts, edm::Handle< CSCCLCTDigiCollection > &clcts, edm::Handle< CSCCorrelatedLCTDigiCollection > &correlatedlcts, edm::Handle< CSCWireDigiCollection > &wires, edm::Handle< CSCStripDigiCollection > &strips, edm::Handle< edm::PSimHitContainer > &simhits, edm::Handle< CSCRecHit2DCollection > &rechits, edm::Handle< CSCSegmentCollection > &segments, edm::ESHandle< CSCGeometry > &cscGeom) |
|
void | fillLCT_info (edm::Handle< CSCALCTDigiCollection > &alcts, edm::Handle< CSCCLCTDigiCollection > &clcts, edm::Handle< CSCCorrelatedLCTDigiCollection > &correlatedlcts) |
|
void | fillRechitsSegments_info (edm::Handle< CSCRecHit2DCollection > &rechits, edm::Handle< CSCSegmentCollection > &segments, edm::ESHandle< CSCGeometry > &cscGeom) |
|
void | fillSimhit_info (edm::Handle< edm::PSimHitContainer > &simHits) |
|
void | fillStrips_info (edm::Handle< CSCStripDigiCollection > &strips) |
|
void | fillWG_info (edm::Handle< CSCWireDigiCollection > &wires, edm::ESHandle< CSCGeometry > &cscGeom) |
|
bool | filter (edm::Event &event, const edm::EventSetup &eventSetup) override |
|
FreeTrajectoryState | getFromCLHEP (const CLHEP::Hep3Vector &p3, const CLHEP::Hep3Vector &r3, int charge, const AlgebraicSymMatrix66 &cov, const MagneticField *field) |
|
void | getFromFTS (const FreeTrajectoryState &fts, CLHEP::Hep3Vector &p3, CLHEP::Hep3Vector &r3, int &charge, AlgebraicSymMatrix66 &cov) |
|
bool | inSensitiveLocalRegion (double xLocal, double yLocal, int station, int ring) |
|
void | linearExtrapolation (GlobalPoint initialPosition, GlobalVector initialDirection, float zSurface, std::vector< float > &posZY) |
|
double | lineParameter (double initZPosition, double destZPosition, double initZDirection) |
|
TrajectoryStateOnSurface | propagate (FreeTrajectoryState &ftsStart, const BoundPlane &bp) |
|
const Propagator * | propagator (std::string propagatorName) const |
|
bool | recHitSegment_Efficiencies (CSCDetId &cscDetId, const CSCChamber *cscChamber, FreeTrajectoryState &ftsChamber) |
|
bool | recSimHitEfficiency (CSCDetId &id, FreeTrajectoryState &ftsChamber) |
|
void | returnTypes (CSCDetId &id, int &ec, int &st, int &rg, int &ch, int &secondRing) |
|
void | ringCandidates (int station, float absEta, std::map< std::string, bool > &chamberTypes) |
|
bool | stripWire_Efficiencies (CSCDetId &cscDetId, FreeTrajectoryState &ftsChamber) |
|
|
typedef EDFilter | 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 &) |
|
static bool | wantsGlobalLuminosityBlocks () |
|
static bool | wantsGlobalRuns () |
|
static bool | wantsInputProcessBlocks () |
|
static bool | wantsProcessBlocks () |
|
static bool | wantsStreamLuminosityBlocks () |
|
static bool | wantsStreamRuns () |
|
template<class ProductType > |
BranchAliasSetterT< ProductType > | produces () |
| declare what type of product will make and with which optional label More...
|
|
template<typename ProductType , BranchType B> |
BranchAliasSetterT< ProductType > | produces () |
|
template<typename ProductType , Transition B> |
BranchAliasSetterT< ProductType > | produces () |
|
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) |
|
template<Transition B> |
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 (std::string instanceName) |
|
template<typename ProductType , BranchType B> |
BranchAliasSetterT< ProductType > | produces (std::string instanceName) |
|
ProducesCollector | producesCollector () |
|
EDGetToken | consumes (const TypeToGet &id, edm::InputTag const &tag) |
|
template<typename ProductType , BranchType B = InEvent> |
EDGetTokenT< ProductType > | consumes (edm::InputTag const &tag) |
|
template<BranchType B = InEvent> |
EDConsumerBaseAdaptor< B > | consumes (edm::InputTag tag) noexcept |
|
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<Transition Tr = Transition::Event> |
constexpr auto | esConsumes () noexcept |
|
template<typename ESProduct , typename ESRecord , Transition Tr = Transition::Event> |
auto | esConsumes (ESInputTag const &tag) |
|
template<Transition Tr = Transition::Event> |
auto | esConsumes (ESInputTag tag) noexcept |
|
template<Transition Tr = Transition::Event> |
ESGetTokenGeneric | esConsumes (eventsetup::EventSetupRecordKey const &iRecord, eventsetup::DataKey const &iKey) |
| Used with EventSetupRecord::doGet. More...
|
|
EDGetToken | mayConsume (const TypeToGet &id, edm::InputTag const &tag) |
|
template<BranchType B> |
EDGetToken | mayConsume (const TypeToGet &id, edm::InputTag const &tag) |
|
template<typename ProductType , BranchType B = InEvent> |
EDGetTokenT< ProductType > | mayConsume (edm::InputTag const &tag) |
|
Efficiency calculations Stoyan Stoynev, Northwestern University
Definition at line 95 of file CSCEfficiency.h.
◆ CSCEfficiency()
Constructor.
Definition at line 1640 of file CSCEfficiency.cc.
1644 const float Ymin = -165;
1645 const float Ymax = 165;
1646 const int nYbins =
int((Ymax - Ymin) / 2);
1647 const float Layer_min = -0.5;
1648 const float Layer_max = 9.5;
1649 const int nLayer_bins =
int(Layer_max - Layer_min);
1654 rootFileName =
pset.getUntrackedParameter<
string>(
"rootFileName",
"cscHists.root");
1656 isData =
pset.getUntrackedParameter<
bool>(
"runOnData",
true);
1657 isIPdata =
pset.getUntrackedParameter<
bool>(
"IPdata",
false);
1658 isBeamdata =
pset.getUntrackedParameter<
bool>(
"Beamdata",
false);
1660 useDigis =
pset.getUntrackedParameter<
bool>(
"useDigis",
true);
1662 minP =
pset.getUntrackedParameter<
double>(
"minP", 20.);
1663 maxP =
pset.getUntrackedParameter<
double>(
"maxP", 100.);
1665 minTrackHits =
pset.getUntrackedParameter<
unsigned int>(
"minTrackHits", 10);
1682 geomToken_ = esConsumes<CSCGeometry, MuonGeometryRecord>();
1689 useTrigger =
pset.getUntrackedParameter<
bool>(
"useTrigger",
false);
1693 myTriggers =
pset.getParameter<std::vector<std::string> >(
"myTriggers");
1694 andOr =
pset.getUntrackedParameter<
bool>(
"andOr");
1710 sprintf(SpecName,
"DataFlow");
1711 DataFlow =
new TH1F(SpecName,
"Data flow;condition number;entries", 40, -0.5, 39.5);
1713 sprintf(SpecName,
"TriggersFired");
1714 TriggersFired =
new TH1F(SpecName,
"Triggers fired;trigger number;entries", 140, -0.5, 139.5);
1717 float minChan = -0.5;
1718 float maxChan = 49.5;
1720 sprintf(SpecName,
"ALCTPerEvent");
1721 ALCTPerEvent =
new TH1F(SpecName,
"ALCTs per event;N digis;entries", Chan, minChan, maxChan);
1723 sprintf(SpecName,
"CLCTPerEvent");
1724 CLCTPerEvent =
new TH1F(SpecName,
"CLCTs per event;N digis;entries", Chan, minChan, maxChan);
1726 sprintf(SpecName,
"recHitsPerEvent");
1727 recHitsPerEvent =
new TH1F(SpecName,
"RecHits per event;N digis;entries", 150, -0.5, 149.5);
1729 sprintf(SpecName,
"segmentsPerEvent");
1730 segmentsPerEvent =
new TH1F(SpecName,
"segments per event;N digis;entries", Chan, minChan, maxChan);
1734 map<std::string, bool>::iterator iter;
1735 for (
int ec = 0; ec < 2; ++ec) {
1736 for (
int st = 0; st < 4; ++st) {
1738 sprintf(SpecName,
"Stations__E%d_S%d", ec + 1, st + 1);
1743 sprintf(SpecName,
"segmentChi2_ndf_St%d", st + 1);
1744 StHist[ec][st].
segmentChi2_ndf =
new TH1F(SpecName,
"Chi2/ndf of a segment;chi2/ndf;entries", 100, 0., 20.);
1746 sprintf(SpecName,
"hitsInSegment_St%d", st + 1);
1747 StHist[ec][st].
hitsInSegment =
new TH1F(SpecName,
"Number of hits in a segment;nHits;entries", 7, -0.5, 6.5);
1753 sprintf(SpecName,
"AllSegments_eta_St%d", st + 1);
1754 StHist[ec][st].
AllSegments_eta =
new TH1F(SpecName,
"All segments in eta;eta;entries", Chan, minChan, maxChan);
1756 sprintf(SpecName,
"EfficientSegments_eta_St%d", st + 1);
1758 new TH1F(SpecName,
"Efficient segments in eta;eta;entries", Chan, minChan, maxChan);
1760 sprintf(SpecName,
"ResidualSegments_St%d", st + 1);
1761 StHist[ec][st].
ResidualSegments =
new TH1F(SpecName,
"Residual (segments);residual,cm;entries", 75, 0., 15.);
1767 float minChan2 = -800.;
1768 float maxChan2 = 800.;
1770 sprintf(SpecName,
"EfficientSegments_XY_St%d", st + 1);
1772 new TH2F(SpecName,
"Efficient segments in XY;X;Y", Chan, minChan, maxChan, Chan2, minChan2, maxChan2);
1773 sprintf(SpecName,
"InefficientSegments_XY_St%d", st + 1);
1775 new TH2F(SpecName,
"Inefficient segments in XY;X;Y", Chan, minChan, maxChan, Chan2, minChan2, maxChan2);
1780 sprintf(SpecName,
"EfficientALCT_momTheta_St%d", st + 1);
1782 new TH1F(SpecName,
"Efficient ALCT in theta (momentum);theta, rad;entries", Chan, minChan, maxChan);
1784 sprintf(SpecName,
"InefficientALCT_momTheta_St%d", st + 1);
1786 new TH1F(SpecName,
"Inefficient ALCT in theta (momentum);theta, rad;entries", Chan, minChan, maxChan);
1791 sprintf(SpecName,
"EfficientCLCT_momPhi_St%d", st + 1);
1793 new TH1F(SpecName,
"Efficient CLCT in phi (momentum);phi, rad;entries", Chan, minChan, maxChan);
1795 sprintf(SpecName,
"InefficientCLCT_momPhi_St%d", st + 1);
1797 new TH1F(SpecName,
"Inefficient CLCT in phi (momentum);phi, rad;entries", Chan, minChan, maxChan);
1800 for (
int rg = 0; rg < 3; ++rg) {
1801 if (0 != st && rg > 1) {
1803 }
else if (1 == rg && 3 == st) {
1807 if (0 != st && 0 == rg && iChamber > 18) {
1811 sprintf(SpecName,
"Chambers__E%d_S%d_R%d_Chamber_%d", ec + 1, st + 1, rg + 1, iChamber);
1816 sprintf(SpecName,
"EfficientRechits_inSegment_Ch%d", iChamber);
1818 SpecName,
"Existing RecHit given a segment;layers (1-6);entries", nLayer_bins, Layer_min, Layer_max);
1820 sprintf(SpecName,
"InefficientSingleHits_Ch%d", iChamber);
1822 SpecName,
"Single RecHits not in the segment;layers (1-6);entries ", nLayer_bins, Layer_min, Layer_max);
1824 sprintf(SpecName,
"AllSingleHits_Ch%d", iChamber);
1826 SpecName,
"Single RecHits given a segment; layers (1-6);entries", nLayer_bins, Layer_min, Layer_max);
1828 sprintf(SpecName,
"digiAppearanceCount_Ch%d", iChamber);
1831 "Digi appearance (no-yes): segment(0,1), ALCT(2,3), CLCT(4,5), CorrLCT(6,7); digi type;entries",
1839 sprintf(SpecName,
"EfficientALCT_dydz_Ch%d", iChamber);
1841 new TH1F(SpecName,
"Efficient ALCT; local dy/dz (ME 3 and 4 flipped);entries", Chan, minChan, maxChan);
1843 sprintf(SpecName,
"InefficientALCT_dydz_Ch%d", iChamber);
1845 new TH1F(SpecName,
"Inefficient ALCT; local dy/dz (ME 3 and 4 flipped);entries", Chan, minChan, maxChan);
1850 sprintf(SpecName,
"EfficientCLCT_dxdz_Ch%d", iChamber);
1852 new TH1F(SpecName,
"Efficient CLCT; local dxdz;entries", Chan, minChan, maxChan);
1854 sprintf(SpecName,
"InefficientCLCT_dxdz_Ch%d", iChamber);
1856 new TH1F(SpecName,
"Inefficient CLCT; local dxdz;entries", Chan, minChan, maxChan);
1858 sprintf(SpecName,
"EfficientRechits_good_Ch%d", iChamber);
1860 SpecName,
"Existing RecHit - sensitive area only;layers (1-6);entries", nLayer_bins, Layer_min, Layer_max);
1862 sprintf(SpecName,
"EfficientStrips_Ch%d", iChamber);
1864 new TH1F(SpecName,
"Existing strip;layer (1-6); entries", nLayer_bins, Layer_min, Layer_max);
1866 sprintf(SpecName,
"EfficientWireGroups_Ch%d", iChamber);
1868 new TH1F(SpecName,
"Existing WireGroups;layer (1-6); entries ", nLayer_bins, Layer_min, Layer_max);
1870 sprintf(SpecName,
"StripWiresCorrelations_Ch%d", iChamber);
1872 new TH1F(SpecName,
"StripWire correlations;; entries ", 5, 0.5, 5.5);
1877 sprintf(SpecName,
"NoWires_momTheta_Ch%d", iChamber);
1880 "No wires (all strips present) - in theta (momentum);theta, rad;entries",
1888 sprintf(SpecName,
"NoStrips_momPhi_Ch%d", iChamber);
1890 SpecName,
"No strips (all wires present) - in phi (momentum);phi, rad;entries", Chan, minChan, maxChan);
1892 for (
int iLayer = 0; iLayer < 6; iLayer++) {
1893 sprintf(SpecName,
"Y_InefficientRecHits_inSegment_Ch%d_L%d", iChamber, iLayer);
1896 "Missing RecHit/layer in a segment (local system, whole chamber);Y, cm; entries",
1901 sprintf(SpecName,
"Y_EfficientRecHits_inSegment_Ch%d_L%d", iChamber, iLayer);
1904 "Efficient (extrapolated from the segment) RecHit/layer in a segment (local system, whole "
1905 "chamber);Y, cm; entries",
1913 sprintf(SpecName,
"Phi_InefficientRecHits_inSegment_Ch%d_L%d", iChamber, iLayer);
1916 "Missing RecHit/layer in a segment (local system, whole chamber);Phi, rad; entries",
1921 sprintf(SpecName,
"Phi_EfficientRecHits_inSegment_Ch%d_L%d", iChamber, iLayer);
1924 "Efficient (extrapolated from the segment) in a segment (local system, whole chamber);Phi, "
1931 sprintf(SpecName,
"Sim_Rechits_Ch%d", iChamber);
1933 new TH1F(SpecName,
"Existing RecHit (Sim);layers (1-6);entries", nLayer_bins, Layer_min, Layer_max);
1935 sprintf(SpecName,
"Sim_Simhits_Ch%d", iChamber);
1937 new TH1F(SpecName,
"Existing SimHit (Sim);layers (1-6);entries", nLayer_bins, Layer_min, Layer_max);
References PA_MinBiasSkim_cff::andOr, FirstCh, createfilelist::int, HLTBitAnalyser_cfi::isData, MuonMETValueMapProducer_cff::maxNormChi2, RecoMuonValidator_cfi::maxP, alignBH_cfg::minP, HLT_FULL_cff::minTrackHits, MuonServiceProxy_cff::MuonServiceProxy, NumCh, mps_fire::Path, muonDTDigis_cfi::pset, CSCSkim_cfi::rootFileName, AlCaHLTBitMon_QueryRunRegistry::string, and interactiveExample::theFile.
◆ ~CSCEfficiency()
CSCEfficiency::~CSCEfficiency |
( |
| ) |
|
|
override |
Destructor.
Definition at line 1956 of file CSCEfficiency.cc.
1964 std::vector<float> eff(2);
1967 std::map<std::string, bool> chamberTypes;
1968 chamberTypes[
"ME11"] =
false;
1969 chamberTypes[
"ME12"] =
false;
1970 chamberTypes[
"ME13"] =
false;
1971 chamberTypes[
"ME21"] =
false;
1972 chamberTypes[
"ME22"] =
false;
1973 chamberTypes[
"ME31"] =
false;
1974 chamberTypes[
"ME32"] =
false;
1975 chamberTypes[
"ME41"] =
false;
1977 map<std::string, bool>::iterator iter;
1978 std::cout <<
" Writing proper histogram structure (patience)..." << std::endl;
1979 for (
int ec = 0; ec < 2; ++ec) {
1980 for (
int st = 0; st < 4; ++st) {
1981 snprintf(SpecName,
sizeof(SpecName),
"Stations__E%d_S%d", ec + 1, st + 1);
1994 for (
int rg = 0; rg < 3; ++rg) {
1995 if (0 != st && rg > 1) {
1997 }
else if (1 == rg && 3 == st) {
2001 if (0 != st && 0 == rg && iChamber > 18) {
2004 snprintf(SpecName,
sizeof(SpecName),
"Chambers__E%d_S%d_R%d_Chamber_%d", ec + 1, st + 1, rg + 1, iChamber);
2021 for (
unsigned int iLayer = 0; iLayer < 6; iLayer++) {
2041 snprintf(SpecName,
sizeof(SpecName),
"AllChambers");
References trigObjTnPSource_cfi::bins, gather_cfg::cout, PixelTestBeamValidation_cfi::Efficiency, FirstCh, NumCh, and interactiveExample::theFile.
◆ applyTrigger()
◆ beginJob()
void CSCEfficiency::beginJob |
( |
void |
| ) |
|
|
overrideprivatevirtual |
◆ chamberCandidates()
void CSCEfficiency::chamberCandidates |
( |
int |
station, |
|
|
int |
ring, |
|
|
float |
phi, |
|
|
std::vector< int > & |
coupleOfChambers |
|
) |
| |
|
private |
Definition at line 1011 of file CSCEfficiency.cc.
1012 coupleOfChambers.clear();
1014 float phi_zero = 0.;
1015 float phi_const = 2. *
M_PI / 36.;
1016 int last_chamber = 36;
1017 int first_chamber = 1;
1024 std::cout <<
" info: negative phi = " <<
phi << std::endl;
1027 float chamber_float = (
phi - phi_zero) / phi_const;
1028 int chamber_int =
int(chamber_float);
1029 if (chamber_float -
float(chamber_int) - 0.5 < 0.) {
1030 if (0 != chamber_int) {
1031 coupleOfChambers.push_back(chamber_int);
1033 coupleOfChambers.push_back(last_chamber);
1035 coupleOfChambers.push_back(chamber_int + 1);
1038 coupleOfChambers.push_back(chamber_int + 1);
1039 if (last_chamber != chamber_int + 1) {
1040 coupleOfChambers.push_back(chamber_int + 2);
1042 coupleOfChambers.push_back(first_chamber);
1046 std::cout <<
" phi = " <<
phi <<
" phi_zero = " << phi_zero <<
" phi_const = " << phi_const
1047 <<
" candidate chambers: first ch = " << coupleOfChambers[0] <<
" second ch = " << coupleOfChambers[1]
References gather_cfg::cout, createfilelist::int, M_PI, relativeConstraints::ring, and relativeConstraints::station.
◆ checkLocal()
bool CSCEfficiency::checkLocal |
( |
double |
yLocal, |
|
|
double |
yBoundary, |
|
|
int |
station, |
|
|
int |
ring |
|
) |
| |
|
private |
Definition at line 605 of file CSCEfficiency.cc.
608 std::vector<float> deadZoneCenter(6);
609 const float deadZoneHalf = 0.32 * 7 / 2;
614 deadZoneCenter[0] = -162.48;
615 deadZoneCenter[1] = -81.8744;
616 deadZoneCenter[2] = -21.18165;
617 deadZoneCenter[3] = 39.51105;
618 deadZoneCenter[4] = 100.2939;
619 deadZoneCenter[5] = 160.58;
621 if (yLocal > yBoundary && ((yLocal > deadZoneCenter[0] + cutZone && yLocal < deadZoneCenter[1] - cutZone) ||
622 (yLocal > deadZoneCenter[1] + cutZone && yLocal < deadZoneCenter[2] - cutZone) ||
623 (yLocal > deadZoneCenter[2] + cutZone && yLocal < deadZoneCenter[3] - cutZone) ||
624 (yLocal > deadZoneCenter[3] + cutZone && yLocal < deadZoneCenter[4] - cutZone) ||
625 (yLocal > deadZoneCenter[4] + cutZone && yLocal < deadZoneCenter[5] - cutZone))) {
628 }
else if (1 ==
ring) {
630 deadZoneCenter[0] = -95.94;
631 deadZoneCenter[1] = -27.47;
632 deadZoneCenter[2] = 33.67;
633 deadZoneCenter[3] = 93.72;
635 deadZoneCenter[0] = -85.97;
636 deadZoneCenter[1] = -36.21;
637 deadZoneCenter[2] = 23.68;
638 deadZoneCenter[3] = 84.04;
640 deadZoneCenter[0] = -75.82;
641 deadZoneCenter[1] = -26.14;
642 deadZoneCenter[2] = 23.85;
643 deadZoneCenter[3] = 73.91;
645 if (yLocal > yBoundary && ((yLocal > deadZoneCenter[0] + cutZone && yLocal < deadZoneCenter[1] - cutZone) ||
646 (yLocal > deadZoneCenter[1] + cutZone && yLocal < deadZoneCenter[2] - cutZone) ||
647 (yLocal > deadZoneCenter[2] + cutZone && yLocal < deadZoneCenter[3] - cutZone))) {
653 deadZoneCenter[0] = -83.155;
654 deadZoneCenter[1] = -22.7401;
655 deadZoneCenter[2] = 27.86665;
656 deadZoneCenter[3] = 81.005;
657 if (yLocal > yBoundary && ((yLocal > deadZoneCenter[0] + cutZone && yLocal < deadZoneCenter[1] - cutZone) ||
658 (yLocal > deadZoneCenter[1] + cutZone && yLocal < deadZoneCenter[2] - cutZone) ||
659 (yLocal > deadZoneCenter[2] + cutZone && yLocal < deadZoneCenter[3] - cutZone))) {
662 }
else if (2 ==
ring) {
663 deadZoneCenter[0] = -86.285;
664 deadZoneCenter[1] = -32.88305;
665 deadZoneCenter[2] = 32.867423;
666 deadZoneCenter[3] = 88.205;
667 if (yLocal > (yBoundary) && ((yLocal > deadZoneCenter[0] + cutZone && yLocal < deadZoneCenter[1] - cutZone) ||
668 (yLocal > deadZoneCenter[1] + cutZone && yLocal < deadZoneCenter[2] - cutZone) ||
669 (yLocal > deadZoneCenter[2] + cutZone && yLocal < deadZoneCenter[3] - cutZone))) {
673 deadZoneCenter[0] = -81.0;
674 deadZoneCenter[1] = 81.0;
675 if (yLocal > (yBoundary) && ((yLocal > deadZoneCenter[0] + cutZone && yLocal < deadZoneCenter[1] - cutZone))) {
References relativeConstraints::ring, and relativeConstraints::station.
◆ chooseDirection()
void CSCEfficiency::chooseDirection |
( |
CLHEP::Hep3Vector & |
innerPosition, |
|
|
CLHEP::Hep3Vector & |
outerPosition |
|
) |
| |
|
private |
◆ efficienciesPerChamber()
Definition at line 1052 of file CSCEfficiency.cc.
1055 int ec, st, rg, ch, secondRing;
1061 std::cout <<
" local dir = " << localDir << std::endl;
1064 float dxdz = localDir.
x() / localDir.
z();
1065 float dydz = localDir.
y() / localDir.
z();
1066 if (2 == st || 3 == st) {
1068 std::cout <<
"st 3 or 4 ... flip dy/dz" << std::endl;
1084 bool firstCondition = !
allSegments[ec][st][rg][ch].empty() ?
true :
false;
1085 bool secondCondition =
false;
1087 if (secondRing > -1) {
1088 secondCondition = !
allSegments[ec][st][secondRing][ch].empty() ?
true :
false;
1090 if (firstCondition || secondCondition) {
1102 firstCondition =
allALCT[ec][st][rg][ch];
1103 secondCondition =
false;
1104 if (secondRing > -1) {
1105 secondCondition =
allALCT[ec][st][secondRing][ch];
1107 if (firstCondition || secondCondition) {
1126 printf(
"\t\tendcap/station/ring/chamber: %i/%i/%i/%i\n", ec + 1, st + 1, rg + 1, ch + 1);
1131 firstCondition =
allCLCT[ec][st][rg][ch];
1132 secondCondition =
false;
1133 if (secondRing > -1) {
1134 secondCondition =
allCLCT[ec][st][secondRing][ch];
1136 if (firstCondition || secondCondition) {
1154 printf(
"\t\tendcap/station/ring/chamber: %i/%i/%i/%i\n", ec + 1, st + 1, rg + 1, ch + 1);
1160 secondCondition =
false;
1161 if (secondRing > -1) {
1162 secondCondition =
allCorrLCT[ec][st][secondRing][ch];
1164 if (firstCondition || secondCondition) {
References gather_cfg::cout, BeamSpotPI::dxdz, BeamSpotPI::dydz, FreeTrajectoryState::momentum(), MillePedeFileConverter_cfg::out, PV3DBase< T, PVType, FrameType >::phi(), PV3DBase< T, PVType, FrameType >::theta(), GeomDet::toLocal(), funct::true, PV3DBase< T, PVType, FrameType >::x(), PV3DBase< T, PVType, FrameType >::y(), and PV3DBase< T, PVType, FrameType >::z().
◆ endJob()
void CSCEfficiency::endJob |
( |
void |
| ) |
|
|
overrideprivatevirtual |
◆ extrapolate1D()
double CSCEfficiency::extrapolate1D |
( |
double |
initPosition, |
|
|
double |
initDirection, |
|
|
double |
parameterOfTheLine |
|
) |
| |
|
private |
Definition at line 1497 of file CSCEfficiency.cc.
1498 double extrapolatedPosition = initPosition + initDirection * parameterOfTheLine;
1499 return extrapolatedPosition;
◆ fillDigiInfo()
◆ fillLCT_info()
Definition at line 720 of file CSCEfficiency.cc.
731 if ((*digiIt).isValid()) {
732 allALCT[
id.endcap() - 1][
id.station() - 1][
id.ring() - 1][
id.chamber() -
FirstCh] =
true;
742 std::vector<CSCCLCTDigi>::const_iterator digiIt = (*j).second.first;
743 std::vector<CSCCLCTDigi>::const_iterator
last = (*j).second.second;
744 for (; digiIt !=
last; ++digiIt) {
746 if ((*digiIt).isValid()) {
747 allCLCT[
id.endcap() - 1][
id.station() - 1][
id.ring() - 1][
id.chamber() -
FirstCh] =
true;
755 std::vector<CSCCorrelatedLCTDigi>::const_iterator digiIt = (*j).second.first;
756 std::vector<CSCCorrelatedLCTDigi>::const_iterator
last = (*j).second.second;
757 for (; digiIt !=
last; ++digiIt) {
759 if ((*digiIt).isValid()) {
760 allCorrLCT[
id.endcap() - 1][
id.station() - 1][
id.ring() - 1][
id.chamber() -
FirstCh] =
true;
References FirstCh, dqmiolumiharvest::j, dqmdumpme::last, and FastTimerService_cff::range.
◆ fillRechitsSegments_info()
Definition at line 838 of file CSCEfficiency.cc.
845 printf(
" The size of the rechit collection is %i\n",
int(
rechits->size()));
851 for (recIt =
rechits->begin(); recIt !=
rechits->end(); recIt++) {
856 LocalPoint rhitlocal = (*recIt).localPosition();
857 LocalError rerrlocal = (*recIt).localPositionError();
859 printf(
"\t\tendcap/station/ring/chamber/layer: %i/%i/%i/%i/%i\n",
865 printf(
"\t\tx,y,z: %f, %f, %f\texx,eey,exy: %f, %f, %f\tglobal x,y,z: %f, %f, %f \n",
876 std::pair<LocalPoint, bool> recHitPos((*recIt).localPosition(),
false);
877 allRechits[
id.endcap() - 1][
id.station() - 1][
id.ring() - 1][
id.chamber() -
FirstCh][
id.layer() - 1].push_back(
881 for (
int iE = 0; iE < 2; iE++) {
882 for (
int iS = 0; iS < 4; iS++) {
883 for (
int iR = 0; iR < 4; iR++) {
884 for (
int iC = 0; iC <
NumCh; iC++) {
886 for (
int iL = 0; iL < 6; iL++) {
903 printf(
" The size of the segment collection is %i\n",
int(segments->size()));
909 StHist[
id.endcap() - 1][
id.station() - 1].
segmentChi2_ndf->Fill((*it).chi2() / (*it).degreesOfFreedom());
913 std::cout <<
"\tposition(loc) = " << (*it).localPosition() <<
" error(loc) = " << (*it).localPositionError()
915 std::cout <<
"\t chi2/ndf = " << (*it).chi2() / (*it).degreesOfFreedom() <<
" nhits = " << (*it).nRecHits()
918 allSegments[
id.endcap() - 1][
id.station() - 1][
id.ring() - 1][
id.chamber() -
FirstCh].push_back(
919 make_pair((*it).localPosition(), (*it).localDirection()));
923 std::vector<CSCRecHit2D> theseRecHits = (*it).specificRecHits();
924 int nRH = (*it).nRecHits();
926 printf(
"\tGet the recHits for this segment.\t");
927 printf(
" nRH = %i\n", nRH);
931 for (vector<CSCRecHit2D>::const_iterator iRH = theseRecHits.begin(); iRH != theseRecHits.end(); iRH++) {
935 printf(
"\t%i RH\tendcap/station/ring/chamber/layer: %i/%i/%i/%i/%i\n",
954 if (fabs(xDiff) < 0.0001 && fabs(yDiff) < 0.0001) {
962 std::cout <<
" number of the rechit (from zero) in the segment = " << jRH << std::endl;
References relativeConstraints::chamber, CSCDetId::chamber(), gather_cfg::cout, relativeConstraints::empty, CSCDetId::endcap(), makeMuonMisalignmentScenario::endcap, FirstCh, CSCDetId::layer(), CSCGeometry::layer(), phase1PixelTopology::layer, NumCh, HI_PhotonSkim_cff::rechits, CSCDetId::ring(), relativeConstraints::ring, relativeConstraints::station, CSCDetId::station(), GeomDet::toGlobal(), PV3DBase< T, PVType, FrameType >::x(), LocalError::xx(), LocalError::xy(), PV3DBase< T, PVType, FrameType >::y(), LocalError::yy(), and PV3DBase< T, PVType, FrameType >::z().
◆ fillSimhit_info()
◆ fillStrips_info()
Definition at line 792 of file CSCEfficiency.cc.
797 int largestADCValue = -1;
798 std::vector<CSCStripDigi>::const_iterator digiItr = (*j).second.first;
799 std::vector<CSCStripDigi>::const_iterator
last = (*j).second.second;
800 for (; digiItr !=
last; ++digiItr) {
801 int maxADC = largestADCValue;
802 int myStrip = digiItr->getStrip();
803 std::vector<int> myADCVals = digiItr->getADCCounts();
804 float thisPedestal = 0.5 * (
float)(myADCVals[0] + myADCVals[1]);
805 float peakADC = -1000.;
806 for (
int myADCVal : myADCVals) {
807 float diff = (
float)myADCVal - thisPedestal;
809 if (myADCVal > largestADCValue)
810 largestADCValue = myADCVal;
815 if (largestADCValue > maxADC) {
816 std::pair<int, float> LayerSignal(myStrip, peakADC);
819 allStrips[
id.endcap() - 1][
id.station() - 1][
id.ring() - 1][
id.chamber() - 1][
id.layer() - 1].clear();
820 allStrips[
id.endcap() - 1][
id.station() - 1][
id.ring() - 1][
id.chamber() - 1][
id.layer() - 1].push_back(
References change_name::diff, dqmMemoryStats::float, cms::cuda::for(), dqmiolumiharvest::j, dqmdumpme::last, DigiDM_cff::strips, and remoteMonitoring_LED_IterMethod_cfg::threshold.
◆ fillWG_info()
Definition at line 766 of file CSCEfficiency.cc.
773 std::vector<CSCWireDigi>::const_iterator digiItr = (*j).second.first;
774 std::vector<CSCWireDigi>::const_iterator
last = (*j).second.second;
776 for (; digiItr !=
last; ++digiItr) {
777 std::pair<int, float> WG_pos(digiItr->getWireGroup(), layerGeom->
yOfWireGroup(digiItr->getWireGroup()));
778 std::pair<std::pair<int, float>,
int> LayerSignal(WG_pos, digiItr->getTimeBin());
781 allWG[
id.endcap() - 1][
id.station() - 1][
id.ring() - 1][
id.chamber() -
FirstCh][
id.layer() - 1].push_back(
References FirstCh, dqmiolumiharvest::j, dqmdumpme::last, CSCGeometry::layer(), DigiDM_cff::wires, and CSCLayerGeometry::yOfWireGroup().
◆ filter()
Implements edm::EDFilter.
Definition at line 22 of file CSCEfficiency.cc.
35 printf(
"\n==enter==CSCEfficiency===== run %u\tevent %llu\tn Analyzed %i\n", iRun,
iEvent,
nEventsAnalyzed);
42 printf(
"\tget handles for digi collections\n");
48 printf(
"\tpass handles\n");
64 event.getByToken(
co_token, correlatedlcts);
70 event.getByToken(
se_token, segments);
71 event.getByToken(
tk_token, trackCollectionH);
76 printf(
"\tget the CSC geometry.\n");
83 bool triggerPassed =
true;
98 if (
theService->magneticField()->inTesla(gpZero).mag2() < 0.1) {
109 event.getByLabel(muonTag_,
muons);
112 event.getByLabel(
"offlineBeamSpot", beamSpotHandle);
115 std::vector<reco::MuonCollection::const_iterator> goodMuons_it;
116 unsigned int nPositiveZ = 0;
117 unsigned int nNegativeZ = 0;
118 float muonOuterZPosition = -99999.;
126 <<
" pt = " <<
muon->pt() <<
" eta = " <<
muon->eta() <<
" phi = " <<
muon->phi()
127 <<
" matches = " <<
muon->matches().size()
129 <<
" GLB/TR/STA = " <<
muon->isGlobalMuon() <<
"/" <<
muon->isTrackerMuon() <<
"/"
130 <<
muon->isStandAloneMuon() << std::endl;
132 if (!(
muon->isTrackerMuon() &&
muon->isGlobalMuon())) {
137 (
muon->isolationR03().sumPt +
muon->isolationR03().emEt +
muon->isolationR03().hadEt) /
muon->track()->pt();
139 std::cout <<
" relISO = " << relISO <<
" emVetoEt = " <<
muon->isolationR03().emVetoEt
141 <<
" dxy = " << fabs(
muon->track()->dxy(vertexBeamSpot.
position())) << std::endl;
145 fabs(
muon->track()->dxy(vertexBeamSpot.
position())) > 0.2 ||
muon->pt() < 6.) {
149 if (
muon->track()->hitPattern().numberOfValidPixelHits() < 1 ||
150 muon->track()->hitPattern().numberOfValidTrackerHits() < 11 ||
151 muon->combinedMuon()->hitPattern().numberOfValidMuonHits() < 1 ||
152 muon->combinedMuon()->normalizedChi2() > 10. ||
muon->numberOfMatches() < 2) {
156 float zOuter =
muon->combinedMuon()->outerPosition().z();
157 float rhoOuter =
muon->combinedMuon()->outerPosition().rho();
158 bool passDepth =
true;
161 if (fabs(zOuter) < 660. && rhoOuter > 400. && rhoOuter < 540.) {
166 else if (fabs(zOuter) > 550. && fabs(zOuter) < 650. && rhoOuter < 300.) {
171 else if (fabs(zOuter) > 680. && fabs(zOuter) < 880. && rhoOuter < 540.) {
178 goodMuons_it.push_back(
muon);
179 if (
muon->track()->momentum().z() > 0.) {
182 if (
muon->track()->momentum().z() < 0.) {
198 std::cout <<
" nNegativeZ = " << nNegativeZ <<
" nPositiveZ = " << nPositiveZ << std::endl;
200 if (nNegativeZ > 1 || nPositiveZ > 1) {
203 bool trackOK =
false;
205 std::cout <<
" goodMuons_it.size() = " << goodMuons_it.size() << std::endl;
207 for (
size_t iM = 0; iM < goodMuons_it.size(); ++iM) {
211 float deltaR =
pow(
track->phi() - goodMuons_it[iM]->track()->phi(), 2) +
212 pow(
track->eta() - goodMuons_it[iM]->track()->eta(), 2);
216 <<
" dPt = " <<
track->pt() - goodMuons_it[iM]->track()->pt() << std::endl;
218 if (
deltaR > 0.01 || fabs(
track->pt() - goodMuons_it[iM]->track()->pt()) > 0.1) {
225 muonOuterZPosition = goodMuons_it[iM]->combinedMuon()->outerPosition().z();
232 std::cout <<
" failed: trackOK " << std::endl;
245 if (
track->outerPosition().z() * trackTwo->outerPosition().z() > 0) {
252 std::cout <<
"i track = " <<
i <<
" P = " <<
track->p() <<
" chi2/ndf = " <<
track->normalizedChi2()
253 <<
" nSeg = " << segments->size() << std::endl;
260 <<
track->qoverpError() << std::endl;
263 <<
" outer position = " <<
track->outerPosition() << std::endl;
264 std::cout <<
"track eta (outer) = " <<
track->outerPosition().eta()
265 <<
" phi (outer) = " <<
track->outerPosition().phi() << std::endl;
266 if (fabs(
track->innerPosition().z()) > 500.) {
268 std::cout <<
" dump inner state MUON detid = " <<
debug.dumpMuonId(innerDetId) << std::endl;
270 if (fabs(
track->outerPosition().z()) > 500.) {
272 std::cout <<
" dump outer state MUON detid = " <<
debug.dumpMuonId(outerDetId) << std::endl;
288 float dpT_ov_pT = 0.;
289 if (fabs(
track->pt()) > 0.001) {
301 if (!segments->size()) {
309 if (
magField && (dpT_ov_pT > 0.5)) {
317 CLHEP::Hep3Vector r3T_inner(
track->innerPosition().x(),
track->innerPosition().y(),
track->innerPosition().z());
318 CLHEP::Hep3Vector r3T(
track->outerPosition().x(),
track->outerPosition().y(),
track->outerPosition().z());
321 CLHEP::Hep3Vector p3T(
track->outerMomentum().x(),
track->outerMomentum().y(),
track->outerMomentum().z());
322 CLHEP::Hep3Vector p3_propagated, r3_propagated;
325 cov_propagated *= 1
e-20;
329 std::cout <<
" p = " <<
track->p() <<
" norm chi2 = " <<
track->normalizedChi2() << std::endl;
330 std::cout <<
" dump the very first FTS = " <<
debug.dumpFTS(ftsStart) << std::endl;
335 if (
track->outerPosition().z() > 0) {
342 std::vector<CSCDetId> refME;
343 for (
int iS = 1; iS < 5; ++iS) {
344 for (
int iR = 1; iR < 4; ++iR) {
345 if (1 != iS && iR > 2) {
347 }
else if (4 == iS && iR > 1) {
354 for (
size_t iSt = 0; iSt < refME.size(); ++iSt) {
356 std::cout <<
"loop iStatation = " << iSt << std::endl;
357 std::cout <<
"refME[iSt]: st = " << refME[iSt].station() <<
" rg = " << refME[iSt].ring() << std::endl;
359 std::map<std::string, bool> chamberTypes;
360 chamberTypes[
"ME11"] =
false;
361 chamberTypes[
"ME12"] =
false;
362 chamberTypes[
"ME13"] =
false;
363 chamberTypes[
"ME21"] =
false;
364 chamberTypes[
"ME22"] =
false;
365 chamberTypes[
"ME31"] =
false;
366 chamberTypes[
"ME32"] =
false;
367 chamberTypes[
"ME41"] =
false;
374 std::cout <<
" dump base iStation detid = " <<
debug.dumpMuonId(detId) << std::endl;
375 std::cout <<
" dump FTS start = " <<
debug.dumpFTS(ftsStart) << std::endl;
382 std::cout <<
" dump FTS end = " <<
debug.dumpFTS(ftsStart) << std::endl;
384 float feta = fabs(r3_propagated.eta());
385 float phi = r3_propagated.phi();
389 map<std::string, bool>::iterator iter;
392 for (iter = chamberTypes.begin(); iter != chamberTypes.end(); iter++) {
395 if (iter->second && (iterations - 1) ==
int(iSt)) {
397 std::cout <<
" Chamber type " << iter->first <<
" is a candidate..." << std::endl;
398 std::cout <<
" station() = " << refME[iSt].station() <<
" ring() = " << refME[iSt].ring()
399 <<
" iSt = " << iSt << std::endl;
401 std::vector<int> coupleOfChambers;
405 for (
size_t iCh = 0; iCh < coupleOfChambers.size(); ++iCh) {
408 std::cout <<
" Check chamber N = " << coupleOfChambers.at(iCh) << std::endl;
412 [coupleOfChambers.at(iCh) -
FirstCh])) {
417 const BoundPlane bpCh = cscGeom->
idToDet(cscChamber->geographicalId())->surface();
419 float dz = fabs(bpCh.position().z() - zFTS);
420 float zDistInner =
track->innerPosition().z() - bpCh.position().z();
421 float zDistOuter =
track->outerPosition().z() - bpCh.position().z();
424 std::cout <<
" zIn = " <<
track->innerPosition().z() <<
" zOut = " <<
track->outerPosition().z()
425 <<
" zSurf = " << bpCh.position().z() << std::endl;
427 if (!
isIPdata && (zDistInner * zDistOuter > 0. || fabs(zDistInner) < 15. ||
428 fabs(zDistOuter) < 15.)) {
430 std::cout <<
" Not an intermediate (as defined) point... Skip." << std::endl;
435 if (fabs(muonOuterZPosition) - fabs(bpCh.position().z()) < 0 ||
436 fabs(muonOuterZPosition - bpCh.position().z()) < 15.) {
444 tSOSDest =
propagate(ftsStart, cscGeom->
idToDet(cscChamber->geographicalId())->surface());
449 std::cout <<
"TSOS not valid! Break." << std::endl;
454 std::cout <<
" info: dz<0.1" << std::endl;
458 bool inDeadZone =
false;
460 for (
int iLayer = 0; iLayer < 6; ++iLayer) {
461 bool extrapolationPassed =
true;
463 std::cout <<
" iLayer = " << iLayer <<
" dump FTS init = " <<
debug.dumpFTS(ftsInit) << std::endl;
464 std::cout <<
" dump detid = " <<
debug.dumpMuonId(cscChamber->geographicalId()) << std::endl;
465 std::cout <<
"Surface to propagate to: pos = " << cscChamber->layer(iLayer + 1)->surface().position()
466 <<
" eta = " << cscChamber->layer(iLayer + 1)->surface().position().eta()
467 <<
" phi = " << cscChamber->layer(iLayer + 1)->surface().position().phi() << std::endl;
470 tSOSDest =
propagate(ftsInit, cscChamber->layer(iLayer + 1)->surface());
474 std::cout <<
" Propagation between layers successful: dump FTS end = " <<
debug.dumpFTS(ftsInit)
479 std::cout <<
"Propagation between layers not successful - notValid TSOS" << std::endl;
480 extrapolationPassed =
false;
485 if (extrapolationPassed) {
486 GlobalPoint theExtrapolationPoint(r3_propagated.x(), r3_propagated.y(), r3_propagated.z());
487 LocalPoint theLocalPoint = cscChamber->layer(iLayer + 1)->toLocal(theExtrapolationPoint);
489 inDeadZone = (inDeadZone ||
491 theLocalPoint.x(), theLocalPoint.y(), refME[iSt].station(), refME[iSt].ring()));
493 std::cout <<
" Candidate chamber: extrapolated LocalPoint = " << theLocalPoint
494 <<
"inDeadZone = " << inDeadZone << std::endl;
509 std::cout <<
"Do efficiencies..." << std::endl;
512 bool angle_flag =
true;
525 std::cout <<
" Not in active area for all layers" << std::endl;
535 std::cout <<
" TSOS not valid..." << std::endl;
541 printf(
"==exit===CSCEfficiency===== run %u\tevent %llu\n\n", iRun,
iEvent);
References muon::caloCompatibility(), relativeConstraints::chamber, CSCGeometry::chamber(), ALCARECOTkAlJpsiMuMu_cff::charge, reco::TrackBase::confirmed, gather_cfg::cout, debug, PbPb_ZMuSkimMuonDPG_cff::deltaR, PVValHelper::dz, MillePedeFileConverter_cfg::e, makeMuonMisalignmentScenario::endcap, PV3DBase< T, PVType, FrameType >::eta(), JetMETHLTOfflineSource_cfi::feta, FirstCh, TrajectoryStateOnSurface::freeState(), GeomDet::geographicalId(), edm::EventSetup::get(), get, edm::EventSetup::getHandle(), reco::TrackBase::goodIterative, reco::TrackBase::highPurity, mps_fire::i, CSCGeometry::idToDet(), iEvent, createfilelist::int, HLTBitAnalyser_cfi::isData, TrajectoryStateOnSurface::isValid(), reco::TrackBase::loose, MuonMETValueMapProducer_cff::maxNormChi2, RecoMuonValidator_cfi::maxP, alignBH_cfg::minP, HLT_FULL_cff::minTrackHits, HLT_FULL_cff::muon, PDWG_BPHSkim_cff::muons, reco::Track::outerPosition(), PV3DBase< T, PVType, FrameType >::phi(), GloballyPositioned< T >::position(), reco::BeamSpot::position(), FreeTrajectoryState::position(), funct::pow(), edm::Handle< T >::product(), reco::TrackBase::qualitySize, HI_PhotonSkim_cff::rechits, relativeConstraints::ring, reco::Muon::SegmentAndTrackArbitration, HLTBitAnalyser_cfi::simhits, mathSSE::sqrt(), relativeConstraints::station, DigiDM_cff::strips, GeomDet::surface(), reco::TrackBase::tight, HLT_FULL_cff::track, duplicaterechits_cfi::trackCollection, L1TEGammaOffline_cfi::triggerNames, reco::TrackBase::undefQuality, DigiDM_cff::wires, PV3DBase< T, PVType, FrameType >::y(), and PV3DBase< T, PVType, FrameType >::z().
◆ getFromCLHEP()
◆ getFromFTS()
Definition at line 1456 of file CSCEfficiency.cc.
1464 p3.set(p3GV.
x(), p3GV.
y(), p3GV.
z());
1465 r3.set(r3GP.
x(), r3GP.
y(), r3GP.
z());
References FreeTrajectoryState::cartesianError(), ALCARECOTkAlJpsiMuMu_cff::charge, FreeTrajectoryState::charge(), FreeTrajectoryState::hasError(), CartesianTrajectoryError::matrix(), FreeTrajectoryState::momentum(), p3, FreeTrajectoryState::position(), PV3DBase< T, PVType, FrameType >::x(), PV3DBase< T, PVType, FrameType >::y(), and PV3DBase< T, PVType, FrameType >::z().
◆ inSensitiveLocalRegion()
bool CSCEfficiency::inSensitiveLocalRegion |
( |
double |
xLocal, |
|
|
double |
yLocal, |
|
|
int |
station, |
|
|
int |
ring |
|
) |
| |
|
private |
Definition at line 546 of file CSCEfficiency.cc.
549 std::vector<double> chamberBounds(3);
550 float y_center = 99999.;
554 chamberBounds[0] = 66.46 / 2;
555 chamberBounds[1] = 127.15 / 2;
556 chamberBounds[2] = 323.06 / 2;
560 chamberBounds[0] = 54.00 / 2;
561 chamberBounds[1] = 125.71 / 2;
562 chamberBounds[2] = 189.66 / 2;
565 chamberBounds[0] = 61.40 / 2;
566 chamberBounds[1] = 125.71 / 2;
567 chamberBounds[2] = 169.70 / 2;
570 chamberBounds[0] = 69.01 / 2;
571 chamberBounds[1] = 125.65 / 2;
572 chamberBounds[2] = 149.42 / 2;
578 chamberBounds[0] = 63.40 / 2;
579 chamberBounds[1] = 92.10 / 2;
580 chamberBounds[2] = 164.16 / 2;
582 }
else if (2 ==
ring) {
583 chamberBounds[0] = 51.00 / 2;
584 chamberBounds[1] = 83.74 / 2;
585 chamberBounds[2] = 174.49 / 2;
588 chamberBounds[0] = 30. / 2;
589 chamberBounds[1] = 60. / 2;
590 chamberBounds[2] = 160. / 2;
594 double yUp = chamberBounds[2] + y_center;
595 double yDown = -chamberBounds[2] + y_center;
598 double lineSlope = (yUp - yDown) / (xBound2Shifted - xBound1Shifted);
599 double lineConst = yUp - lineSlope * xBound2Shifted;
600 double yBoundary = lineSlope *
abs(xLocal) + lineConst;
References funct::abs(), relativeConstraints::ring, and relativeConstraints::station.
◆ linearExtrapolation()
void CSCEfficiency::linearExtrapolation |
( |
GlobalPoint |
initialPosition, |
|
|
GlobalVector |
initialDirection, |
|
|
float |
zSurface, |
|
|
std::vector< float > & |
posZY |
|
) |
| |
|
private |
Definition at line 1485 of file CSCEfficiency.cc.
1489 double paramLine =
lineParameter(initialPosition.
z(), zSurface, initialDirection.
z());
1490 double xPosition =
extrapolate1D(initialPosition.
x(), initialDirection.
x(), paramLine);
1491 double yPosition =
extrapolate1D(initialPosition.
y(), initialDirection.
y(), paramLine);
1493 posZY.push_back(xPosition);
1494 posZY.push_back(yPosition);
References PV3DBase< T, PVType, FrameType >::x(), PV3DBase< T, PVType, FrameType >::y(), and PV3DBase< T, PVType, FrameType >::z().
◆ lineParameter()
double CSCEfficiency::lineParameter |
( |
double |
initZPosition, |
|
|
double |
destZPosition, |
|
|
double |
initZDirection |
|
) |
| |
|
private |
Definition at line 1502 of file CSCEfficiency.cc.
1503 double paramLine = (destZPosition - initZPosition) / initZDirection;
◆ propagate()
◆ propagator()
const Propagator * CSCEfficiency::propagator |
( |
std::string |
propagatorName | ) |
const |
|
private |
◆ recHitSegment_Efficiencies()
Definition at line 1309 of file CSCEfficiency.cc.
1312 int ec, st, rg, ch, secondRing;
1314 bool firstCondition, secondCondition;
1316 std::vector<bool> missingLayers_rh(6);
1317 std::vector<int> usedInSegment(6);
1320 std::cout <<
"RecHits eff" << std::endl;
1321 for (
int iLayer = 0; iLayer < 6; ++iLayer) {
1322 firstCondition = !
allRechits[ec][st][rg][ch][iLayer].empty() ?
true :
false;
1323 secondCondition =
false;
1325 if (secondRing > -1) {
1326 secondCondition = !
allRechits[ec][st][secondRing][ch][iLayer].empty() ?
true :
false;
1327 if (secondCondition) {
1328 thisRing = secondRing;
1331 if (firstCondition || secondCondition) {
1333 for (
size_t iR = 0; iR <
allRechits[ec][st][thisRing][ch][iLayer].size(); ++iR) {
1335 usedInSegment[iLayer] = 1;
1338 usedInSegment[iLayer] = -1;
1342 missingLayers_rh[iLayer] =
true;
1345 printf(
"\t\tendcap/station/ring/chamber/layer: %i/%i/%i/%i/%i\n",
1358 secondCondition =
false;
1361 if (secondRing > -1) {
1362 secondCondition = !
allSegments[ec][st][secondRing][ch].empty() ?
true :
false;
1363 secondSize =
allSegments[ec][st][secondRing][ch].size();
1364 if (secondCondition) {
1365 thisRing = secondRing;
1368 if (firstCondition || secondCondition) {
1370 std::cout <<
"segments - start ec = " << ec <<
" st = " << st <<
" rg = " << rg <<
" ch = " << ch << std::endl;
1380 std::cout <<
" fts.position() = " << ftsChamber.
position() <<
" segPos = " << globalPos <<
" res = " << residual
1384 for (
int iLayer = 0; iLayer < 6; ++iLayer) {
1386 std::cout <<
" iLayer = " << iLayer <<
" usedInSegment = " << usedInSegment[iLayer] << std::endl;
1387 if (0 != usedInSegment[iLayer]) {
1388 if (-1 == usedInSegment[iLayer]) {
1393 firstCondition = !
allRechits[ec][st][rg][ch][iLayer].empty() ?
true :
false;
1394 secondCondition =
false;
1395 if (secondRing > -1) {
1396 secondCondition = !
allRechits[ec][st][secondRing][ch][iLayer].empty() ?
true :
false;
1398 float stripAngle = 99999.;
1399 std::vector<float> posXY(2);
1400 bool oneSegment =
false;
1405 GlobalPoint gp_extrapol(posXY.at(0), posXY.at(1), bp.position().z());
1407 posXY.at(0) = lp_extrapol.
x();
1408 posXY.at(1) = lp_extrapol.y();
1412 if (firstCondition || secondCondition) {
1428 std::cout <<
"missing segment " << std::endl;
References relativeConstraints::chamber, gather_cfg::cout, makeMuonMisalignmentScenario::endcap, PV3DBase< T, PVType, FrameType >::eta(), first, FirstCh, CSCLayer::geometry(), CSCChamber::layer(), M_PI, CSCLayerGeometry::nearestStrip(), FreeTrajectoryState::position(), funct::pow(), relativeConstraints::ring, edm::second(), findQualityFiles::size, mathSSE::sqrt(), relativeConstraints::station, CSCLayerGeometry::stripAngle(), GeomDet::surface(), GeomDet::toGlobal(), GeomDet::toLocal(), funct::true, PV3DBase< T, PVType, FrameType >::x(), PV3DBase< T, PVType, FrameType >::y(), and PV3DBase< T, PVType, FrameType >::z().
◆ recSimHitEfficiency()
Definition at line 1265 of file CSCEfficiency.cc.
1266 int ec, st, rg, ch, secondRing;
1268 bool firstCondition, secondCondition;
1269 for (
int iLayer = 0; iLayer < 6; iLayer++) {
1270 firstCondition = !
allSimhits[ec][st][rg][ch][iLayer].empty() ?
true :
false;
1271 secondCondition =
false;
1273 if (secondRing > -1) {
1274 secondCondition = !
allSimhits[ec][st][secondRing][ch][iLayer].empty() ?
true :
false;
1275 if (secondCondition) {
1276 thisRing = secondRing;
1279 if (firstCondition || secondCondition) {
1280 for (
size_t iSH = 0; iSH <
allSimhits[ec][st][thisRing][ch][iLayer].size(); ++iSH) {
References relativeConstraints::empty, edm::second(), and funct::true.
◆ returnTypes()
void CSCEfficiency::returnTypes |
( |
CSCDetId & |
id, |
|
|
int & |
ec, |
|
|
int & |
st, |
|
|
int & |
rg, |
|
|
int & |
ch, |
|
|
int & |
secondRing |
|
) |
| |
|
private |
◆ ringCandidates()
void CSCEfficiency::ringCandidates |
( |
int |
station, |
|
|
float |
absEta, |
|
|
std::map< std::string, bool > & |
chamberTypes |
|
) |
| |
|
private |
◆ stripWire_Efficiencies()
Definition at line 1175 of file CSCEfficiency.cc.
1176 int ec, st, rg, ch, secondRing;
1179 bool firstCondition, secondCondition;
1180 int missingLayers_s = 0;
1181 int missingLayers_wg = 0;
1182 for (
int iLayer = 0; iLayer < 6; iLayer++) {
1185 printf(
"\t%i swEff: \tendcap/station/ring/chamber/layer: %i/%i/%i/%i/%i\n",
1193 <<
allStrips[
id.endcap() - 1][
id.station() - 1][
id.ring() - 1][
id.chamber() -
FirstCh][iLayer].size()
1195 <<
allWG[
id.endcap() - 1][
id.station() - 1][
id.ring() - 1][
id.chamber() -
FirstCh][iLayer].size()
1198 firstCondition = !
allStrips[ec][st][rg][ch][iLayer].empty() ?
true :
false;
1200 secondCondition =
false;
1201 if (secondRing > -1) {
1202 secondCondition = !
allStrips[ec][st][secondRing][ch][iLayer].empty() ?
true :
false;
1204 if (firstCondition || secondCondition) {
1209 printf(
"\t\tendcap/station/ring/chamber/layer: %i/%i/%i/%i/%i\n",
1218 firstCondition = !
allWG[ec][st][rg][ch][iLayer].empty() ?
true :
false;
1219 secondCondition =
false;
1220 if (secondRing > -1) {
1221 secondCondition = !
allWG[ec][st][secondRing][ch][iLayer].empty() ?
true :
false;
1223 if (firstCondition || secondCondition) {
1228 printf(
"\t\tendcap/station/ring/chamber/layer: %i/%i/%i/%i/%i\n",
1238 if (6 != missingLayers_s) {
1241 if (6 != missingLayers_wg) {
1248 if (missingLayers_s != missingLayers_wg) {
1250 if (6 == missingLayers_wg) {
1254 if (6 == missingLayers_s) {
1258 }
else if (6 == missingLayers_s) {
References relativeConstraints::chamber, gather_cfg::cout, makeMuonMisalignmentScenario::endcap, FirstCh, FreeTrajectoryState::momentum(), relativeConstraints::ring, relativeConstraints::station, PV3DBase< T, PVType, FrameType >::theta(), and funct::true.
◆ al_token
◆ ALCTPerEvent
TH1F* CSCEfficiency::ALCTPerEvent |
|
private |
◆ allALCT
bool CSCEfficiency::allALCT[2][4][4][(36 - 1+1)] |
|
private |
◆ allCLCT
bool CSCEfficiency::allCLCT[2][4][4][(36 - 1+1)] |
|
private |
◆ allCorrLCT
bool CSCEfficiency::allCorrLCT[2][4][4][(36 - 1+1)] |
|
private |
◆ allRechits
std::vector<std::pair<LocalPoint, bool> > CSCEfficiency::allRechits[2][4][4][(36 - 1+1)][6] |
|
private |
◆ allSegments
◆ allSimhits
std::vector<std::pair<LocalPoint, int> > CSCEfficiency::allSimhits[2][4][4][(36 - 1+1)][6] |
|
private |
◆ allStrips
std::vector<std::pair<int, float> > CSCEfficiency::allStrips[2][4][4][(36 - 1+1)][6] |
|
private |
◆ allWG
std::vector<std::pair<std::pair<int, float>, int> > CSCEfficiency::allWG[2][4][4][(36 - 1+1)][6] |
|
private |
◆ alongZ
bool CSCEfficiency::alongZ |
|
private |
◆ andOr
bool CSCEfficiency::andOr |
|
private |
◆ applyIPangleCuts
bool CSCEfficiency::applyIPangleCuts |
|
private |
◆ ChHist
◆ cl_token
◆ CLCTPerEvent
TH1F* CSCEfficiency::CLCTPerEvent |
|
private |
◆ co_token
◆ DataFlow
TH1F* CSCEfficiency::DataFlow |
|
private |
◆ distanceFromDeadZone
double CSCEfficiency::distanceFromDeadZone |
|
private |
◆ emptyChambers
bool CSCEfficiency::emptyChambers[2][4][4][(36 - 1+1)] |
|
private |
◆ geomToken_
◆ getAbsoluteEfficiency
bool CSCEfficiency::getAbsoluteEfficiency |
|
private |
◆ ht_token
◆ isBeamdata
bool CSCEfficiency::isBeamdata |
|
private |
◆ isData
bool CSCEfficiency::isData |
|
private |
◆ isIPdata
bool CSCEfficiency::isIPdata |
|
private |
◆ local_DX_DZ_Max
double CSCEfficiency::local_DX_DZ_Max |
|
private |
◆ local_DY_DZ_Max
double CSCEfficiency::local_DY_DZ_Max |
|
private |
◆ local_DY_DZ_Min
double CSCEfficiency::local_DY_DZ_Min |
|
private |
◆ magField
bool CSCEfficiency::magField |
|
private |
◆ maxNormChi2
double CSCEfficiency::maxNormChi2 |
|
private |
◆ maxP
double CSCEfficiency::maxP |
|
private |
◆ minP
double CSCEfficiency::minP |
|
private |
◆ minTrackHits
unsigned int CSCEfficiency::minTrackHits |
|
private |
◆ myTriggers
std::vector<std::string> CSCEfficiency::myTriggers |
|
private |
◆ nEventsAnalyzed
int CSCEfficiency::nEventsAnalyzed |
|
private |
◆ passTheEvent
bool CSCEfficiency::passTheEvent |
|
private |
◆ pointToTriggers
std::vector<int> CSCEfficiency::pointToTriggers |
|
private |
◆ printalot
bool CSCEfficiency::printalot |
|
private |
◆ printout_NEvents
unsigned int CSCEfficiency::printout_NEvents |
|
private |
◆ recHitsPerEvent
TH1F* CSCEfficiency::recHitsPerEvent |
|
private |
◆ rh_token
◆ rootFileName
std::string CSCEfficiency::rootFileName |
|
private |
◆ sd_token
◆ se_token
◆ segmentsPerEvent
TH1F* CSCEfficiency::segmentsPerEvent |
|
private |
◆ sh_token
◆ StHist
◆ theFile
TFile* CSCEfficiency::theFile |
|
private |
◆ theService
◆ tk_token
◆ TriggersFired
TH1F* CSCEfficiency::TriggersFired |
|
private |
◆ useDigis
bool CSCEfficiency::useDigis |
|
private |
◆ useTrigger
bool CSCEfficiency::useTrigger |
|
private |
◆ wd_token
TrajectoryStateOnSurface propagate(FreeTrajectoryState &ftsStart, const BoundPlane &bp)
MuonServiceProxy * theService
GlobalVector momentum() const
edm::EDGetTokenT< CSCCLCTDigiCollection > cl_token
TH1F * InefficientALCT_dydz
TH1F * InefficientALCT_momTheta
TH1F * InefficientCLCT_momPhi
const CSCLayer * layer(CSCDetId id) const
Return the layer corresponding to the given id.
T const * product() const
bool recSimHitEfficiency(CSCDetId &id, FreeTrajectoryState &ftsChamber)
edm::EDGetTokenT< edm::PSimHitContainer > sh_token
bool inSensitiveLocalRegion(double xLocal, double yLocal, int station, int ring)
void chamberCandidates(int station, int ring, float phi, std::vector< int > &coupleOfChambers)
edm::EDGetTokenT< CSCRecHit2DCollection > rh_token
std::vector< std::pair< LocalPoint, int > > allSimhits[2][4][4][(36 - 1+1)][6]
Geom::Theta< T > theta() const
const GeomDet * idToDet(DetId) const override
TrackCharge charge() const
bool wasrun() const
Was at least one path run?
U second(std::pair< T, U > const &p)
ConsumesCollector consumesCollector()
Use a ConsumesCollector to gather consumes information from helper functions.
edm::EDGetTokenT< edm::View< reco::Track > > tk_token
bool stripWire_Efficiencies(CSCDetId &cscDetId, FreeTrajectoryState &ftsChamber)
bool error() const
Has any path encountered an error (exception)
GlobalPoint position() const
std::vector< TH1F * > Y_EfficientRecHits_inSegment
bool getAbsoluteEfficiency
std::vector< DigiType >::const_iterator const_iterator
edm::EDGetTokenT< CSCWireDigiCollection > wd_token
std::vector< int > pointToTriggers
const Plane & surface() const
The nominal surface of the GeomDet.
bool allCLCT[2][4][4][(36 - 1+1)]
void returnTypes(CSCDetId &id, int &ec, int &st, int &rg, int &ch, int &secondRing)
struct CSCEfficiency::StationHistos StHist[2][4]
FreeTrajectoryState const * freeState(bool withErrors=true) const
CartesianTrajectoryError cartesianError() const
TH1F * StripWiresCorrelations
double lineParameter(double initZPosition, double destZPosition, double initZDirection)
void linearExtrapolation(GlobalPoint initialPosition, GlobalVector initialDirection, float zSurface, std::vector< float > &posZY)
std::vector< std::pair< LocalPoint, bool > > allRechits[2][4][4][(36 - 1+1)][6]
float caloCompatibility(const reco::Muon &muon)
ROOT::Math::SMatrix< double, 6, 6, ROOT::Math::MatRepSym< double, 6 > > AlgebraicSymMatrix66
void fillDigiInfo(edm::Handle< CSCALCTDigiCollection > &alcts, edm::Handle< CSCCLCTDigiCollection > &clcts, edm::Handle< CSCCorrelatedLCTDigiCollection > &correlatedlcts, edm::Handle< CSCWireDigiCollection > &wires, edm::Handle< CSCStripDigiCollection > &strips, edm::Handle< edm::PSimHitContainer > &simhits, edm::Handle< CSCRecHit2DCollection > &rechits, edm::Handle< CSCSegmentCollection > &segments, edm::ESHandle< CSCGeometry > &cscGeom)
unsigned long long EventNumber_t
TH1F * EfficientCLCT_momPhi
const CSCLayerGeometry * geometry() const
const Point & position() const
position
TH1F * EfficientALCT_dydz
struct CSCEfficiency::ChamberHistos ChHist[2][4][3][36 - 1+1]
LocalPoint toLocal(const GlobalPoint &gp) const
Conversion to the R.F. of the GeomDet.
FreeTrajectoryState getFromCLHEP(const CLHEP::Hep3Vector &p3, const CLHEP::Hep3Vector &r3, int charge, const AlgebraicSymMatrix66 &cov, const MagneticField *field)
void fillLCT_info(edm::Handle< CSCALCTDigiCollection > &alcts, edm::Handle< CSCCLCTDigiCollection > &clcts, edm::Handle< CSCCorrelatedLCTDigiCollection > &correlatedlcts)
std::vector< std::pair< LocalPoint, LocalVector > > allSegments[2][4][4][(36 - 1+1)]
TH1F * InefficientCLCT_dxdz
TH2F * EfficientSegments_XY
constexpr std::array< uint8_t, layerIndexSize > layer
TH1F * EfficientRechits_good
int nearestStrip(const LocalPoint &lp) const
TH1F * InefficientSingleHits
bool allCorrLCT[2][4][4][(36 - 1+1)]
DetId geographicalId() const
The label of this GeomDet.
GlobalPoint toGlobal(const Local2DPoint &lp) const
Conversion to the global R.F. from the R.F. of the GeomDet.
void fillSimhit_info(edm::Handle< edm::PSimHitContainer > &simHits)
const Propagator * propagator(std::string propagatorName) const
TH1F * EfficientRechits_inSegment
bool emptyChambers[2][4][4][(36 - 1+1)]
C::const_iterator const_iterator
constant access iterator type
std::vector< std::string > myTriggers
double extrapolate1D(double initPosition, double initDirection, double parameterOfTheLine)
TH1F * EfficientWireGroups
double distanceFromDeadZone
std::vector< TH1F * > Phi_InefficientRecHits_inSegment
TH1F * EfficientSegments_eta
edm::ESGetToken< CSCGeometry, MuonGeometryRecord > geomToken_
ESHandle< T > getHandle(const ESGetToken< T, R > &iToken) const
std::vector< TH1F * > Phi_EfficientRecHits_inSegment
void fillWG_info(edm::Handle< CSCWireDigiCollection > &wires, edm::ESHandle< CSCGeometry > &cscGeom)
void chooseDirection(CLHEP::Hep3Vector &innerPosition, CLHEP::Hep3Vector &outerPosition)
bool applyTrigger(edm::Handle< edm::TriggerResults > &hltR, const edm::TriggerNames &triggerNames)
TrajectoryStateOnSurface propagate(STA const &state, SUR const &surface) const
float stripAngle(int strip) const
for(int i=first, nt=offsets[nh];i< nt;i+=gridDim.x *blockDim.x)
unsigned int printout_NEvents
const AlgebraicSymMatrix66 & matrix() const
void getFromFTS(const FreeTrajectoryState &fts, CLHEP::Hep3Vector &p3, CLHEP::Hep3Vector &r3, int &charge, AlgebraicSymMatrix66 &cov)
edm::EDGetTokenT< CSCCorrelatedLCTDigiCollection > co_token
edm::EDGetTokenT< edm::TriggerResults > ht_token
const PositionType & position() const
const CSCLayer * layer(CSCDetId id) const
Return the layer corresponding to given DetId.
std::vector< std::pair< int, float > > allStrips[2][4][4][(36 - 1+1)][6]
void fillRechitsSegments_info(edm::Handle< CSCRecHit2DCollection > &rechits, edm::Handle< CSCSegmentCollection > &segments, edm::ESHandle< CSCGeometry > &cscGeom)
bool recHitSegment_Efficiencies(CSCDetId &cscDetId, const CSCChamber *cscChamber, FreeTrajectoryState &ftsChamber)
bool checkLocal(double yLocal, double yBoundary, int station, int ring)
std::pair< const_iterator, const_iterator > Range
TH1F * digiAppearanceCount
edm::EDGetTokenT< CSCSegmentCollection > se_token
bool accept() const
Has at least one path accepted the event?
std::vector< TH1F * > Y_InefficientRecHits_inSegment
void fillStrips_info(edm::Handle< CSCStripDigiCollection > &strips)
Power< A, B >::type pow(const A &a, const B &b)
Abs< T >::type abs(const T &t)
unsigned int minTrackHits
TH1F * EfficientALCT_momTheta
TH1F * EfficientCLCT_dxdz
float yOfWireGroup(int wireGroup, float x=0.) const
bool efficienciesPerChamber(CSCDetId &id, const CSCChamber *cscChamber, FreeTrajectoryState &ftsChamber)
void ringCandidates(int station, float absEta, std::map< std::string, bool > &chamberTypes)
strips
#turn off noise in all subdetectors simHcalUnsuppressedDigis.doNoise = False mix.digitizers....
Geom::Phi< T > phi() const
const CSCChamber * chamber(CSCDetId id) const
Return the chamber corresponding to given DetId.
std::vector< std::pair< std::pair< int, float >, int > > allWG[2][4][4][(36 - 1+1)][6]
edm::EDGetTokenT< CSCALCTDigiCollection > al_token
edm::EDGetTokenT< CSCStripDigiCollection > sd_token
bool allALCT[2][4][4][(36 - 1+1)]
TH2F * InefficientSegments_XY