CMS 3D CMS Logo

PVFitter.h
Go to the documentation of this file.
1 #ifndef PVFitter_H
2 #define PVFitter_H
3 
23 
26 
28 
29 // ROOT
30 #include "TFile.h"
31 #include "TTree.h"
32 #include "TH2F.h"
33 
34 #include <fstream>
35 
36 namespace edm {
37  class ConsumesCollector;
38 }
39 
40 namespace reco {
41  class Vertex;
42 }
43 
44 class PVFitter {
45 public:
46  PVFitter() {}
47  PVFitter(const edm::ParameterSet& iConfig, edm::ConsumesCollector&& iColl);
48  PVFitter(const edm::ParameterSet& iConfig, edm::ConsumesCollector& iColl);
49  virtual ~PVFitter();
50 
51  void initialize(const edm::ParameterSet& iConfig, edm::ConsumesCollector& iColl);
52  void readEvent(const edm::Event& iEvent);
53  void setTree(TTree* tree);
54 
55  double getWidthX() { return fwidthX; }
56  double getWidthY() { return fwidthY; }
57  double getWidthZ() { return fwidthZ; }
58  double getWidthXerr() { return fwidthXerr; }
59  double getWidthYerr() { return fwidthYerr; }
60  double getWidthZerr() { return fwidthZerr; }
61  //ssc
62  std::vector<BeamSpotFitPVData> getpvStore() { return pvStore_; }
63 
64  void FitPerBunchCrossing() { fFitPerBunchCrossing = true; }
65  bool runBXFitter();
66  bool runFitter();
67  void resetLSRange() { fbeginLumiOfFit = fendLumiOfFit = -1; }
68  void resetRefTime() { freftime[0] = freftime[1] = 0; }
69  //ssc
70  void setRefTime(std::time_t t0, std::time_t t1) {
71  freftime[0] = t0;
72  freftime[1] = t1;
73  }
74  void setFitLSRange(int ls0, int ls1) {
75  fbeginLumiOfFit = ls0;
76  fendLumiOfFit = ls1;
77  }
78 
79  void dumpTxtFile();
80  void resetAll() {
81  resetLSRange();
82  resetRefTime();
83  pvStore_.clear();
84  bxMap_.clear();
85  dynamicQualityCut_ = 1.e30;
86  hPVx->Reset();
87  hPVy->Reset();
88  fbeamspot = reco::BeamSpot();
89  fbspotMap.clear();
90  };
91  reco::BeamSpot getBeamSpot() { return fbeamspot; }
92  std::map<int, reco::BeamSpot> getBeamSpotMap() { return fbspotMap; }
93  bool IsFitPerBunchCrossing() { return fFitPerBunchCrossing; }
94  int* getFitLSRange() {
95  int* tmp = new int[2];
96  tmp[0] = fbeginLumiOfFit;
97  tmp[1] = fendLumiOfFit;
98  return tmp;
99  }
100  //ssc
101  time_t* getRefTime() {
102  time_t* tmptime = new time_t[2];
103  tmptime[0] = freftime[0];
104  tmptime[1] = freftime[1];
105  return tmptime;
106  }
107 
108  //ssc
109  void resizepvStore(unsigned int rmSize) { pvStore_.erase(pvStore_.begin(), pvStore_.begin() + rmSize); }
110 
112  void compressStore();
114  double pvQuality(const reco::Vertex& pv) const;
116  double pvQuality(const BeamSpotFitPVData& pv) const;
117  int getNPVs() { return pvStore_.size(); }
118 
119  const std::map<int, int>& getNPVsperBX() {
120  npvsmap_.clear();
121 
122  for (std::map<int, std::vector<BeamSpotFitPVData> >::const_iterator pvStore = bxMap_.begin();
123  pvStore != bxMap_.end();
124  ++pvStore) {
125  npvsmap_[pvStore->first] = (pvStore->second).size();
126  }
127  return npvsmap_;
128  }
129 
130 private:
131  std::map<int, int> npvsmap_;
133  std::map<int, reco::BeamSpot> fbspotMap;
136 
137  std::ofstream fasciiFile;
138 
139  bool debug_;
140  bool do3DFit_;
143 
144  unsigned int maxNrVertices_;
145  unsigned int minNrVertices_;
146  double minVtxNdf_;
148  unsigned int minVtxTracks_;
149  double minVtxWgt_;
150  double maxVtxR_;
151  double maxVtxZ_;
152  double errorScale_;
153  double sigmaCut_;
154  double minSumPt_;
155 
156  std::time_t freftime[2];
157 
158  TH2F* hPVx;
159  TH2F* hPVy;
160 
161  TTree* ftree_;
162 
163  //beam fit results
166  double fwidthX;
167  double fwidthY;
168  double fwidthZ;
169  double fwidthXerr;
170  double fwidthYerr;
171  double fwidthZerr;
172 
173  std::vector<BeamSpotFitPVData> pvStore_; //< cache for PV data
174  std::map<int, std::vector<BeamSpotFitPVData> > bxMap_; // store PV data as a function of bunch crossings
175  double dynamicQualityCut_; //< quality cut for vertices (dynamic adjustment)
176  std::vector<double> pvQualities_; //< working space for PV store adjustement
177 
179 };
180 
181 #endif
double minSumPt_
Definition: PVFitter.h:154
size
Write out results.
std::vector< double > pvQualities_
Definition: PVFitter.h:176
int * getFitLSRange()
Definition: PVFitter.h:94
static AlgebraicMatrix initialize()
void setFitLSRange(int ls0, int ls1)
Definition: PVFitter.h:74
bool debug_
Definition: PVFitter.h:139
double maxVtxNormChi2_
Definition: PVFitter.h:147
const std::map< int, int > & getNPVsperBX()
Definition: PVFitter.h:119
std::map< int, std::vector< BeamSpotFitPVData > > bxMap_
Definition: PVFitter.h:174
double minVtxWgt_
Definition: PVFitter.h:149
bool useOnlyFirstPV_
Definition: PVFitter.h:135
std::map< int, reco::BeamSpot > getBeamSpotMap()
Definition: PVFitter.h:92
double minVtxNdf_
Definition: PVFitter.h:146
void FitPerBunchCrossing()
Definition: PVFitter.h:64
double fwidthY
Definition: PVFitter.h:167
double errorScale_
Definition: PVFitter.h:152
bool do3DFit_
Definition: PVFitter.h:140
double dynamicQualityCut_
Definition: PVFitter.h:175
double fwidthYerr
Definition: PVFitter.h:170
double fwidthZ
Definition: PVFitter.h:168
double fwidthXerr
Definition: PVFitter.h:169
double getWidthX()
Definition: PVFitter.h:55
reco::BeamSpot fbeamspot
Definition: PVFitter.h:132
int iEvent
Definition: GenABIO.cc:224
std::vector< BeamSpotFitPVData > pvStore_
Definition: PVFitter.h:173
void resetLSRange()
Definition: PVFitter.h:67
BeamSpotTreeData theBeamSpotTreeData_
Definition: PVFitter.h:178
std::ofstream fasciiFile
Definition: PVFitter.h:137
bool fFitPerBunchCrossing
Definition: PVFitter.h:134
TH2F * hPVy
Definition: PVFitter.h:159
def pv(vc)
Definition: MetAnalyzer.py:7
double getWidthY()
Definition: PVFitter.h:56
TTree * ftree_
Definition: PVFitter.h:161
int fbeginLumiOfFit
Definition: PVFitter.h:164
edm::EDGetTokenT< reco::VertexCollection > vertexToken_
Definition: PVFitter.h:141
std::map< int, reco::BeamSpot > fbspotMap
Definition: PVFitter.h:133
double maxVtxR_
Definition: PVFitter.h:150
void setRefTime(std::time_t t0, std::time_t t1)
Definition: PVFitter.h:70
double maxVtxZ_
Definition: PVFitter.h:151
unsigned int maxNrVertices_
Definition: PVFitter.h:144
double fwidthZerr
Definition: PVFitter.h:171
void resetRefTime()
Definition: PVFitter.h:68
std::vector< BeamSpotFitPVData > getpvStore()
Definition: PVFitter.h:62
PVFitter()
Definition: PVFitter.h:46
unsigned int minVtxTracks_
Definition: PVFitter.h:148
double getWidthZerr()
Definition: PVFitter.h:60
double getWidthZ()
Definition: PVFitter.h:57
int fendLumiOfFit
Definition: PVFitter.h:165
void resizepvStore(unsigned int rmSize)
Definition: PVFitter.h:109
TH2F * hPVx
Definition: PVFitter.h:158
void resetAll()
Definition: PVFitter.h:80
unsigned int minNrVertices_
Definition: PVFitter.h:145
double sigmaCut_
Definition: PVFitter.h:153
fixed size matrix
HLT enums.
time_t * getRefTime()
Definition: PVFitter.h:101
int getNPVs()
Definition: PVFitter.h:117
double fwidthX
Definition: PVFitter.h:166
double getWidthYerr()
Definition: PVFitter.h:59
Definition: tree.py:1
reco::BeamSpot getBeamSpot()
Definition: PVFitter.h:91
std::map< int, int > npvsmap_
Definition: PVFitter.h:131
tmp
align.sh
Definition: createJobs.py:716
std::string outputTxt_
Definition: PVFitter.h:142
bool IsFitPerBunchCrossing()
Definition: PVFitter.h:93
double getWidthXerr()
Definition: PVFitter.h:58