CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
CSCValidation.h
Go to the documentation of this file.
1 #ifndef RecoLocalMuon_CSCValidation_H
2 #define RecoLocalMuon_CSCValidation_H
3 
18 // user include files
29 
42 
62 //FEDRawData
66 
67 
72 
77 
83 
88 
91 
98 
107 
109 
111 #include "TVector3.h"
112 #include "TH1F.h"
113 #include "TH2F.h"
114 #include "TFile.h"
115 #include "TString.h"
116 #include "TTree.h"
117 #include "TProfile2D.h"
118 
120 public:
122  CSCValidation(const edm::ParameterSet& pset);
123 
125  virtual ~CSCValidation();
126 
128  void analyze(const edm::Event & event, const edm::EventSetup& eventSetup);
129  void endJob();
130 
131  // for noise module
132  struct ltrh
133  {
134  bool operator()(const CSCRecHit2D rh1, const CSCRecHit2D rh2) const
135  {
136  return ((rh1.localPosition()).x()-(rh2.localPosition()).x()) < 0;
137  }
138  };
139 
140 
141 protected:
142 
143 private:
144 
145  // these are the "modules"
146  // if you would like to add code to CSCValidation, please do so by adding an
147  // extra module in the form of an additional private member function
161  void doCalibrations(const edm::EventSetup& eventSetup);
162  void doAFEBTiming(const CSCWireDigiCollection &);
164  void doADCTiming(const CSCRecHit2DCollection &);
173  const edm::EventSetup& eventSetup, const edm::Event &event);
175 
176 
177  // some useful functions
180  float fitX(CLHEP::HepMatrix sp, CLHEP::HepMatrix ep);
181  float getSignal(const CSCStripDigiCollection& stripdigis, CSCDetId idRH, int centerStrip);
182  float getthisSignal(const CSCStripDigiCollection& stripdigis, CSCDetId idRH, int centerStrip);
183  int getWidth(const CSCStripDigiCollection& stripdigis, CSCDetId idRH, int centerStrip);
185  int chamberSerial( CSCDetId id );
186  int ringSerial( CSCDetId id );
187 
188  // these functions handle Stoyan's efficiency code
189  void fillEfficiencyHistos(int bin, int flag);
190  void getEfficiency(float bin, float Norm, std::vector<float> &eff);
191  void histoEfficiency(TH1F *readHisto, TH1F *writeHisto);
192  double lineParametrization(double z1Position, double z2Position, double z1Direction){
193  double parameterLine = (z2Position-z1Position)/z1Direction;
194  return parameterLine;
195  }
196  double extrapolate1D(double initPosition, double initDirection, double parameterOfTheLine){
197  double extrapolatedPosition = initPosition + initDirection*parameterOfTheLine;
198  return extrapolatedPosition;
199  }
200  bool withinSensitiveRegion(LocalPoint localPos, const std::vector<float> layerBounds, int station, int ring, float shiftFromEdge, float shiftFromDeadZone);
201 
202 
203  // counters
209 
210  //
211  //
212  // The root file for the histograms.
213  TFile *theFile;
214 
215  //
216  //
217  // input parameters for this module
218  bool makePlots;
220  std::string refRootFile;
223  std::string rootFileName;
225  bool useDigis;
227 
228  // filters
231 
232  // quality filter parameters
233  double pMin;
234  double chisqMax;
237  double deltaPhiMax;
239 
240 
253 
254  // module on/off switches
273 
274  // The histo managing object
276 
277  // tmp histos for Efficiency
278  TH1F *hSSTE;
279  TH1F *hRHSTE;
280  TH1F *hSEff;
281  TH1F *hRHEff;
282  TH2F *hSSTE2;
283  TH2F *hRHSTE2;
284  TH2F *hStripSTE2;
285  TH2F *hWireSTE2;
286  TH2F *hSEff2;
287  TH2F *hRHEff2;
288  TH2F *hStripEff2;
289  TH2F *hWireEff2;
292 
293  // occupancy
294  TH2I *hOWires;
295  TH2I *hOStrips;
296  TH2I *hORecHits;
297  TH2I *hOSegments;
298 
300  std::vector<int> nmbhvsegm;
301  std::map<int, std::vector<int> > m_wire_hvsegm;
302  std::map<int, int> m_single_wire_layer;
303 
304  //maps to store the DetId and associated RecHits
305  std::multimap<CSCDetId , CSCRecHit2D> AllRechits;
306  std::multimap<CSCDetId , CSCRecHit2D> SegRechits;
307  std::multimap<CSCDetId , CSCRecHit2D> NonAssociatedRechits;
308  std::map<CSCRecHit2D,float,ltrh> distRHmap;
309 
311  // linearlized index bases on endcap, station, and ring
312  int index = 0;
313  if (id.station() == 1){
314  index = id.ring() + 1;
315  if (id.ring() == 4) index = 1;
316  }
317  else index = id.station()*2 + id.ring();
318  if (id.endcap() == 1) index = index + 10;
319  if (id.endcap() == 2) index = 11 - index;
320  return index;
321  }
322 
323 
324 
325 
326 };
327 #endif
bool makeADCTimingPlots
float getthisSignal(const CSCStripDigiCollection &stripdigis, CSCDetId idRH, int centerStrip)
long int flag
Definition: mlp_lapack.h:47
TH2F * hSensitiveAreaEvt
bool withinSensitiveRegion(LocalPoint localPos, const std::vector< float > layerBounds, int station, int ring, float shiftFromEdge, float shiftFromDeadZone)
edm::InputTag saMuonTag
void analyze(const edm::Event &event, const edm::EventSetup &eventSetup)
Perform the analysis.
std::map< int, std::vector< int > > m_wire_hvsegm
edm::InputTag l1aTag
int typeIndex(CSCDetId id)
bool makeResolutionPlots
void doNoiseHits(edm::Handle< CSCRecHit2DCollection > recHits, edm::Handle< CSCSegmentCollection > cscSegments, edm::ESHandle< CSCGeometry > cscGeom, edm::Handle< CSCStripDigiCollection > strips)
bool makeAFEBTimingPlots
void doRecHits(edm::Handle< CSCRecHit2DCollection > recHits, edm::ESHandle< CSCGeometry > cscGeom)
std::string refRootFile
void doEfficiencies(edm::Handle< CSCWireDigiCollection > wires, edm::Handle< CSCStripDigiCollection > strips, edm::Handle< CSCRecHit2DCollection > recHits, edm::Handle< CSCSegmentCollection > cscSegments, edm::ESHandle< CSCGeometry > cscGeom)
std::multimap< CSCDetId, CSCRecHit2D > NonAssociatedRechits
edm::InputTag clctDigiTag
bool makeComparisonPlots
bool doTrigger(edm::Handle< L1MuGMTReadoutCollection > pCollection)
bool operator()(const CSCRecHit2D rh1, const CSCRecHit2D rh2) const
double lineParametrization(double z1Position, double z2Position, double z1Direction)
bool makeEfficiencyPlots
bool makeStandalonePlots
void doCompTiming(const CSCComparatorDigiCollection &)
std::multimap< CSCDetId, CSCRecHit2D > AllRechits
void doPedestalNoise(edm::Handle< CSCStripDigiCollection > strips)
bool makePedNoisePlots
void doStripDigis(edm::Handle< CSCStripDigiCollection > strips)
int getWidth(const CSCStripDigiCollection &stripdigis, CSCDetId idRH, int centerStrip)
void histoEfficiency(TH1F *readHisto, TH1F *writeHisto)
int ringSerial(CSCDetId id)
edm::InputTag corrlctDigiTag
bool filterEvents(edm::Handle< CSCRecHit2DCollection > recHits, edm::Handle< CSCSegmentCollection > cscSegments, edm::Handle< reco::TrackCollection > saMuons)
bool doHLT(edm::Handle< edm::TriggerResults > hltResults)
edm::InputTag wireDigiTag
TH2F * hEffDenominator
float fitX(CLHEP::HepMatrix sp, CLHEP::HepMatrix ep)
edm::InputTag stripDigiTag
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 doSimHits(edm::Handle< CSCRecHit2DCollection > recHits, edm::Handle< edm::PSimHitContainer > simHits)
bool makeCompTimingPlots
void doGasGain(const CSCWireDigiCollection &, const CSCStripDigiCollection &, const CSCRecHit2DCollection &)
bool makeOccupancyPlots
void getEfficiency(float bin, float Norm, std::vector< float > &eff)
void doResolution(edm::Handle< CSCSegmentCollection > cscSegments, edm::ESHandle< CSCGeometry > cscGeom)
edm::InputTag alctDigiTag
void findNonAssociatedRecHits(edm::ESHandle< CSCGeometry > cscGeom, edm::Handle< CSCStripDigiCollection > strips)
void fillEfficiencyHistos(int bin, int flag)
std::vector< int > nmbhvsegm
Maps and vectors for module doGasGain()
tuple simHits
Definition: trackerHits.py:16
std::multimap< CSCDetId, CSCRecHit2D > SegRechits
void doAFEBTiming(const CSCWireDigiCollection &)
void doTimeMonitoring(edm::Handle< CSCRecHit2DCollection > recHits, edm::Handle< CSCSegmentCollection > cscSegments, edm::Handle< CSCALCTDigiCollection > alcts, edm::Handle< CSCCLCTDigiCollection > clcts, edm::Handle< CSCCorrelatedLCTDigiCollection > correlatedlcts, edm::Handle< L1MuGMTReadoutCollection > pCollection, edm::ESHandle< CSCGeometry > cscGeom, const edm::EventSetup &eventSetup, const edm::Event &event)
bool makeTimeMonitorPlots
float getSignal(const CSCStripDigiCollection &stripdigis, CSCDetId idRH, int centerStrip)
edm::InputTag simHitTag
void doStandalone(edm::Handle< reco::TrackCollection > saMuons)
int chamberSerial(CSCDetId id)
std::string rootFileName
void doWireDigis(edm::Handle< CSCWireDigiCollection > wires)
double deltaPhiMax
edm::InputTag cscSegTag
void doADCTiming(const CSCRecHit2DCollection &)
std::map< int, int > m_single_wire_layer
edm::InputTag hltTag
LocalPoint localPosition() const
Definition: CSCRecHit2D.h:50
CSCValidation(const edm::ParameterSet &pset)
Constructor.
x
Definition: VDTMath.h:216
void doSegments(edm::Handle< CSCSegmentCollection > cscSegments, edm::ESHandle< CSCGeometry > cscGeom)
edm::InputTag compDigiTag
double extrapolate1D(double initPosition, double initDirection, double parameterOfTheLine)
edm::InputTag cscRecHitTag
void doOccupancies(edm::Handle< CSCStripDigiCollection > strips, edm::Handle< CSCWireDigiCollection > wires, edm::Handle< CSCRecHit2DCollection > recHits, edm::Handle< CSCSegmentCollection > cscSegments)
std::map< CSCRecHit2D, float, ltrh > distRHmap
virtual ~CSCValidation()
Destructor.
CSCValHists * histos
void doCalibrations(const edm::EventSetup &eventSetup)