1 #ifndef RecoLocalMuon_CSCEfficiency_H
2 #define RecoLocalMuon_CSCEfficiency_H
79 #include "CLHEP/Matrix/Vector.h"
80 #include "CLHEP/Vector/ThreeVector.h"
99 #define SQR(x) ((x)*(x))
103 #define NumCh (LastCh-FirstCh+1)
196 std::vector <std::pair <std::pair <int, float>,
int> >
allWG[2][4][4][
NumCh][6];
243 CLHEP::Hep3Vector&
p3, CLHEP::Hep3Vector& r3,
251 float zSurface, std::vector <float> &posZY);
252 double extrapolate1D(
double initPosition,
double initDirection,
double parameterOfTheLine);
253 double lineParameter(
double initZPosition,
double destZPosition,
double initZDirection);
256 void chooseDirection(CLHEP::Hep3Vector & innerPosition, CLHEP::Hep3Vector & outerPosition);
edm::InputTag corrlctDigiTag_
TH1F * InefficientALCT_dydz
struct CSCEfficiency::StationHistos StHist[2][4]
TH1F * EfficientALCT_momTheta
edm::InputTag segmentDigiTag_
bool applyTrigger(edm::Handle< edm::TriggerResults > &hltR, const edm::TriggerNames &triggerNames)
TH1F * EfficientRechits_inSegment
TH1F * InefficientSingleHits
struct CSCEfficiency::ChamberHistos ChHist[2][4][3][LastCh-FirstCh+1]
void fillWG_info(edm::Handle< CSCWireDigiCollection > &wires, edm::ESHandle< CSCGeometry > &cscGeom)
void chooseDirection(CLHEP::Hep3Vector &innerPosition, CLHEP::Hep3Vector &outerPosition)
TH1F * InefficientCLCT_dxdz
void ringCandidates(int station, float absEta, std::map< std::string, bool > &chamberTypes)
double lineParameter(double initZPosition, double destZPosition, double initZDirection)
std::vector< TH1F * > Y_InefficientRecHits_inSegment
ROOT::Math::SMatrix< double, 6, 6, ROOT::Math::MatRepSym< double, 6 > > AlgebraicSymMatrix66
TH1F * EfficientCLCT_dxdz
std::vector< std::pair< LocalPoint, int > > allSimhits[2][4][4][NumCh][6]
bool allCLCT[2][4][4][NumCh]
bool recSimHitEfficiency(CSCDetId &id, FreeTrajectoryState &ftsChamber)
CSCEfficiency(const edm::ParameterSet &pset)
Constructor.
TH1F * StripWiresCorrelations
virtual bool filter(edm::Event &event, const edm::EventSetup &eventSetup)
virtual ~CSCEfficiency()
Destructor.
void returnTypes(CSCDetId &id, int &ec, int &st, int &rg, int &ch, int &secondRing)
bool getAbsoluteEfficiency
TH1F * EfficientCLCT_momPhi
FreeTrajectoryState getFromCLHEP(const CLHEP::Hep3Vector &p3, const CLHEP::Hep3Vector &r3, int charge, const AlgebraicSymMatrix66 &cov, const MagneticField *field)
std::vector< std::string > myTriggers
std::vector< TH1F * > Phi_InefficientRecHits_inSegment
std::vector< TH1F * > Y_EfficientRecHits_inSegment
MuonServiceProxy * theService
bool allALCT[2][4][4][NumCh]
edm::InputTag rechitDigiTag_
std::vector< std::pair< std::pair< int, float >, int > > allWG[2][4][4][NumCh][6]
TH1F * EfficientWireGroups
void linearExtrapolation(GlobalPoint initialPosition, GlobalVector initialDirection, float zSurface, std::vector< float > &posZY)
edm::InputTag hlTriggerResults_
double distanceFromDeadZone
How EventSelector::AcceptEvent() decides whether to accept an event for output otherwise it is excluding the probing of A single or multiple positive and the trigger will pass if any such matching triggers are PASS or EXCEPTION[A criterion thatmatches no triggers at all is detected and causes a throw.] A single negative with an expectation of appropriate bit checking in the decision and the trigger will pass if any such matching triggers are FAIL or EXCEPTION A wildcarded negative criterion that matches more than one trigger in the trigger but the state exists so we define the behavior If all triggers are the negative crieriion will lead to accepting the event(this again matches the behavior of"!*"before the partial wildcard feature was incorporated).The per-event"cost"of each negative criterion with multiple relevant triggers is about the same as!*was in the past
void getFromFTS(const FreeTrajectoryState &fts, CLHEP::Hep3Vector &p3, CLHEP::Hep3Vector &r3, int &charge, AlgebraicSymMatrix66 &cov)
bool efficienciesPerChamber(CSCDetId &id, const CSCChamber *cscChamber, FreeTrajectoryState &ftsChamber)
TH1F * EfficientSegments_eta
void chamberCandidates(int station, int ring, float phi, std::vector< int > &coupleOfChambers)
std::vector< TH1F * > Phi_EfficientRecHits_inSegment
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)
std::vector< std::pair< int, float > > allStrips[2][4][4][NumCh][6]
bool stripWire_Efficiencies(CSCDetId &cscDetId, FreeTrajectoryState &ftsChamber)
TH1F * InefficientALCT_momTheta
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)
const Propagator * propagator(std::string propagatorName) const
TH1F * EfficientRechits_good
bool recHitSegment_Efficiencies(CSCDetId &cscDetId, const CSCChamber *cscChamber, FreeTrajectoryState &ftsChamber)
unsigned int printout_NEvents
TH2F * InefficientSegments_XY
edm::InputTag clctDigiTag_
std::vector< std::pair< LocalPoint, LocalVector > > allSegments[2][4][4][NumCh]
bool inSensitiveLocalRegion(double xLocal, double yLocal, int station, int ring)
bool checkLocal(double yLocal, double yBoundary, int station, int ring)
TH1F * EfficientALCT_dydz
bool emptyChambers[2][4][4][NumCh]
std::vector< int > pointToTriggers
void fillSimhit_info(edm::Handle< edm::PSimHitContainer > &simHits)
edm::InputTag stripDigiTag_
edm::InputTag alctDigiTag_
TH1F * InefficientCLCT_momPhi
edm::InputTag wireDigiTag_
std::vector< std::pair< LocalPoint, bool > > allRechits[2][4][4][NumCh][6]
unsigned int minTrackHits
TrajectoryStateOnSurface propagate(FreeTrajectoryState &ftsStart, const BoundPlane &bp)
TH1F * digiAppearanceCount
TH2F * EfficientSegments_XY
bool allCorrLCT[2][4][4][NumCh]
void fillStrips_info(edm::Handle< CSCStripDigiCollection > &strips)