CMS 3D CMS Logo

List of all members | Public Member Functions | Protected Member Functions | Private Member Functions | Private Attributes
Vx3DHLTAnalyzer Class Reference

#include <Vx3DHLTAnalyzer.h>

Inheritance diagram for Vx3DHLTAnalyzer:
DQMEDAnalyzer edm::stream::EDAnalyzer< edm::RunSummaryCache< dqmDetails::NoCache >, edm::LuminosityBlockSummaryCache< dqmDetails::NoCache > > edm::stream::EDAnalyzerBase edm::EDConsumerBase

Public Member Functions

 Vx3DHLTAnalyzer (const edm::ParameterSet &)
 
 ~Vx3DHLTAnalyzer ()
 
- Public Member Functions inherited from DQMEDAnalyzer
virtual void beginRun (edm::Run const &, edm::EventSetup const &) final
 
virtual void beginStream (edm::StreamID id) final
 
virtual void dqmBeginRun (edm::Run const &, edm::EventSetup const &)
 
 DQMEDAnalyzer (void)
 
virtual void endLuminosityBlockSummary (edm::LuminosityBlock const &, edm::EventSetup const &, dqmDetails::NoCache *) const final
 
virtual void endRunSummary (edm::Run const &, edm::EventSetup const &, dqmDetails::NoCache *) const final
 
uint32_t streamId () const
 
- Public Member Functions inherited from edm::stream::EDAnalyzer< edm::RunSummaryCache< dqmDetails::NoCache >, edm::LuminosityBlockSummaryCache< dqmDetails::NoCache > >
 EDAnalyzer ()=default
 
- Public Member Functions inherited from edm::stream::EDAnalyzerBase
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
 EDAnalyzerBase ()
 
ModuleDescription const & moduleDescription () const
 
virtual ~EDAnalyzerBase ()
 
- Public Member Functions inherited from edm::EDConsumerBase
std::vector< ConsumesInfoconsumesInfo () 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
 
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::vector< ModuleDescription const * > &modules, ProductRegistry const &preg, std::map< std::string, ModuleDescription const * > const &labelsToDesc, std::string const &processName) const
 
EDConsumerBase const & operator= (EDConsumerBase const &)=delete
 
EDConsumerBaseoperator= (EDConsumerBase &&)=default
 
bool registeredToConsume (ProductResolverIndex, bool, BranchType) const
 
bool registeredToConsumeMany (TypeID const &, BranchType) const
 
void updateLookup (BranchType iBranchType, ProductResolverIndexHelper const &, bool iPrefetchMayGet)
 
virtual ~EDConsumerBase () noexcept(false)
 

Protected Member Functions

double Gauss3DFunc (const double *par)
 
- Protected Member Functions inherited from edm::EDConsumerBase
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > consumes (edm::InputTag const &tag)
 
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 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)
 

Private Member Functions

void analyze (const edm::Event &iEvent, const edm::EventSetup &iSetup) override
 
void beginLuminosityBlock (const edm::LuminosityBlock &lumiBlock, const edm::EventSetup &iSetup) override
 
void bookHistograms (DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
 
void endLuminosityBlock (const edm::LuminosityBlock &lumiBlock, const edm::EventSetup &iSetup) override
 
std::string formatTime (const time_t &t)
 
unsigned int HitCounter (const edm::Event &iEvent)
 
int MyFit (std::vector< double > *vals)
 
void printFitParams (const std::vector< double > &fitResults)
 
void reset (std::string ResetType)
 
void writeToFile (std::vector< double > *vals, edm::TimeValue_t BeginTimeOfFit, edm::TimeValue_t EndTimeOfFit, unsigned int BeginLumiOfFit, unsigned int EndLumiOfFit, int dataType)
 

Private Attributes

unsigned int beginLumiOfFit
 
edm::TimeValue_t beginTimeOfFit
 
bool considerVxCovariance
 
unsigned int counterVx
 
bool dataFromFit
 
bool debugMode
 
MonitorElementdxdzlumi
 
MonitorElementdydzlumi
 
unsigned int endLumiOfFit
 
edm::TimeValue_t endTimeOfFit
 
std::string fileName
 
MonitorElementfitResults
 
MonitorElementgoodVxCounter
 
MonitorElementhitCounter
 
bool internalDebug
 
unsigned int lastLumiOfFit
 
unsigned int lumiCounter
 
double maxLongLength
 
unsigned int maxLumiIntegration
 
double maxTransRadius
 
unsigned int minNentries
 
double minVxDoF
 
double minVxWgt
 
MonitorElementmXlumi
 
MonitorElementmYlumi
 
MonitorElementmZlumi
 
unsigned int nLumiFit
 
unsigned int nLumiXaxisRange
 
unsigned int nParams
 
unsigned int numberFits
 
unsigned int numberGoodFits
 
std::ofstream outputDebugFile
 
std::ofstream outputFile
 
double pi
 
edm::EDGetTokenT< SiPixelRecHitCollectionpixelHitCollection
 
MonitorElementreportSummary
 
MonitorElementreportSummaryMap
 
unsigned int runNumber
 
MonitorElementstatusCounter
 
MonitorElementsXlumi
 
MonitorElementsYlumi
 
MonitorElementsZlumi
 
unsigned int totalHits
 
edm::EDGetTokenT< reco::VertexCollectionvertexCollection
 
std::vector< VertexTypeVertices
 
MonitorElementVx_X
 
MonitorElementVx_X_Cum
 
MonitorElementVx_XY
 
MonitorElementVx_XY_Cum
 
MonitorElementVx_Y
 
MonitorElementVx_Y_Cum
 
MonitorElementVx_Z
 
MonitorElementVx_Z_Cum
 
MonitorElementVx_ZX
 
MonitorElementVx_ZX_Cum
 
MonitorElementVx_ZY
 
MonitorElementVx_ZY_Cum
 
double VxErrCorr
 
double xPos
 
double xRange
 
double xStep
 
double yPos
 
double yRange
 
double yStep
 
double zPos
 
double zRange
 
double zStep
 

Additional Inherited Members

- Public Types inherited from edm::stream::EDAnalyzer< edm::RunSummaryCache< dqmDetails::NoCache >, edm::LuminosityBlockSummaryCache< dqmDetails::NoCache > >
typedef CacheContexts< T... > CacheTypes
 
typedef CacheTypes::GlobalCache GlobalCache
 
typedef AbilityChecker< T... > HasAbility
 
typedef CacheTypes::LuminosityBlockCache LuminosityBlockCache
 
typedef LuminosityBlockContextT< LuminosityBlockCache, RunCache, GlobalCacheLuminosityBlockContext
 
typedef CacheTypes::LuminosityBlockSummaryCache LuminosityBlockSummaryCache
 
typedef CacheTypes::RunCache RunCache
 
typedef RunContextT< RunCache, GlobalCacheRunContext
 
typedef CacheTypes::RunSummaryCache RunSummaryCache
 
- Public Types inherited from edm::stream::EDAnalyzerBase
typedef EDAnalyzerAdaptorBase ModuleType
 
- Public Types inherited from edm::EDConsumerBase
typedef ProductLabels Labels
 
- Static Public Member Functions inherited from DQMEDAnalyzer
static std::shared_ptr< dqmDetails::NoCacheglobalBeginLuminosityBlockSummary (edm::LuminosityBlock const &, edm::EventSetup const &, LuminosityBlockContext const *)
 
static std::shared_ptr< dqmDetails::NoCacheglobalBeginRunSummary (edm::Run const &, edm::EventSetup const &, RunContext const *)
 
static void globalEndLuminosityBlockSummary (edm::LuminosityBlock const &, edm::EventSetup const &, LuminosityBlockContext const *, dqmDetails::NoCache *)
 
static void globalEndRunSummary (edm::Run const &, edm::EventSetup const &, RunContext const *, dqmDetails::NoCache *)
 
- Static Public Member Functions inherited from edm::stream::EDAnalyzerBase
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &descriptions)
 

Detailed Description

Definition at line 48 of file Vx3DHLTAnalyzer.h.

Constructor & Destructor Documentation

Vx3DHLTAnalyzer::Vx3DHLTAnalyzer ( const edm::ParameterSet iConfig)

Definition at line 27 of file Vx3DHLTAnalyzer.cc.

References MillePedeFileConverter_cfg::fileName, edm::ParameterSet::getParameter(), edm::ParameterSet::getUntrackedParameter(), pi, particleFlowSuperClusterECAL_cfi::vertexCollection, and HiClusterCompatibility_cfi::zStep.

28 {
29  debugMode = true;
30  nLumiFit = 2; // Number of integrated lumis to perform the fit
31  maxLumiIntegration = 15; // If failing fits, this is the maximum number of integrated lumis after which a reset is issued
32  nLumiXaxisRange = 5000; // Correspond to about 32h of data taking: 32h * 60min * 60s / 23s per lumi-block = 5009
33  dataFromFit = true; // The Beam Spot data can be either taken from the histograms or from the fit results
34  minNentries = 20; // Minimum number of good vertices to perform the fit
35  xRange = 0.8; // [cm]
36  xStep = 0.001; // [cm]
37  yRange = 0.8; // [cm]
38  yStep = 0.001; // [cm]
39  zRange = 30.; // [cm]
40  zStep = 0.04; // [cm]
41  VxErrCorr = 1.3;
42  minVxDoF = 10.; // Good-vertex selection cut
43  // For vertex fitter without track-weight: d.o.f. = 2*NTracks - 3
44  // For vertex fitter with track-weight: d.o.f. = sum_NTracks(2*track_weight) - 3
45  minVxWgt = 0.5; // Good-vertex selection cut
46  fileName = "BeamPixelResults.txt";
47 
48  vertexCollection = consumes<VertexCollection> (iConfig.getUntrackedParameter<InputTag>("vertexCollection", InputTag("pixelVertices")));
49  pixelHitCollection = consumes<SiPixelRecHitCollection>(iConfig.getUntrackedParameter<InputTag>("pixelHitCollection", InputTag("siPixelRecHits")));
50 
51  debugMode = iConfig.getParameter<bool>("debugMode");
52  nLumiFit = iConfig.getParameter<unsigned int>("nLumiFit");
53  maxLumiIntegration = iConfig.getParameter<unsigned int>("maxLumiIntegration");
54  nLumiXaxisRange = iConfig.getParameter<unsigned int>("nLumiXaxisRange");
55  dataFromFit = iConfig.getParameter<bool>("dataFromFit");
56  minNentries = iConfig.getParameter<unsigned int>("minNentries");
57  xRange = iConfig.getParameter<double>("xRange");
58  xStep = iConfig.getParameter<double>("xStep");
59  yRange = iConfig.getParameter<double>("yRange");
60  yStep = iConfig.getParameter<double>("yStep");
61  zRange = iConfig.getParameter<double>("zRange");
62  zStep = iConfig.getParameter<double>("zStep");
63  VxErrCorr = iConfig.getParameter<double>("VxErrCorr");
64  minVxDoF = iConfig.getParameter<double>("minVxDoF");
65  minVxWgt = iConfig.getParameter<double>("minVxWgt");
66  fileName = iConfig.getParameter<string>("fileName");
67 
68 
69  // ### Set internal variables ###
70  nParams = 9; // Number of free parameters in the fit
71  internalDebug = false;
72  considerVxCovariance = true; // Deconvolute vertex covariance matrix
73  pi = 3.141592653589793238;
74  // ##############################
75 }
T getParameter(std::string const &) const
T getUntrackedParameter(std::string const &, T const &) const
unsigned int maxLumiIntegration
edm::EDGetTokenT< reco::VertexCollection > vertexCollection
unsigned int nLumiXaxisRange
unsigned int minNentries
edm::EDGetTokenT< SiPixelRecHitCollection > pixelHitCollection
unsigned int nParams
std::string fileName
unsigned int nLumiFit
Vx3DHLTAnalyzer::~Vx3DHLTAnalyzer ( )

Definition at line 78 of file Vx3DHLTAnalyzer.cc.

References reset().

79 {
80  reset("scratch");
81 }
void reset(std::string ResetType)

Member Function Documentation

void Vx3DHLTAnalyzer::analyze ( const edm::Event iEvent,
const edm::EventSetup iSetup 
)
overrideprivate

Definition at line 84 of file Vx3DHLTAnalyzer.cc.

References gather_cfg::cout, VertexType::Covariance, DIM, MillePedeFileConverter_cfg::fileName, edm::Event::getByToken(), edm::Event::getLuminosityBlock(), mps_fire::i, edm::EventBase::id(), edm::isNotFinite(), MillePedeFileConverter_cfg::out, reset(), edm::EventID::run(), convertSQLiteXML::runNumber, tmp, particleFlowSuperClusterECAL_cfi::vertexCollection, fftjetpfpileupcleaner_cfi::Vertices, VertexType::x, VertexType::y, and VertexType::z.

85 {
86  Handle<VertexCollection> Vx3DCollection;
87  iEvent.getByToken(vertexCollection, Vx3DCollection);
88 
89  unsigned int i,j;
90  double det;
91  VertexType MyVertex;
92 
93  if (runNumber != iEvent.id().run())
94  {
95  reset("scratch");
96  runNumber = iEvent.id().run();
97 
98  if (debugMode == true)
99  {
100  stringstream debugFile;
101  string tmp(fileName);
102 
103  if (outputDebugFile.is_open() == true) outputDebugFile.close();
104  tmp.erase(strlen(fileName.c_str())-4,4);
105  debugFile << tmp.c_str() << "_Run" << iEvent.id().run() << ".txt";
106  outputDebugFile.open(debugFile.str().c_str(), ios::out);
107  outputDebugFile.close();
108  outputDebugFile.open(debugFile.str().c_str(), ios::app);
109  }
110 
111  beginLuminosityBlock(iEvent.getLuminosityBlock(),iSetup);
112  }
113  else if (beginTimeOfFit != 0)
114  {
115  totalHits += HitCounter(iEvent);
116 
117  if (internalDebug == true)
118  {
119  cout << "[Vx3DHLTAnalyzer]::\tI found " << totalHits << " pixel hits until now" << endl;
120  cout << "[Vx3DHLTAnalyzer]::\tIn this event there are " << Vx3DCollection->size() << " vertex cadidates" << endl;
121  }
122 
123  for (vector<Vertex>::const_iterator it3DVx = Vx3DCollection->begin(); it3DVx != Vx3DCollection->end(); it3DVx++)
124  {
125  if (internalDebug == true)
126  {
127  cout << "[Vx3DHLTAnalyzer]::\tVertex selections:" << endl;
128  cout << "[Vx3DHLTAnalyzer]::\tEvent ID = " << iEvent.id() << endl;
129  cout << "[Vx3DHLTAnalyzer]::\tVertex number = " << it3DVx - Vx3DCollection->begin() << endl;
130  cout << "[Vx3DHLTAnalyzer]::\tisValid = " << it3DVx->isValid() << endl;
131  cout << "[Vx3DHLTAnalyzer]::\tisFake = " << it3DVx->isFake() << endl;
132  cout << "[Vx3DHLTAnalyzer]::\tnodof = " << it3DVx->ndof() << endl;
133  cout << "[Vx3DHLTAnalyzer]::\ttracksSize = " << it3DVx->tracksSize() << endl;
134  }
135 
136  if ((it3DVx->isValid() == true) &&
137  (it3DVx->isFake() == false) &&
138  (it3DVx->ndof() >= minVxDoF) &&
139  (it3DVx->tracksSize() > 0) &&
140  ((it3DVx->ndof()+3.) / ((double)it3DVx->tracksSize()) >= 2.*minVxWgt))
141  {
142  for (i = 0; i < DIM; i++)
143  {
144  for (j = 0; j < DIM; j++)
145  {
146  MyVertex.Covariance[i][j] = it3DVx->covariance(i,j);
147  if (isNotFinite(MyVertex.Covariance[i][j]) == true) break;
148  }
149 
150  if (j != DIM) break;
151  }
152 
153  if (i == DIM)
154  det = std::fabs(MyVertex.Covariance[0][0])*(std::fabs(MyVertex.Covariance[1][1])*std::fabs(MyVertex.Covariance[2][2]) - MyVertex.Covariance[1][2]*MyVertex.Covariance[1][2]) -
155  MyVertex.Covariance[0][1]*(MyVertex.Covariance[0][1]*std::fabs(MyVertex.Covariance[2][2]) - MyVertex.Covariance[0][2]*MyVertex.Covariance[1][2]) +
156  MyVertex.Covariance[0][2]*(MyVertex.Covariance[0][1]*MyVertex.Covariance[1][2] - MyVertex.Covariance[0][2]*std::fabs(MyVertex.Covariance[1][1]));
157 
158  if ((i == DIM) && (det > 0.))
159  {
160  if (internalDebug == true) cout << "[Vx3DHLTAnalyzer]::\tVertex accepted !" << endl;
161 
162  MyVertex.x = it3DVx->x();
163  MyVertex.y = it3DVx->y();
164  MyVertex.z = it3DVx->z();
165  Vertices.push_back(MyVertex);
166 
167  Vx_X->Fill(it3DVx->x());
168  Vx_Y->Fill(it3DVx->y());
169  Vx_Z->Fill(it3DVx->z());
170 
171  Vx_ZX->Fill(it3DVx->z(), it3DVx->x());
172  Vx_ZY->Fill(it3DVx->z(), it3DVx->y());
173  Vx_XY->Fill(it3DVx->x(), it3DVx->y());
174 
175  Vx_X_Cum->Fill(it3DVx->x());
176  Vx_Y_Cum->Fill(it3DVx->y());
177  Vx_Z_Cum->Fill(it3DVx->z());
178 
179  Vx_ZX_Cum->Fill(it3DVx->z(), it3DVx->x());
180  Vx_ZY_Cum->Fill(it3DVx->z(), it3DVx->y());
181  Vx_XY_Cum->Fill(it3DVx->x(), it3DVx->y());
182  }
183  else if (internalDebug == true)
184  {
185  cout << "[Vx3DHLTAnalyzer]::\tVertex discarded !" << endl;
186 
187  for (i = 0; i < DIM; i++)
188  for (j = 0; j < DIM; j++)
189  cout << "(i,j) --> " << i << "," << j << " --> " << MyVertex.Covariance[i][j] << endl;
190  }
191  }
192  else if (internalDebug == true) cout << "[Vx3DHLTAnalyzer]::\tVertex discarded !" << endl;
193  }
194  }
195 }
RunNumber_t run() const
Definition: EventID.h:39
MonitorElement * Vx_ZX
unsigned int totalHits
MonitorElement * Vx_Y_Cum
edm::EDGetTokenT< reco::VertexCollection > vertexCollection
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:460
MonitorElement * Vx_X
edm::TimeValue_t beginTimeOfFit
unsigned int HitCounter(const edm::Event &iEvent)
void beginLuminosityBlock(const edm::LuminosityBlock &lumiBlock, const edm::EventSetup &iSetup) override
void Fill(long long x)
MonitorElement * Vx_XY
double Covariance[3][3]
bool isNotFinite(T x)
Definition: isFinite.h:10
MonitorElement * Vx_ZY
std::string fileName
MonitorElement * Vx_ZY_Cum
std::ofstream outputDebugFile
LuminosityBlock const & getLuminosityBlock() const
Definition: Event.h:86
MonitorElement * Vx_ZX_Cum
MonitorElement * Vx_Z
void reset(std::string ResetType)
MonitorElement * Vx_X_Cum
std::vector< VertexType > Vertices
#define DIM
MonitorElement * Vx_XY_Cum
std::vector< std::vector< double > > tmp
Definition: MVATrainer.cc:100
edm::EventID id() const
Definition: EventBase.h:60
unsigned int runNumber
MonitorElement * Vx_Z_Cum
MonitorElement * Vx_Y
void Vx3DHLTAnalyzer::beginLuminosityBlock ( const edm::LuminosityBlock lumiBlock,
const edm::EventSetup iSetup 
)
overrideprivate

Definition at line 892 of file Vx3DHLTAnalyzer.cc.

References edm::LuminosityBlockBase::beginTime(), edm::LuminosityBlockBase::luminosityBlock(), reset(), and edm::Timestamp::value().

893 {
894  // @@@ If statement to avoid problems with non-sequential lumisections @@@
895  if ((lumiCounter == 0) && (lumiBlock.luminosityBlock() > lastLumiOfFit))
896  {
897  beginTimeOfFit = lumiBlock.beginTime().value();
898  beginLumiOfFit = lumiBlock.luminosityBlock();
899  lumiCounter++;
900  }
901  else if ((lumiCounter != 0) && (lumiBlock.luminosityBlock() >= (beginLumiOfFit+lumiCounter))) lumiCounter++;
902  else reset("scratch");
903 }
unsigned int lumiCounter
unsigned int beginLumiOfFit
edm::TimeValue_t beginTimeOfFit
Timestamp const & beginTime() const
LuminosityBlockNumber_t luminosityBlock() const
void reset(std::string ResetType)
unsigned int lastLumiOfFit
TimeValue_t value() const
Definition: Timestamp.h:56
void Vx3DHLTAnalyzer::bookHistograms ( DQMStore::IBooker ibooker,
edm::Run const &  iRun,
edm::EventSetup const &   
)
overrideprivatevirtual

Implements DQMEDAnalyzer.

Definition at line 1186 of file Vx3DHLTAnalyzer.cc.

References DQMStore::IBooker::book1D(), DQMStore::IBooker::book2D(), DQMStore::IBooker::bookFloat(), DEFINE_FWK_MODULE, MonitorElement::Fill(), MonitorElement::getTH1(), reset(), MonitorElement::setAxisTitle(), DQMStore::IBooker::setCurrentFolder(), and HiClusterCompatibility_cfi::zStep.

1187 {
1188  ibooker.setCurrentFolder("BeamPixel");
1189 
1190  Vx_X = ibooker.book1D("F - vertex x", "Primary Vertex X Distribution", int(rint(xRange/xStep)), -xRange/2., xRange/2.);
1191  Vx_Y = ibooker.book1D("F - vertex y", "Primary Vertex Y Distribution", int(rint(yRange/yStep)), -yRange/2., yRange/2.);
1192  Vx_Z = ibooker.book1D("F - vertex z", "Primary Vertex Z Distribution", int(rint(zRange/zStep)), -zRange/2., zRange/2.);
1193  Vx_X->setAxisTitle("Primary Vertices X [cm]",1);
1194  Vx_X->setAxisTitle("Entries [#]",2);
1195  Vx_Y->setAxisTitle("Primary Vertices Y [cm]",1);
1196  Vx_Y->setAxisTitle("Entries [#]",2);
1197  Vx_Z->setAxisTitle("Primary Vertices Z [cm]",1);
1198  Vx_Z->setAxisTitle("Entries [#]",2);
1199 
1200  Vx_X_Cum = ibooker.book1D("H - vertex x cum", "Primary Vertex X Distribution (Cumulative)", int(rint(xRange/xStep)), -xRange/2., xRange/2.);
1201  Vx_Y_Cum = ibooker.book1D("H - vertex y cum", "Primary Vertex Y Distribution (Cumulative)", int(rint(yRange/yStep)), -yRange/2., yRange/2.);
1202  Vx_Z_Cum = ibooker.book1D("H - vertex z cum", "Primary Vertex Z Distribution (Cumulative)", int(rint(zRange/zStep)), -zRange/2., zRange/2.);
1203  Vx_X_Cum->setAxisTitle("Primary Vertices X [cm]",1);
1204  Vx_X_Cum->setAxisTitle("Entries [#]",2);
1205  Vx_Y_Cum->setAxisTitle("Primary Vertices Y [cm]",1);
1206  Vx_Y_Cum->setAxisTitle("Entries [#]",2);
1207  Vx_Z_Cum->setAxisTitle("Primary Vertices Z [cm]",1);
1208  Vx_Z_Cum->setAxisTitle("Entries [#]",2);
1209 
1210  mXlumi = ibooker.book1D("B - muX vs lumi", "#mu_{x} vs. Lumisection", nLumiXaxisRange, 0.5, ((double)nLumiXaxisRange)+0.5);
1211  mYlumi = ibooker.book1D("B - muY vs lumi", "#mu_{y} vs. Lumisection", nLumiXaxisRange, 0.5, ((double)nLumiXaxisRange)+0.5);
1212  mZlumi = ibooker.book1D("B - muZ vs lumi", "#mu_{z} vs. Lumisection", nLumiXaxisRange, 0.5, ((double)nLumiXaxisRange)+0.5);
1213  mXlumi->setAxisTitle("Lumisection [#]",1);
1214  mXlumi->setAxisTitle("#mu_{x} [cm]",2);
1215  mXlumi->getTH1()->SetOption("E1");
1216  mYlumi->setAxisTitle("Lumisection [#]",1);
1217  mYlumi->setAxisTitle("#mu_{y} [cm]",2);
1218  mYlumi->getTH1()->SetOption("E1");
1219  mZlumi->setAxisTitle("Lumisection [#]",1);
1220  mZlumi->setAxisTitle("#mu_{z} [cm]",2);
1221  mZlumi->getTH1()->SetOption("E1");
1222 
1223  sXlumi = ibooker.book1D("C - sigmaX vs lumi", "#sigma_{x} vs. Lumisection", nLumiXaxisRange, 0.5, ((double)nLumiXaxisRange)+0.5);
1224  sYlumi = ibooker.book1D("C - sigmaY vs lumi", "#sigma_{y} vs. Lumisection", nLumiXaxisRange, 0.5, ((double)nLumiXaxisRange)+0.5);
1225  sZlumi = ibooker.book1D("C - sigmaZ vs lumi", "#sigma_{z} vs. Lumisection", nLumiXaxisRange, 0.5, ((double)nLumiXaxisRange)+0.5);
1226  sXlumi->setAxisTitle("Lumisection [#]",1);
1227  sXlumi->setAxisTitle("#sigma_{x} [cm]",2);
1228  sXlumi->getTH1()->SetOption("E1");
1229  sYlumi->setAxisTitle("Lumisection [#]",1);
1230  sYlumi->setAxisTitle("#sigma_{y} [cm]",2);
1231  sYlumi->getTH1()->SetOption("E1");
1232  sZlumi->setAxisTitle("Lumisection [#]",1);
1233  sZlumi->setAxisTitle("#sigma_{z} [cm]",2);
1234  sZlumi->getTH1()->SetOption("E1");
1235 
1236  dxdzlumi = ibooker.book1D("D - dxdz vs lumi", "dX/dZ vs. Lumisection", nLumiXaxisRange, 0.5, ((double)nLumiXaxisRange)+0.5);
1237  dydzlumi = ibooker.book1D("D - dydz vs lumi", "dY/dZ vs. Lumisection", nLumiXaxisRange, 0.5, ((double)nLumiXaxisRange)+0.5);
1238  dxdzlumi->setAxisTitle("Lumisection [#]",1);
1239  dxdzlumi->setAxisTitle("dX/dZ [rad]",2);
1240  dxdzlumi->getTH1()->SetOption("E1");
1241  dydzlumi->setAxisTitle("Lumisection [#]",1);
1242  dydzlumi->setAxisTitle("dY/dZ [rad]",2);
1243  dydzlumi->getTH1()->SetOption("E1");
1244 
1245  Vx_ZX = ibooker.book2D("E - vertex zx", "Primary Vertex ZX Distribution", int(rint(zRange/zStep)), -zRange/2., zRange/2., int(rint(xRange/xStep)), -xRange/2., xRange/2.);
1246  Vx_ZY = ibooker.book2D("E - vertex zy", "Primary Vertex ZY Distribution", int(rint(zRange/zStep)), -zRange/2., zRange/2., int(rint(yRange/yStep)), -yRange/2., yRange/2.);
1247  Vx_XY = ibooker.book2D("E - vertex xy", "Primary Vertex XY Distribution", int(rint(xRange/xStep)), -xRange/2., xRange/2., int(rint(yRange/yStep)), -yRange/2., yRange/2.);
1248  Vx_ZX->setAxisTitle("Primary Vertices Z [cm]",1);
1249  Vx_ZX->setAxisTitle("Primary Vertices X [cm]",2);
1250  Vx_ZX->setAxisTitle("Entries [#]",3);
1251  Vx_ZY->setAxisTitle("Primary Vertices Z [cm]",1);
1252  Vx_ZY->setAxisTitle("Primary Vertices Y [cm]",2);
1253  Vx_ZY->setAxisTitle("Entries [#]",3);
1254  Vx_XY->setAxisTitle("Primary Vertices X [cm]",1);
1255  Vx_XY->setAxisTitle("Primary Vertices Y [cm]",2);
1256  Vx_XY->setAxisTitle("Entries [#]",3);
1257 
1258  Vx_ZX_Cum = ibooker.book2D("G - vertex zx cum", "Primary Vertex ZX Distribution (Cumulative)", int(rint(zRange/zStep)), -zRange/2., zRange/2., int(rint(xRange/xStep)), -xRange/2., xRange/2.);
1259  Vx_ZY_Cum = ibooker.book2D("G - vertex zy cum", "Primary Vertex ZY Distribution (Cumulative)", int(rint(zRange/zStep)), -zRange/2., zRange/2., int(rint(yRange/yStep)), -yRange/2., yRange/2.);
1260  Vx_XY_Cum = ibooker.book2D("G - vertex xy cum", "Primary Vertex XY Distribution (Cumulative)", int(rint(xRange/xStep)), -xRange/2., xRange/2., int(rint(yRange/yStep)), -yRange/2., yRange/2.);
1261  Vx_ZX_Cum->setAxisTitle("Primary Vertices Z [cm]",1);
1262  Vx_ZX_Cum->setAxisTitle("Primary Vertices X [cm]",2);
1263  Vx_ZX_Cum->setAxisTitle("Entries [#]",3);
1264  Vx_ZY_Cum->setAxisTitle("Primary Vertices Z [cm]",1);
1265  Vx_ZY_Cum->setAxisTitle("Primary Vertices Y [cm]",2);
1266  Vx_ZY_Cum->setAxisTitle("Entries [#]",3);
1267  Vx_XY_Cum->setAxisTitle("Primary Vertices X [cm]",1);
1268  Vx_XY_Cum->setAxisTitle("Primary Vertices Y [cm]",2);
1269  Vx_XY_Cum->setAxisTitle("Entries [#]",3);
1270 
1271  hitCounter = ibooker.book1D("J - pixelHits vs lumi", "# Pixel-Hits vs. Lumisection", nLumiXaxisRange, 0.5, ((double)nLumiXaxisRange)+0.5);
1272  hitCounter->setAxisTitle("Lumisection [#]",1);
1273  hitCounter->setAxisTitle("Pixel-Hits [#]",2);
1274  hitCounter->getTH1()->SetOption("E1");
1275 
1276  goodVxCounter = ibooker.book1D("I - good vertices vs lumi", "# Good vertices vs. Lumisection", nLumiXaxisRange, 0.5, ((double)nLumiXaxisRange)+0.5);
1277  goodVxCounter->setAxisTitle("Lumisection [#]",1);
1278  goodVxCounter->setAxisTitle("Good vertices [#]",2);
1279  goodVxCounter->getTH1()->SetOption("E1");
1280 
1281  statusCounter = ibooker.book1D("K - status vs lumi", "App. Status vs. Lumisection", nLumiXaxisRange, 0.5, ((double)nLumiXaxisRange)+0.5);
1282  statusCounter->setAxisTitle("Lumisection [#]",1);
1283  statusCounter->getTH1()->SetOption("E1");
1284  statusCounter->getTH1()->GetYaxis()->Set(11,-5.5,5.5);
1285  statusCounter->getTH1()->GetYaxis()->SetBinLabel(1, "Max Lumi.");
1286  statusCounter->getTH1()->GetYaxis()->SetBinLabel(2, "Neg. det.");
1287  statusCounter->getTH1()->GetYaxis()->SetBinLabel(3, "Infinite err.");
1288  statusCounter->getTH1()->GetYaxis()->SetBinLabel(4, "No vtx.");
1289  statusCounter->getTH1()->GetYaxis()->SetBinLabel(5, "Infinite EDM");
1290  statusCounter->getTH1()->GetYaxis()->SetBinLabel(6, "OK");
1291  statusCounter->getTH1()->GetYaxis()->SetBinLabel(7, "MINUIT stat.");
1292  statusCounter->getTH1()->GetYaxis()->SetBinLabel(8, "MINUIT stat.");
1293  statusCounter->getTH1()->GetYaxis()->SetBinLabel(9, "MINUIT stat.");
1294  statusCounter->getTH1()->GetYaxis()->SetBinLabel(10, "MINUIT stat.");
1295  statusCounter->getTH1()->GetYaxis()->SetBinLabel(11, "MINUIT stat.");
1296 
1297  fitResults = ibooker.book2D("A - fit results","Results of Beam Spot Fit", 2, 0., 2., 9, 0., 9.);
1298  fitResults->setAxisTitle("Ongoing: bootstrapping", 1);
1299  fitResults->setBinLabel(9, "X[cm]", 2);
1300  fitResults->setBinLabel(8, "Y[cm]", 2);
1301  fitResults->setBinLabel(7, "Z[cm]", 2);
1302  fitResults->setBinLabel(6, "#sigma_{X}[cm]", 2);
1303  fitResults->setBinLabel(5, "#sigma_{Y}[cm]", 2);
1304  fitResults->setBinLabel(4, "#sigma_{Z}[cm]", 2);
1305  fitResults->setBinLabel(3, "#frac{dX}{dZ}[rad]", 2);
1306  fitResults->setBinLabel(2, "#frac{dY}{dZ}[rad]", 2);
1307  fitResults->setBinLabel(1, "Vtx[#]", 2);
1308  fitResults->setBinLabel(1, "Value", 1);
1309  fitResults->setBinLabel(2, "Error (stat)", 1);
1310  fitResults->getTH1()->SetOption("text");
1311 
1312 
1313  ibooker.setCurrentFolder("BeamPixel/EventInfo");
1314 
1315  reportSummary = ibooker.bookFloat("reportSummary");
1316  reportSummary->Fill(-1);
1317  reportSummaryMap = ibooker.book2D("reportSummaryMap","Pixel-Vertices Beam Spot: % Good Fits", 1, 0., 1., 1, 0., 1.);
1318  reportSummaryMap->getTH1()->SetBinContent(1, 1, -1);
1319 
1320  ibooker.setCurrentFolder("BeamPixel/EventInfo/reportSummaryContents");
1321 
1322  // Convention for reportSummary and reportSummaryMap:
1323  // - -1% at the moment of creation of the histogram (i.e. white histogram)
1324  // - n% numberGoodFits / numberFits
1325 
1326 
1327  reset("scratch"); // Initialize histograms after creation
1328 }
MonitorElement * statusCounter
MonitorElement * dxdzlumi
MonitorElement * Vx_ZX
MonitorElement * Vx_Y_Cum
unsigned int nLumiXaxisRange
MonitorElement * Vx_X
void setBinLabel(int bin, const std::string &label, int axis=1)
set bin label for x, y or z axis (axis=1, 2, 3 respectively)
MonitorElement * mYlumi
MonitorElement * sYlumi
MonitorElement * reportSummaryMap
void Fill(long long x)
MonitorElement * Vx_XY
MonitorElement * sZlumi
MonitorElement * fitResults
MonitorElement * Vx_ZY
MonitorElement * reportSummary
MonitorElement * Vx_ZY_Cum
MonitorElement * goodVxCounter
MonitorElement * book1D(Args &&...args)
Definition: DQMStore.h:115
MonitorElement * dydzlumi
TH1 * getTH1(void) const
MonitorElement * Vx_ZX_Cum
MonitorElement * Vx_Z
MonitorElement * mXlumi
void reset(std::string ResetType)
MonitorElement * Vx_X_Cum
MonitorElement * mZlumi
MonitorElement * sXlumi
void setCurrentFolder(const std::string &fullpath)
Definition: DQMStore.cc:277
MonitorElement * book2D(Args &&...args)
Definition: DQMStore.h:133
MonitorElement * Vx_XY_Cum
MonitorElement * Vx_Z_Cum
MonitorElement * bookFloat(Args &&...args)
Definition: DQMStore.h:109
MonitorElement * hitCounter
void setAxisTitle(const std::string &title, int axis=1)
set x-, y- or z-axis title (axis=1, 2, 3 respectively)
MonitorElement * Vx_Y
void Vx3DHLTAnalyzer::endLuminosityBlock ( const edm::LuminosityBlock lumiBlock,
const edm::EventSetup iSetup 
)
overrideprivate

Definition at line 906 of file Vx3DHLTAnalyzer.cc.

References gather_cfg::cout, MillePedeFileConverter_cfg::e, edm::LuminosityBlockBase::endTime(), edm::service::formatTime(), mps_fire::i, edm::LuminosityBlockBase::luminosityBlock(), funct::pow(), reset(), convertSQLiteXML::runNumber, mathSSE::sqrt(), create_public_pileup_plots::vals, and edm::Timestamp::value().

907 {
908  stringstream histTitle;
909  int goodData;
910 
911  if ((nLumiFit != 0) && (lumiCounter%nLumiFit == 0) && (beginTimeOfFit != 0) && (runNumber != 0))
912  {
913  endTimeOfFit = lumiBlock.endTime().value();
914  endLumiOfFit = lumiBlock.luminosityBlock();
916  vector<double> vals;
917 
918  hitCounter->getTH1()->SetBinContent(lastLumiOfFit, (double)totalHits);
919  hitCounter->getTH1()->SetBinError(lastLumiOfFit, (totalHits != 0 ? 1. : 0.)); // It's not sqrt(n) because we want to weight all entries in the same way for the fit
920 
921  if (dataFromFit == true)
922  {
923  vector<double> fitResults;
924 
925  fitResults.push_back(Vx_X->getTH1()->GetRMS()*Vx_X->getTH1()->GetRMS());
926  fitResults.push_back(Vx_Y->getTH1()->GetRMS()*Vx_Y->getTH1()->GetRMS());
927  fitResults.push_back(Vx_Z->getTH1()->GetRMS()*Vx_Z->getTH1()->GetRMS());
928  fitResults.push_back(0.0);
929  fitResults.push_back(0.0);
930  fitResults.push_back(0.0);
931  fitResults.push_back(Vx_X->getTH1()->GetMean());
932  fitResults.push_back(Vx_Y->getTH1()->GetMean());
933  fitResults.push_back(Vx_Z->getTH1()->GetMean());
934  for (unsigned int i = 0; i < nParams; i++) fitResults.push_back(0.0);
935 
936  if (internalDebug == true)
937  {
938  cout << "[Vx3DHLTAnalyzer]::\t@@@ Beam Spot parameters - prefit @@@" << endl;
939 
940  printFitParams(fitResults);
941 
942  cout << "Runnumber " << runNumber << endl;
943  cout << "BeginTimeOfFit " << formatTime(beginTimeOfFit >> 32) << " " << (beginTimeOfFit >> 32) << endl;
944  cout << "EndTimeOfFit " << formatTime(endTimeOfFit >> 32) << " " << (endTimeOfFit >> 32) << endl;
945  cout << "LumiRange " << beginLumiOfFit << " - " << endLumiOfFit << endl;
946  }
947 
948  goodData = MyFit(&fitResults);
949 
950  if (internalDebug == true)
951  {
952  cout << "[Vx3DHLTAnalyzer]::\t@@@ Beam Spot parameters - postfit @@@" << endl;
953 
954  printFitParams(fitResults);
955 
956  cout << "goodData --> " << goodData << endl;
957  cout << "Used vertices --> " << counterVx << endl;
958  }
959 
960  if (goodData == 0)
961  {
962  vals.push_back(fitResults[6]);
963  vals.push_back(fitResults[7]);
964  vals.push_back(fitResults[8]);
965  vals.push_back(std::sqrt(std::fabs(fitResults[0])));
966  vals.push_back(std::sqrt(std::fabs(fitResults[1])));
967  vals.push_back(std::sqrt(std::fabs(fitResults[2])));
968  vals.push_back(fitResults[5]);
969  vals.push_back(fitResults[4]);
970 
971  vals.push_back(std::pow(fitResults[6+nParams],2.));
972  vals.push_back(std::pow(fitResults[7+nParams],2.));
973  vals.push_back(std::pow(fitResults[8+nParams],2.));
974  vals.push_back(std::pow(std::fabs(fitResults[0+nParams]) / (2.*std::sqrt(std::fabs(fitResults[0]))),2.));
975  vals.push_back(std::pow(std::fabs(fitResults[1+nParams]) / (2.*std::sqrt(std::fabs(fitResults[1]))),2.));
976  vals.push_back(std::pow(std::fabs(fitResults[2+nParams]) / (2.*std::sqrt(std::fabs(fitResults[2]))),2.));
977  vals.push_back(std::pow(fitResults[5+nParams],2.));
978  vals.push_back(std::pow(fitResults[4+nParams],2.));
979  }
980  else for (unsigned int i = 0; i < (nParams-1)*2; i++) vals.push_back(0.0);
981 
982  fitResults.clear();
983  }
984  else
985  {
986  counterVx = Vx_X->getTH1F()->GetEntries();
987 
988  if (Vx_X->getTH1F()->GetEntries() >= minNentries)
989  {
990  goodData = 0;
991 
992  vals.push_back(Vx_X->getTH1F()->GetMean());
993  vals.push_back(Vx_Y->getTH1F()->GetMean());
994  vals.push_back(Vx_Z->getTH1F()->GetMean());
995  vals.push_back(Vx_X->getTH1F()->GetRMS());
996  vals.push_back(Vx_Y->getTH1F()->GetRMS());
997  vals.push_back(Vx_Z->getTH1F()->GetRMS());
998  vals.push_back(0.0);
999  vals.push_back(0.0);
1000 
1001  vals.push_back(std::pow(Vx_X->getTH1F()->GetMeanError(),2.));
1002  vals.push_back(std::pow(Vx_Y->getTH1F()->GetMeanError(),2.));
1003  vals.push_back(std::pow(Vx_Z->getTH1F()->GetMeanError(),2.));
1004  vals.push_back(std::pow(Vx_X->getTH1F()->GetRMSError(),2.));
1005  vals.push_back(std::pow(Vx_Y->getTH1F()->GetRMSError(),2.));
1006  vals.push_back(std::pow(Vx_Z->getTH1F()->GetRMSError(),2.));
1007  vals.push_back(0.0);
1008  vals.push_back(0.0);
1009  }
1010  else
1011  {
1012  goodData = -2;
1013  for (unsigned int i = 0; i < (nParams-1)*2; i++) vals.push_back(0.0);
1014  }
1015  }
1016 
1017  // vals[0] = X0
1018  // vals[1] = Y0
1019  // vals[2] = Z0
1020  // vals[3] = sigmaX0
1021  // vals[4] = sigmaY0
1022  // vals[5] = sigmaZ0
1023  // vals[6] = dxdz
1024  // vals[7] = dydz
1025 
1026  // vals[8] = err^2 X0
1027  // vals[9] = err^2 Y0
1028  // vals[10] = err^2 Z0
1029  // vals[11] = err^2 sigmaX0
1030  // vals[12] = err^2 sigmaY0
1031  // vals[13] = err^2 sigmaZ0
1032  // vals[14] = err^2 dxdz
1033  // vals[15] = err^2 dydz
1034 
1035  numberFits++;
1037  if (internalDebug == true) cout << "[Vx3DHLTAnalyzer]::\tUsed vertices: " << counterVx << endl;
1038 
1039  statusCounter->getTH1()->SetBinContent(lastLumiOfFit, (double)goodData);
1040  statusCounter->getTH1()->SetBinError(lastLumiOfFit, 1e-3);
1041 
1042  if (goodData == 0)
1043  {
1044  numberGoodFits++;
1045 
1046  histTitle << "Ongoing: fitted lumis " << beginLumiOfFit << " - " << endLumiOfFit;
1047  reset("whole");
1048  }
1049  else
1050  {
1051  if (goodData == -2) histTitle << "Ongoing: not enough evts (" << lumiCounter << " - " << maxLumiIntegration << " lumis)";
1052  else histTitle << "Ongoing: temporary problems (" << lumiCounter << " - " << maxLumiIntegration << " lumis)";
1053 
1054  if (lumiCounter >= maxLumiIntegration)
1055  {
1056  statusCounter->getTH1()->SetBinContent(lastLumiOfFit, -5);
1057  statusCounter->getTH1()->SetBinError(lastLumiOfFit, 1e-3);
1058  reset("whole");
1059  }
1060  else reset("hitCounter");
1061  }
1062 
1063  reportSummary->Fill((numberFits != 0 ? ((double)numberGoodFits) / ((double)numberFits) : -1));
1064  reportSummaryMap->getTH1()->SetBinContent(1, 1, (numberFits != 0 ? ((double)numberGoodFits) / ((double)numberFits) : -1));
1065 
1066  fitResults->setAxisTitle(histTitle.str().c_str(), 1);
1067 
1068  fitResults->setBinContent(1, 9, vals[0]);
1069  fitResults->setBinContent(1, 8, vals[1]);
1070  fitResults->setBinContent(1, 7, vals[2]);
1071  fitResults->setBinContent(1, 6, vals[3]);
1072  fitResults->setBinContent(1, 5, vals[4]);
1073  fitResults->setBinContent(1, 4, vals[5]);
1074  fitResults->setBinContent(1, 3, vals[6]);
1075  fitResults->setBinContent(1, 2, vals[7]);
1076  fitResults->setBinContent(1, 1, counterVx);
1077 
1078  fitResults->setBinContent(2, 9, std::sqrt(vals[8]));
1079  fitResults->setBinContent(2, 8, std::sqrt(vals[9]));
1080  fitResults->setBinContent(2, 7, std::sqrt(vals[10]));
1081  fitResults->setBinContent(2, 6, std::sqrt(vals[11]));
1082  fitResults->setBinContent(2, 5, std::sqrt(vals[12]));
1083  fitResults->setBinContent(2, 4, std::sqrt(vals[13]));
1084  fitResults->setBinContent(2, 3, std::sqrt(vals[14]));
1085  fitResults->setBinContent(2, 2, std::sqrt(vals[15]));
1086  fitResults->setBinContent(2, 1, std::sqrt(counterVx));
1087 
1088  // Linear fit to the historical plots
1089  TF1* myLinFit = new TF1("myLinFit", "[0] + [1]*x", mXlumi->getTH1()->GetXaxis()->GetXmin(), mXlumi->getTH1()->GetXaxis()->GetXmax());
1090  myLinFit->SetLineColor(2);
1091  myLinFit->SetLineWidth(2);
1092  myLinFit->SetParName(0,"Inter.");
1093  myLinFit->SetParName(1,"Slope");
1094 
1095  mXlumi->getTH1()->SetBinContent(lastLumiOfFit, vals[0]);
1096  mXlumi->getTH1()->SetBinError(lastLumiOfFit, std::sqrt(vals[8]));
1097  myLinFit->SetParameter(0, mXlumi->getTH1()->GetMean(2));
1098  myLinFit->SetParameter(1, 0.0);
1099  mXlumi->getTH1()->Fit(myLinFit,"QR");
1100 
1101  mYlumi->getTH1()->SetBinContent(lastLumiOfFit, vals[1]);
1102  mYlumi->getTH1()->SetBinError(lastLumiOfFit, std::sqrt(vals[9]));
1103  myLinFit->SetParameter(0, mYlumi->getTH1()->GetMean(2));
1104  myLinFit->SetParameter(1, 0.0);
1105  mYlumi->getTH1()->Fit(myLinFit,"QR");
1106 
1107  mZlumi->getTH1()->SetBinContent(lastLumiOfFit, vals[2]);
1108  mZlumi->getTH1()->SetBinError(lastLumiOfFit, std::sqrt(vals[10]));
1109  myLinFit->SetParameter(0, mZlumi->getTH1()->GetMean(2));
1110  myLinFit->SetParameter(1, 0.0);
1111  mZlumi->getTH1()->Fit(myLinFit,"QR");
1112 
1113  sXlumi->getTH1()->SetBinContent(lastLumiOfFit, vals[3]);
1114  sXlumi->getTH1()->SetBinError(lastLumiOfFit, std::sqrt(vals[11]));
1115  myLinFit->SetParameter(0, sXlumi->getTH1()->GetMean(2));
1116  myLinFit->SetParameter(1, 0.0);
1117  sXlumi->getTH1()->Fit(myLinFit,"QR");
1118 
1119  sYlumi->getTH1()->SetBinContent(lastLumiOfFit, vals[4]);
1120  sYlumi->getTH1()->SetBinError(lastLumiOfFit, std::sqrt(vals[12]));
1121  myLinFit->SetParameter(0, sYlumi->getTH1()->GetMean(2));
1122  myLinFit->SetParameter(1, 0.0);
1123  sYlumi->getTH1()->Fit(myLinFit,"QR");
1124 
1125  sZlumi->getTH1()->SetBinContent(lastLumiOfFit, vals[5]);
1126  sZlumi->getTH1()->SetBinError(lastLumiOfFit, std::sqrt(vals[13]));
1127  myLinFit->SetParameter(0, sZlumi->getTH1()->GetMean(2));
1128  myLinFit->SetParameter(1, 0.0);
1129  sZlumi->getTH1()->Fit(myLinFit,"QR");
1130 
1131  dxdzlumi->getTH1()->SetBinContent(lastLumiOfFit, vals[6]);
1132  dxdzlumi->getTH1()->SetBinError(lastLumiOfFit, std::sqrt(vals[14]));
1133  myLinFit->SetParameter(0, dxdzlumi->getTH1()->GetMean(2));
1134  myLinFit->SetParameter(1, 0.0);
1135  dxdzlumi->getTH1()->Fit(myLinFit,"QR");
1136 
1137  dydzlumi->getTH1()->SetBinContent(lastLumiOfFit, vals[7]);
1138  dydzlumi->getTH1()->SetBinError(lastLumiOfFit, std::sqrt(vals[15]));
1139  myLinFit->SetParameter(0, dydzlumi->getTH1()->GetMean(2));
1140  myLinFit->SetParameter(1, 0.0);
1141  dydzlumi->getTH1()->Fit(myLinFit,"QR");
1142 
1143  myLinFit->SetParameter(0, hitCounter->getTH1()->GetMean(2));
1144  myLinFit->SetParameter(1, 0.0);
1145  hitCounter->getTH1()->Fit(myLinFit,"QR");
1146 
1147  goodVxCounter->getTH1()->SetBinContent(lastLumiOfFit, (double)counterVx);
1148  goodVxCounter->getTH1()->SetBinError(lastLumiOfFit, (counterVx != 0 ? 1. : 0.)); // It's not sqrt(n) because we want to weight all entries in the same way for the fit
1149  myLinFit->SetParameter(0, goodVxCounter->getTH1()->GetMean(2));
1150  myLinFit->SetParameter(1, 0.0);
1151  goodVxCounter->getTH1()->Fit(myLinFit,"QR");
1152 
1153  delete myLinFit;
1154  vals.clear();
1155  }
1156  else if ((nLumiFit != 0) && (lumiCounter%nLumiFit != 0) && (beginTimeOfFit != 0) && (runNumber != 0))
1157  {
1158  histTitle << "Ongoing: accumulating evts (" << lumiCounter%nLumiFit << " - " << nLumiFit << " in " << lumiCounter << " - " << maxLumiIntegration << " lumis)";
1159  fitResults->setAxisTitle(histTitle.str().c_str(), 1);
1160  if ((debugMode == true) && (outputDebugFile.is_open() == true))
1161  {
1162  outputDebugFile << "\n" << "Runnumber " << runNumber << endl;
1163  outputDebugFile << "BeginTimeOfFit " << formatTime(beginTimeOfFit >> 32) << " " << (beginTimeOfFit >> 32) << endl;
1164  outputDebugFile << "BeginLumiRange " << beginLumiOfFit << endl;
1165  outputDebugFile << histTitle.str().c_str() << "\n" << endl;
1166  }
1167  }
1168  else if ((nLumiFit == 0) || (beginTimeOfFit == 0) || (runNumber == 0))
1169  {
1170  histTitle << "Ongoing: no ongoing fits";
1171  fitResults->setAxisTitle(histTitle.str().c_str(), 1);
1172  if ((debugMode == true) && (outputDebugFile.is_open() == true)) outputDebugFile << histTitle.str().c_str() << "\n" << endl;
1173 
1174  endLumiOfFit = lumiBlock.luminosityBlock();
1175 
1176  hitCounter->getTH1()->SetBinContent(endLumiOfFit, (double)totalHits);
1177  hitCounter->getTH1()->SetBinError(endLumiOfFit, std::sqrt((double)totalHits));
1178 
1179  reset("whole");
1180  }
1181 
1182  if (internalDebug == true) cout << "[Vx3DHLTAnalyzer]::\tHistogram title: " << histTitle.str() << endl;
1183 }
unsigned int lumiCounter
MonitorElement * statusCounter
MonitorElement * dxdzlumi
unsigned int totalHits
unsigned int maxLumiIntegration
unsigned int numberFits
unsigned int beginLumiOfFit
int MyFit(std::vector< double > *vals)
unsigned int minNentries
MonitorElement * Vx_X
MonitorElement * mYlumi
edm::TimeValue_t beginTimeOfFit
edm::TimeValue_t endTimeOfFit
MonitorElement * sYlumi
MonitorElement * reportSummaryMap
void writeToFile(std::vector< double > *vals, edm::TimeValue_t BeginTimeOfFit, edm::TimeValue_t EndTimeOfFit, unsigned int BeginLumiOfFit, unsigned int EndLumiOfFit, int dataType)
void Fill(long long x)
unsigned int nParams
MonitorElement * sZlumi
LuminosityBlockNumber_t luminosityBlock() const
MonitorElement * fitResults
unsigned int counterVx
std::string formatTime(const time_t &t)
unsigned int endLumiOfFit
unsigned int numberGoodFits
T sqrt(T t)
Definition: SSEVec.h:18
MonitorElement * reportSummary
Timestamp const & endTime() const
MonitorElement * goodVxCounter
std::ofstream outputDebugFile
MonitorElement * dydzlumi
TH1 * getTH1(void) const
MonitorElement * Vx_Z
MonitorElement * mXlumi
void reset(std::string ResetType)
MonitorElement * mZlumi
MonitorElement * sXlumi
unsigned int lastLumiOfFit
TH1F * getTH1F(void) const
void printFitParams(const std::vector< double > &fitResults)
unsigned int runNumber
unsigned int nLumiFit
MonitorElement * hitCounter
TimeValue_t value() const
Definition: Timestamp.h:56
Power< A, B >::type pow(const A &a, const B &b)
Definition: Power.h:40
MonitorElement * Vx_Y
string Vx3DHLTAnalyzer::formatTime ( const time_t &  t)
private

Definition at line 212 of file Vx3DHLTAnalyzer.cc.

213 {
214  char ts[25];
215  strftime(ts, sizeof(ts), "%Y.%m.%d %H:%M:%S %Z", gmtime(&t));
216 
217  string ts_string(ts);
218 
219  return ts_string;
220 }
double Vx3DHLTAnalyzer::Gauss3DFunc ( const double *  par)
protected

Definition at line 223 of file Vx3DHLTAnalyzer.cc.

References DIM, mps_fire::i, cmsBatch::log, pi, mathSSE::sqrt(), fftjetpfpileupcleaner_cfi::Vertices, and x().

Referenced by MyFit().

224 {
225  double K[DIM][DIM]; // Covariance Matrix
226  double M[DIM][DIM]; // K^-1
227  double det;
228  double sumlog = 0.;
229 
230 // par[0] = K(0,0) --> Var[X]
231 // par[1] = K(1,1) --> Var[Y]
232 // par[2] = K(2,2) --> Var[Z]
233 // par[3] = K(0,1) = K(1,0) --> Cov[X,Y]
234 // par[4] = K(1,2) = K(2,1) --> Cov[Y,Z] --> dy/dz
235 // par[5] = K(0,2) = K(2,0) --> Cov[X,Z] --> dx/dz
236 // par[6] = mean x
237 // par[7] = mean y
238 // par[8] = mean z
239 
240  counterVx = 0;
241  for (unsigned int i = 0; i < Vertices.size(); i++)
242  {
244  (std::fabs(Vertices[i].z-zPos) <= maxLongLength))
245  {
246  if (considerVxCovariance == true)
247  {
248  K[0][0] = std::fabs(par[0]) + VxErrCorr*VxErrCorr * std::fabs(Vertices[i].Covariance[0][0]);
249  K[1][1] = std::fabs(par[1]) + VxErrCorr*VxErrCorr * std::fabs(Vertices[i].Covariance[1][1]);
250  K[2][2] = std::fabs(par[2]) + VxErrCorr*VxErrCorr * std::fabs(Vertices[i].Covariance[2][2]);
251  K[0][1] = K[1][0] = par[3] + VxErrCorr*VxErrCorr * Vertices[i].Covariance[0][1];
252  K[1][2] = K[2][1] = par[4]*(std::fabs(par[2])-std::fabs(par[1])) - par[5]*par[3] + VxErrCorr*VxErrCorr * Vertices[i].Covariance[1][2];
253  K[0][2] = K[2][0] = par[5]*(std::fabs(par[2])-std::fabs(par[0])) - par[4]*par[3] + VxErrCorr*VxErrCorr * Vertices[i].Covariance[0][2];
254  }
255  else
256  {
257  K[0][0] = std::fabs(par[0]);
258  K[1][1] = std::fabs(par[1]);
259  K[2][2] = std::fabs(par[2]);
260  K[0][1] = K[1][0] = par[3];
261  K[1][2] = K[2][1] = par[4]*(std::fabs(par[2])-std::fabs(par[1])) - par[5]*par[3];
262  K[0][2] = K[2][0] = par[5]*(std::fabs(par[2])-std::fabs(par[0])) - par[4]*par[3];
263  }
264 
265  det = K[0][0]*(K[1][1]*K[2][2] - K[1][2]*K[1][2]) -
266  K[0][1]*(K[0][1]*K[2][2] - K[0][2]*K[1][2]) +
267  K[0][2]*(K[0][1]*K[1][2] - K[0][2]*K[1][1]);
268 
269  M[0][0] = (K[1][1]*K[2][2] - K[1][2]*K[1][2]) / det;
270  M[1][1] = (K[0][0]*K[2][2] - K[0][2]*K[0][2]) / det;
271  M[2][2] = (K[0][0]*K[1][1] - K[0][1]*K[0][1]) / det;
272  M[0][1] = M[1][0] = (K[0][2]*K[1][2] - K[0][1]*K[2][2]) / det;
273  M[1][2] = M[2][1] = (K[0][2]*K[0][1] - K[1][2]*K[0][0]) / det;
274  M[0][2] = M[2][0] = (K[0][1]*K[1][2] - K[0][2]*K[1][1]) / det;
275 
276  sumlog += double(DIM)*std::log(2.*pi) + std::log(std::fabs(det)) +
277  (M[0][0]*(Vertices[i].x-par[6])*(Vertices[i].x-par[6]) +
278  M[1][1]*(Vertices[i].y-par[7])*(Vertices[i].y-par[7]) +
279  M[2][2]*(Vertices[i].z-par[8])*(Vertices[i].z-par[8]) +
280  2.*M[0][1]*(Vertices[i].x-par[6])*(Vertices[i].y-par[7]) +
281  2.*M[1][2]*(Vertices[i].y-par[7])*(Vertices[i].z-par[8]) +
282  2.*M[0][2]*(Vertices[i].x-par[6])*(Vertices[i].z-par[8]));
283 
284  counterVx++;
285  }
286  }
287 
288  return sumlog;
289 }
unsigned int counterVx
T sqrt(T t)
Definition: SSEVec.h:18
std::vector< VertexType > Vertices
#define DIM
unsigned int Vx3DHLTAnalyzer::HitCounter ( const edm::Event iEvent)
private

Definition at line 198 of file Vx3DHLTAnalyzer.cc.

References edmNew::DetSetVector< T >::begin(), counter, edmNew::DetSetVector< T >::end(), and edm::Event::getByToken().

199 {
200  Handle<SiPixelRecHitCollection> rechitspixel;
201  iEvent.getByToken(pixelHitCollection, rechitspixel);
202 
203  unsigned int counter = 0;
204 
205  for (SiPixelRecHitCollection::const_iterator j = rechitspixel->begin(); j != rechitspixel->end(); j++)
206  for (edmNew::DetSet<SiPixelRecHit>::const_iterator h = j->begin(); h != j->end(); h++) counter += h->cluster()->size();
207 
208  return counter;
209 }
boost::transform_iterator< IterHelp, const_IdIter > const_iterator
const_iterator end(bool update=false) const
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:460
edm::EDGetTokenT< SiPixelRecHitCollection > pixelHitCollection
data_type const * const_iterator
Definition: DetSetNew.h:30
static std::atomic< unsigned int > counter
const_iterator begin(bool update=false) const
int Vx3DHLTAnalyzer::MyFit ( std::vector< double > *  vals)
private

Definition at line 292 of file Vx3DHLTAnalyzer.cc.

References gather_cfg::cout, MillePedeFileConverter_cfg::e, Gauss3DFunc(), mps_fire::i, edm::isNotFinite(), hiDetachedQuadStep_cff::nSigmaZ, NULL, and mathSSE::sqrt().

293 {
294  // ############################################
295  // # RETURN CODE: #
296  // # >0 == NO OK - fit status (MINUIT manual) #
297  // # 0 == OK #
298  // # -1 == NO OK - not finite edm #
299  // # -2 == NO OK - not enough "minNentries" #
300  // # -3 == NO OK - not finite errors #
301  // # -4 == NO OK - negative determinant #
302  // # -5 == NO OK - maxLumiIntegration reached #
303  // ############################################
304 
305  if ((vals != NULL) && (vals->size() == nParams*2))
306  {
307  double nSigmaXY = 10.;
308  double nSigmaZ = 10.;
309  double parDistanceXY = 1e-3; // Unit: [cm]
310  double parDistanceZ = 1e-2; // Unit: [cm]
311  double parDistanceddZ = 1e-3; // Unit: [rad]
312  double parDistanceCxy = 1e-5; // Unit: [cm^2]
313  double bestEdm;
314 
315  const unsigned int trials = 4;
316  double largerDist[trials] = {0.1, 5., 10., 100.};
317 
318  double covxz,covyz,det;
319  double deltaMean;
320  int bestMovementX = 1;
321  int bestMovementY = 1;
322  int bestMovementZ = 1;
323  int goodData;
324 
325  double edm;
326 
327  vector<double>::const_iterator it = vals->begin();
328 
329  ROOT::Math::Minimizer* Gauss3D = ROOT::Math::Factory::CreateMinimizer("Minuit2","Migrad");
330  Gauss3D->SetErrorDef(1.0);
331  if (internalDebug == true) Gauss3D->SetPrintLevel(3);
332  else Gauss3D->SetPrintLevel(0);
333 
334  ROOT::Math::Functor _Gauss3DFunc(this, &Vx3DHLTAnalyzer::Gauss3DFunc, nParams);
335  Gauss3D->SetFunction(_Gauss3DFunc);
336 
337  if (internalDebug == true) cout << "[Vx3DHLTAnalyzer]::\t@@@ START FITTING @@@" << endl;
338 
339  // @@@ Fit at X-deltaMean | X | X+deltaMean @@@
340  bestEdm = 1.;
341  for (int i = 0; i < 3; i++)
342  {
343  deltaMean = (double(i)-1.)*std::sqrt(*(it+0));
344  if (internalDebug == true) cout << "[Vx3DHLTAnalyzer]::\tdeltaMean --> " << deltaMean << endl;
345 
346  Gauss3D->Clear();
347 
348  Gauss3D->SetVariable(0,"var x ", *(it+0), parDistanceXY * parDistanceXY);
349  Gauss3D->SetVariable(1,"var y ", *(it+1), parDistanceXY * parDistanceXY);
350  Gauss3D->SetVariable(2,"var z ", *(it+2), parDistanceZ * parDistanceZ);
351  Gauss3D->SetVariable(3,"cov xy", *(it+3), parDistanceCxy);
352  Gauss3D->SetVariable(4,"dydz ", *(it+4), parDistanceddZ);
353  Gauss3D->SetVariable(5,"dxdz ", *(it+5), parDistanceddZ);
354  Gauss3D->SetVariable(6,"mean x", *(it+6)+deltaMean, parDistanceXY);
355  Gauss3D->SetVariable(7,"mean y", *(it+7), parDistanceXY);
356  Gauss3D->SetVariable(8,"mean z", *(it+8), parDistanceZ);
357 
358  // Set the central positions of the centroid for vertex rejection
359  xPos = Gauss3D->X()[6];
360  yPos = Gauss3D->X()[7];
361  zPos = Gauss3D->X()[8];
362 
363  // Set dimensions of the centroid for vertex rejection
364  maxTransRadius = nSigmaXY * std::sqrt(std::fabs(Gauss3D->X()[0]) + std::fabs(Gauss3D->X()[1])) / 2.;
365  maxLongLength = nSigmaZ * std::sqrt(std::fabs(Gauss3D->X()[2]));
366 
367  Gauss3D->Minimize();
368  goodData = Gauss3D->Status();
369  edm = Gauss3D->Edm();
370 
371  if (counterVx < minNentries) goodData = -2;
372  else if (isNotFinite(edm) == true) { goodData = -1; if (internalDebug == true) cout << "[Vx3DHLTAnalyzer]::\tNot finite edm !" << endl; }
373  else for (unsigned int j = 0; j < nParams; j++)
374  if (isNotFinite(Gauss3D->Errors()[j]) == true)
375  {
376  goodData = -3;
377  if (internalDebug == true) cout << "[Vx3DHLTAnalyzer]::\tNot finite errors !" << endl;
378  break;
379  }
380  if (goodData == 0)
381  {
382  covyz = Gauss3D->X()[4]*(std::fabs(Gauss3D->X()[2])-std::fabs(Gauss3D->X()[1])) - Gauss3D->X()[5]*Gauss3D->X()[3];
383  covxz = Gauss3D->X()[5]*(std::fabs(Gauss3D->X()[2])-std::fabs(Gauss3D->X()[0])) - Gauss3D->X()[4]*Gauss3D->X()[3];
384 
385  det = std::fabs(Gauss3D->X()[0]) * (std::fabs(Gauss3D->X()[1])*std::fabs(Gauss3D->X()[2]) - covyz*covyz) -
386  Gauss3D->X()[3] * (Gauss3D->X()[3]*std::fabs(Gauss3D->X()[2]) - covxz*covyz) +
387  covxz * (Gauss3D->X()[3]*covyz - covxz*std::fabs(Gauss3D->X()[1]));
388  if (det < 0.) { goodData = -4; if (internalDebug == true) cout << "[Vx3DHLTAnalyzer]::\tNegative determinant !" << endl; }
389  }
390 
391  if ((goodData == 0) && (std::fabs(edm) < bestEdm)) { bestEdm = edm; bestMovementX = i; }
392  }
393  if (internalDebug == true) cout << "[Vx3DHLTAnalyzer]::\tFound bestMovementX --> " << bestMovementX << endl;
394 
395  // @@@ Fit at Y-deltaMean | Y | Y+deltaMean @@@
396  bestEdm = 1.;
397  for (int i = 0; i < 3; i++)
398  {
399  deltaMean = (double(i)-1.)*std::sqrt(*(it+1));
400  if (internalDebug == true)
401  {
402  cout << "[Vx3DHLTAnalyzer]::\tdeltaMean --> " << deltaMean << endl;
403  cout << "[Vx3DHLTAnalyzer]::\tdeltaMean X --> " << (double(bestMovementX)-1.)*std::sqrt(*(it+0)) << endl;
404  }
405 
406  Gauss3D->Clear();
407 
408  Gauss3D->SetVariable(0,"var x ", *(it+0), parDistanceXY * parDistanceXY);
409  Gauss3D->SetVariable(1,"var y ", *(it+1), parDistanceXY * parDistanceXY);
410  Gauss3D->SetVariable(2,"var z ", *(it+2), parDistanceZ * parDistanceZ);
411  Gauss3D->SetVariable(3,"cov xy", *(it+3), parDistanceCxy);
412  Gauss3D->SetVariable(4,"dydz ", *(it+4), parDistanceddZ);
413  Gauss3D->SetVariable(5,"dxdz ", *(it+5), parDistanceddZ);
414  Gauss3D->SetVariable(6,"mean x", *(it+6)+(double(bestMovementX)-1.)*std::sqrt(*(it+0)), parDistanceXY);
415  Gauss3D->SetVariable(7,"mean y", *(it+7)+deltaMean, parDistanceXY);
416  Gauss3D->SetVariable(8,"mean z", *(it+8), parDistanceZ);
417 
418  // Set the central positions of the centroid for vertex rejection
419  xPos = Gauss3D->X()[6];
420  yPos = Gauss3D->X()[7];
421  zPos = Gauss3D->X()[8];
422 
423  // Set dimensions of the centroid for vertex rejection
424  maxTransRadius = nSigmaXY * std::sqrt(std::fabs(Gauss3D->X()[0]) + std::fabs(Gauss3D->X()[1])) / 2.;
425  maxLongLength = nSigmaZ * std::sqrt(std::fabs(Gauss3D->X()[2]));
426 
427  Gauss3D->Minimize();
428  goodData = Gauss3D->Status();
429  edm = Gauss3D->Edm();
430 
431  if (counterVx < minNentries) goodData = -2;
432  else if (isNotFinite(edm) == true) { goodData = -1; if (internalDebug == true) cout << "[Vx3DHLTAnalyzer]::\tNot finite edm !" << endl; }
433  else for (unsigned int j = 0; j < nParams; j++)
434  if (isNotFinite(Gauss3D->Errors()[j]) == true)
435  {
436  goodData = -3;
437  if (internalDebug == true) cout << "[Vx3DHLTAnalyzer]::\tNot finite errors !" << endl;
438  break;
439  }
440  if (goodData == 0)
441  {
442  covyz = Gauss3D->X()[4]*(std::fabs(Gauss3D->X()[2])-std::fabs(Gauss3D->X()[1])) - Gauss3D->X()[5]*Gauss3D->X()[3];
443  covxz = Gauss3D->X()[5]*(std::fabs(Gauss3D->X()[2])-std::fabs(Gauss3D->X()[0])) - Gauss3D->X()[4]*Gauss3D->X()[3];
444 
445  det = std::fabs(Gauss3D->X()[0]) * (std::fabs(Gauss3D->X()[1])*std::fabs(Gauss3D->X()[2]) - covyz*covyz) -
446  Gauss3D->X()[3] * (Gauss3D->X()[3]*std::fabs(Gauss3D->X()[2]) - covxz*covyz) +
447  covxz * (Gauss3D->X()[3]*covyz - covxz*std::fabs(Gauss3D->X()[1]));
448  if (det < 0.) { goodData = -4; if (internalDebug == true) cout << "[Vx3DHLTAnalyzer]::\tNegative determinant !" << endl; }
449  }
450 
451  if ((goodData == 0) && (std::fabs(edm) < bestEdm)) { bestEdm = edm; bestMovementY = i; }
452  }
453  if (internalDebug == true) cout << "[Vx3DHLTAnalyzer]::\tFound bestMovementY --> " << bestMovementY << endl;
454 
455  // @@@ Fit at Z-deltaMean | Z | Z+deltaMean @@@
456  bestEdm = 1.;
457  for (int i = 0; i < 3; i++)
458  {
459  deltaMean = (double(i)-1.)*std::sqrt(*(it+2));
460  if (internalDebug == true)
461  {
462  cout << "[Vx3DHLTAnalyzer]::\tdeltaMean --> " << deltaMean << endl;
463  cout << "[Vx3DHLTAnalyzer]::\tdeltaMean X --> " << (double(bestMovementX)-1.)*std::sqrt(*(it+0)) << endl;
464  cout << "[Vx3DHLTAnalyzer]::\tdeltaMean Y --> " << (double(bestMovementY)-1.)*std::sqrt(*(it+1)) << endl;
465  }
466 
467  Gauss3D->Clear();
468 
469  Gauss3D->SetVariable(0,"var x ", *(it+0), parDistanceXY * parDistanceXY);
470  Gauss3D->SetVariable(1,"var y ", *(it+1), parDistanceXY * parDistanceXY);
471  Gauss3D->SetVariable(2,"var z ", *(it+2), parDistanceZ * parDistanceZ);
472  Gauss3D->SetVariable(3,"cov xy", *(it+3), parDistanceCxy);
473  Gauss3D->SetVariable(4,"dydz ", *(it+4), parDistanceddZ);
474  Gauss3D->SetVariable(5,"dxdz ", *(it+5), parDistanceddZ);
475  Gauss3D->SetVariable(6,"mean x", *(it+6)+(double(bestMovementX)-1.)*std::sqrt(*(it+0)), parDistanceXY);
476  Gauss3D->SetVariable(7,"mean y", *(it+7)+(double(bestMovementY)-1.)*std::sqrt(*(it+1)), parDistanceXY);
477  Gauss3D->SetVariable(8,"mean z", *(it+8)+deltaMean, parDistanceZ);
478 
479  // Set the central positions of the centroid for vertex rejection
480  xPos = Gauss3D->X()[6];
481  yPos = Gauss3D->X()[7];
482  zPos = Gauss3D->X()[8];
483 
484  // Set dimensions of the centroid for vertex rejection
485  maxTransRadius = nSigmaXY * std::sqrt(std::fabs(Gauss3D->X()[0]) + std::fabs(Gauss3D->X()[1])) / 2.;
486  maxLongLength = nSigmaZ * std::sqrt(std::fabs(Gauss3D->X()[2]));
487 
488  Gauss3D->Minimize();
489  goodData = Gauss3D->Status();
490  edm = Gauss3D->Edm();
491 
492  if (counterVx < minNentries) goodData = -2;
493  else if (isNotFinite(edm) == true) { goodData = -1; if (internalDebug == true) cout << "[Vx3DHLTAnalyzer]::\tNot finite edm !" << endl; }
494  else for (unsigned int j = 0; j < nParams; j++)
495  if (isNotFinite(Gauss3D->Errors()[j]) == true)
496  {
497  goodData = -3;
498  if (internalDebug == true) cout << "[Vx3DHLTAnalyzer]::\tNot finite errors !" << endl;
499  break;
500  }
501  if (goodData == 0)
502  {
503  covyz = Gauss3D->X()[4]*(std::fabs(Gauss3D->X()[2])-std::fabs(Gauss3D->X()[1])) - Gauss3D->X()[5]*Gauss3D->X()[3];
504  covxz = Gauss3D->X()[5]*(std::fabs(Gauss3D->X()[2])-std::fabs(Gauss3D->X()[0])) - Gauss3D->X()[4]*Gauss3D->X()[3];
505 
506  det = std::fabs(Gauss3D->X()[0]) * (std::fabs(Gauss3D->X()[1])*std::fabs(Gauss3D->X()[2]) - covyz*covyz) -
507  Gauss3D->X()[3] * (Gauss3D->X()[3]*std::fabs(Gauss3D->X()[2]) - covxz*covyz) +
508  covxz * (Gauss3D->X()[3]*covyz - covxz*std::fabs(Gauss3D->X()[1]));
509  if (det < 0.) { goodData = -4; if (internalDebug == true) cout << "[Vx3DHLTAnalyzer]::\tNegative determinant !" << endl; }
510  }
511 
512  if ((goodData == 0) && (std::fabs(edm) < bestEdm)) { bestEdm = edm; bestMovementZ = i; }
513  }
514  if (internalDebug == true) cout << "[Vx3DHLTAnalyzer]::\tFound bestMovementZ --> " << bestMovementZ << endl;
515 
516  Gauss3D->Clear();
517 
518  // @@@ FINAL FIT @@@
519  Gauss3D->SetVariable(0,"var x ", *(it+0), parDistanceXY * parDistanceXY);
520  Gauss3D->SetVariable(1,"var y ", *(it+1), parDistanceXY * parDistanceXY);
521  Gauss3D->SetVariable(2,"var z ", *(it+2), parDistanceZ * parDistanceZ);
522  Gauss3D->SetVariable(3,"cov xy", *(it+3), parDistanceCxy);
523  Gauss3D->SetVariable(4,"dydz ", *(it+4), parDistanceddZ);
524  Gauss3D->SetVariable(5,"dxdz ", *(it+5), parDistanceddZ);
525  Gauss3D->SetVariable(6,"mean x", *(it+6)+(double(bestMovementX)-1.)*std::sqrt(*(it+0)), parDistanceXY);
526  Gauss3D->SetVariable(7,"mean y", *(it+7)+(double(bestMovementY)-1.)*std::sqrt(*(it+1)), parDistanceXY);
527  Gauss3D->SetVariable(8,"mean z", *(it+8)+(double(bestMovementZ)-1.)*std::sqrt(*(it+2)), parDistanceZ);
528 
529  // Set the central positions of the centroid for vertex rejection
530  xPos = Gauss3D->X()[6];
531  yPos = Gauss3D->X()[7];
532  zPos = Gauss3D->X()[8];
533 
534  // Set dimensions of the centroid for vertex rejection
535  maxTransRadius = nSigmaXY * std::sqrt(std::fabs(Gauss3D->X()[0]) + std::fabs(Gauss3D->X()[1])) / 2.;
536  maxLongLength = nSigmaZ * std::sqrt(std::fabs(Gauss3D->X()[2]));
537 
538  Gauss3D->Minimize();
539  goodData = Gauss3D->Status();
540  edm = Gauss3D->Edm();
541 
542  if (counterVx < minNentries) goodData = -2;
543  else if (isNotFinite(edm) == true) { goodData = -1; if (internalDebug == true) cout << "[Vx3DHLTAnalyzer]::\tNot finite edm !" << endl; }
544  else for (unsigned int j = 0; j < nParams; j++)
545  if (isNotFinite(Gauss3D->Errors()[j]) == true)
546  {
547  goodData = -3;
548  if (internalDebug == true) cout << "[Vx3DHLTAnalyzer]::\tNot finite errors !" << endl;
549  break;
550  }
551  if (goodData == 0)
552  {
553  covyz = Gauss3D->X()[4]*(std::fabs(Gauss3D->X()[2])-std::fabs(Gauss3D->X()[1])) - Gauss3D->X()[5]*Gauss3D->X()[3];
554  covxz = Gauss3D->X()[5]*(std::fabs(Gauss3D->X()[2])-std::fabs(Gauss3D->X()[0])) - Gauss3D->X()[4]*Gauss3D->X()[3];
555 
556  det = std::fabs(Gauss3D->X()[0]) * (std::fabs(Gauss3D->X()[1])*std::fabs(Gauss3D->X()[2]) - covyz*covyz) -
557  Gauss3D->X()[3] * (Gauss3D->X()[3]*std::fabs(Gauss3D->X()[2]) - covxz*covyz) +
558  covxz * (Gauss3D->X()[3]*covyz - covxz*std::fabs(Gauss3D->X()[1]));
559  if (det < 0.) { goodData = -4; if (internalDebug == true) cout << "[Vx3DHLTAnalyzer]::\tNegative determinant !" << endl; }
560  }
561 
562  // @@@ FIT WITH DIFFERENT PARAMETER DISTANCES @@@
563  for (unsigned int i = 0; i < trials; i++)
564  {
565  if ((goodData != 0) && (goodData != -2))
566  {
567  Gauss3D->Clear();
568 
569  if (internalDebug == true) cout << "[Vx3DHLTAnalyzer]::\tFIT WITH DIFFERENT PARAMETER DISTANCES - STEP " << i+1 << endl;
570 
571  Gauss3D->SetVariable(0,"var x ", *(it+0), parDistanceXY * parDistanceXY * largerDist[i]);
572  Gauss3D->SetVariable(1,"var y ", *(it+1), parDistanceXY * parDistanceXY * largerDist[i]);
573  Gauss3D->SetVariable(2,"var z ", *(it+2), parDistanceZ * parDistanceZ * largerDist[i]);
574  Gauss3D->SetVariable(3,"cov xy", *(it+3), parDistanceCxy * largerDist[i]);
575  Gauss3D->SetVariable(4,"dydz ", *(it+4), parDistanceddZ * largerDist[i]);
576  Gauss3D->SetVariable(5,"dxdz ", *(it+5), parDistanceddZ * largerDist[i]);
577  Gauss3D->SetVariable(6,"mean x", *(it+6)+(double(bestMovementX)-1.)*std::sqrt(*(it+0)), parDistanceXY * largerDist[i]);
578  Gauss3D->SetVariable(7,"mean y", *(it+7)+(double(bestMovementY)-1.)*std::sqrt(*(it+1)), parDistanceXY * largerDist[i]);
579  Gauss3D->SetVariable(8,"mean z", *(it+8)+(double(bestMovementZ)-1.)*std::sqrt(*(it+2)), parDistanceZ * largerDist[i]);
580 
581  // Set the central positions of the centroid for vertex rejection
582  xPos = Gauss3D->X()[6];
583  yPos = Gauss3D->X()[7];
584  zPos = Gauss3D->X()[8];
585 
586  // Set dimensions of the centroid for vertex rejection
587  maxTransRadius = nSigmaXY * std::sqrt(std::fabs(Gauss3D->X()[0]) + std::fabs(Gauss3D->X()[1])) / 2.;
588  maxLongLength = nSigmaZ * std::sqrt(std::fabs(Gauss3D->X()[2]));
589 
590  Gauss3D->Minimize();
591  goodData = Gauss3D->Status();
592  edm = Gauss3D->Edm();
593 
594  if (counterVx < minNentries) goodData = -2;
595  else if (isNotFinite(edm) == true) { goodData = -1; if (internalDebug == true) cout << "[Vx3DHLTAnalyzer]::\tNot finite edm !" << endl; }
596  else for (unsigned int j = 0; j < nParams; j++)
597  if (isNotFinite(Gauss3D->Errors()[j]) == true)
598  {
599  goodData = -3;
600  if (internalDebug == true) cout << "[Vx3DHLTAnalyzer]::\tNot finite errors !" << endl;
601  break;
602  }
603  if (goodData == 0)
604  {
605  covyz = Gauss3D->X()[4]*(std::fabs(Gauss3D->X()[2])-std::fabs(Gauss3D->X()[1])) - Gauss3D->X()[5]*Gauss3D->X()[3];
606  covxz = Gauss3D->X()[5]*(std::fabs(Gauss3D->X()[2])-std::fabs(Gauss3D->X()[0])) - Gauss3D->X()[4]*Gauss3D->X()[3];
607 
608  det = std::fabs(Gauss3D->X()[0]) * (std::fabs(Gauss3D->X()[1])*std::fabs(Gauss3D->X()[2]) - covyz*covyz) -
609  Gauss3D->X()[3] * (Gauss3D->X()[3]*std::fabs(Gauss3D->X()[2]) - covxz*covyz) +
610  covxz * (Gauss3D->X()[3]*covyz - covxz*std::fabs(Gauss3D->X()[1]));
611  if (det < 0.) { goodData = -4; if (internalDebug == true) cout << "[Vx3DHLTAnalyzer]::\tNegative determinant !" << endl; }
612  }
613  } else break;
614  }
615 
616  if (goodData == 0)
617  for (unsigned int i = 0; i < nParams; i++)
618  {
619  vals->operator[](i) = Gauss3D->X()[i];
620  vals->operator[](i+nParams) = Gauss3D->Errors()[i];
621  }
622 
623  delete Gauss3D;
624  return goodData;
625  }
626 
627  return -1;
628 }
unsigned int minNentries
#define NULL
Definition: scimark2.h:8
double Gauss3DFunc(const double *par)
unsigned int nParams
bool isNotFinite(T x)
Definition: isFinite.h:10
unsigned int counterVx
T sqrt(T t)
Definition: SSEVec.h:18
HLT enums.
void Vx3DHLTAnalyzer::printFitParams ( const std::vector< double > &  fitResults)
private

Definition at line 878 of file Vx3DHLTAnalyzer.cc.

References gather_cfg::cout.

879 {
880  cout << "var x --> " << fitResults[0] << " +/- " << fitResults[0+nParams] << endl;
881  cout << "var y --> " << fitResults[1] << " +/- " << fitResults[1+nParams] << endl;
882  cout << "var z --> " << fitResults[2] << " +/- " << fitResults[2+nParams] << endl;
883  cout << "cov xy --> " << fitResults[3] << " +/- " << fitResults[3+nParams] << endl;
884  cout << "dydz --> " << fitResults[4] << " +/- " << fitResults[4+nParams] << endl;
885  cout << "dxdz --> " << fitResults[5] << " +/- " << fitResults[5+nParams] << endl;
886  cout << "mean x --> " << fitResults[6] << " +/- " << fitResults[6+nParams] << endl;
887  cout << "mean y --> " << fitResults[7] << " +/- " << fitResults[7+nParams] << endl;
888  cout << "mean z --> " << fitResults[8] << " +/- " << fitResults[8+nParams] << endl;
889 }
unsigned int nParams
MonitorElement * fitResults
void Vx3DHLTAnalyzer::reset ( std::string  ResetType)
private

Definition at line 631 of file Vx3DHLTAnalyzer.cc.

References gather_cfg::cout, edm::service::formatTime(), convertSQLiteXML::runNumber, and fftjetpfpileupcleaner_cfi::Vertices.

632 {
633  if ((debugMode == true) && (outputDebugFile.is_open() == true))
634  {
635  outputDebugFile << "Runnumber " << runNumber << endl;
636  outputDebugFile << "BeginTimeOfFit " << formatTime(beginTimeOfFit >> 32) << " " << (beginTimeOfFit >> 32) << endl;
637  outputDebugFile << "BeginLumiRange " << beginLumiOfFit << endl;
638  outputDebugFile << "EndTimeOfFit " << formatTime(endTimeOfFit >> 32) << " " << (endTimeOfFit >> 32) << endl;
639  outputDebugFile << "EndLumiRange " << endLumiOfFit << endl;
640  outputDebugFile << "LumiCounter " << lumiCounter << endl;
641  outputDebugFile << "LastLumiOfFit " << lastLumiOfFit << endl;
642  }
643 
644 
645  if (ResetType.compare("scratch") == 0)
646  {
647  runNumber = 0;
648  numberGoodFits = 0;
649  numberFits = 0;
650  lastLumiOfFit = 0;
651 
652  Vx_X->Reset();
653  Vx_Y->Reset();
654  Vx_Z->Reset();
655 
656  Vx_ZX->Reset();
657  Vx_ZY->Reset();
658  Vx_XY->Reset();
659 
660  Vx_X_Cum->Reset();
661  Vx_Y_Cum->Reset();
662  Vx_Z_Cum->Reset();
663 
664  Vx_ZX_Cum->Reset();
665  Vx_ZY_Cum->Reset();
666  Vx_XY_Cum->Reset();
667 
668  mXlumi->Reset();
669  mYlumi->Reset();
670  mZlumi->Reset();
671 
672  sXlumi->Reset();
673  sYlumi->Reset();
674  sZlumi->Reset();
675 
676  dxdzlumi->Reset();
677  dydzlumi->Reset();
678 
679  hitCounter->Reset();
680  goodVxCounter->Reset();
681  statusCounter->Reset();
682  fitResults->Reset();
683 
684  reportSummary->Fill(-1);
685  reportSummaryMap->getTH1()->SetBinContent(1, 1, -1);
686 
687  Vertices.clear();
688 
689  lumiCounter = 0;
690  totalHits = 0;
691  beginTimeOfFit = 0;
692  endTimeOfFit = 0;
693  beginLumiOfFit = 0;
694  endLumiOfFit = 0;
695 
696  if (internalDebug == true) cout << "[Vx3DHLTAnalyzer]::\tReset issued: scratch" << endl;
697  if ((debugMode == true) && (outputDebugFile.is_open() == true)) outputDebugFile << "Reset -scratch- issued\n" << endl;
698  }
699  else if (ResetType.compare("whole") == 0)
700  {
701  Vx_X->Reset();
702  Vx_Y->Reset();
703  Vx_Z->Reset();
704 
705  Vx_ZX->Reset();
706  Vx_ZY->Reset();
707  Vx_XY->Reset();
708 
709  Vertices.clear();
710 
711  lumiCounter = 0;
712  totalHits = 0;
713  beginTimeOfFit = 0;
714  endTimeOfFit = 0;
715  beginLumiOfFit = 0;
716  endLumiOfFit = 0;
717 
718  if (internalDebug == true) cout << "[Vx3DHLTAnalyzer]::\tReset issued: whole" << endl;
719  if ((debugMode == true) && (outputDebugFile.is_open() == true)) outputDebugFile << "Reset -whole- issued\n" << endl;
720  }
721  else if (ResetType.compare("hitCounter") == 0)
722  {
723  totalHits = 0;
724 
725  if (internalDebug == true) cout << "[Vx3DHLTAnalyzer]::\tReset issued: hitCounter" << endl;
726  if ((debugMode == true) && (outputDebugFile.is_open() == true)) outputDebugFile << "Reset -hitCounter- issued\n" << endl;
727  }
728 }
unsigned int lumiCounter
MonitorElement * statusCounter
MonitorElement * dxdzlumi
MonitorElement * Vx_ZX
unsigned int totalHits
unsigned int numberFits
MonitorElement * Vx_Y_Cum
unsigned int beginLumiOfFit
MonitorElement * Vx_X
MonitorElement * mYlumi
edm::TimeValue_t beginTimeOfFit
edm::TimeValue_t endTimeOfFit
MonitorElement * sYlumi
MonitorElement * reportSummaryMap
void Fill(long long x)
MonitorElement * Vx_XY
MonitorElement * sZlumi
MonitorElement * fitResults
MonitorElement * Vx_ZY
std::string formatTime(const time_t &t)
unsigned int endLumiOfFit
unsigned int numberGoodFits
MonitorElement * reportSummary
MonitorElement * Vx_ZY_Cum
MonitorElement * goodVxCounter
std::ofstream outputDebugFile
MonitorElement * dydzlumi
TH1 * getTH1(void) const
MonitorElement * Vx_ZX_Cum
MonitorElement * Vx_Z
MonitorElement * mXlumi
MonitorElement * Vx_X_Cum
std::vector< VertexType > Vertices
MonitorElement * mZlumi
MonitorElement * sXlumi
unsigned int lastLumiOfFit
MonitorElement * Vx_XY_Cum
unsigned int runNumber
MonitorElement * Vx_Z_Cum
MonitorElement * hitCounter
void Reset(void)
reset ME (ie. contents, errors, etc)
MonitorElement * Vx_Y
void Vx3DHLTAnalyzer::writeToFile ( std::vector< double > *  vals,
edm::TimeValue_t  BeginTimeOfFit,
edm::TimeValue_t  EndTimeOfFit,
unsigned int  BeginLumiOfFit,
unsigned int  EndLumiOfFit,
int  dataType 
)
private

Definition at line 731 of file Vx3DHLTAnalyzer.cc.

References MillePedeFileConverter_cfg::fileName, edm::service::formatTime(), NULL, MillePedeFileConverter_cfg::out, download_sqlite_cfg::outputFile, convertSQLiteXML::runNumber, and mathSSE::sqrt().

737 {
738  stringstream BufferString;
739  BufferString.precision(5);
740 
741  outputFile.open(fileName.c_str(), ios::out);
742 
743  if ((outputFile.is_open() == true) && (vals != NULL) && (vals->size() == (nParams-1)*2))
744  {
745  vector<double>::const_iterator it = vals->begin();
746 
747  outputFile << "Runnumber " << runNumber << endl;
748  outputFile << "BeginTimeOfFit " << formatTime(beginTimeOfFit >> 32) << " " << (beginTimeOfFit >> 32) << endl;
749  outputFile << "EndTimeOfFit " << formatTime(endTimeOfFit >> 32) << " " << (endTimeOfFit >> 32) << endl;
750  outputFile << "LumiRange " << beginLumiOfFit << " - " << endLumiOfFit << endl;
751  outputFile << "Type " << dataType << endl;
752  // 3D Vertexing with Pixel Tracks:
753  // Good data = Type 3
754  // Bad data = Type -1
755 
756  BufferString << *(it+0);
757  outputFile << "X0 " << BufferString.str().c_str() << endl;
758  BufferString.str("");
759 
760  BufferString << *(it+1);
761  outputFile << "Y0 " << BufferString.str().c_str() << endl;
762  BufferString.str("");
763 
764  BufferString << *(it+2);
765  outputFile << "Z0 " << BufferString.str().c_str() << endl;
766  BufferString.str("");
767 
768  BufferString << *(it+5);
769  outputFile << "sigmaZ0 " << BufferString.str().c_str() << endl;
770  BufferString.str("");
771 
772  BufferString << *(it+6);
773  outputFile << "dxdz " << BufferString.str().c_str() << endl;
774  BufferString.str("");
775 
776  BufferString << *(it+7);
777  outputFile << "dydz " << BufferString.str().c_str() << endl;
778  BufferString.str("");
779 
780  BufferString << *(it+3);
781  outputFile << "BeamWidthX " << BufferString.str().c_str() << endl;
782  BufferString.str("");
783 
784  BufferString << *(it+4);
785  outputFile << "BeamWidthY " << BufferString.str().c_str() << endl;
786  BufferString.str("");
787 
788  outputFile << "Cov(0,j) " << *(it+8) << " 0 0 0 0 0 0" << endl;
789  outputFile << "Cov(1,j) 0 " << *(it+9) << " 0 0 0 0 0" << endl;
790  outputFile << "Cov(2,j) 0 0 " << *(it+10) << " 0 0 0 0" << endl;
791  outputFile << "Cov(3,j) 0 0 0 " << *(it+13) << " 0 0 0" << endl;
792  outputFile << "Cov(4,j) 0 0 0 0 " << *(it+14) << " 0 0" << endl;
793  outputFile << "Cov(5,j) 0 0 0 0 0 " << *(it+15) << " 0" << endl;
794  outputFile << "Cov(6,j) 0 0 0 0 0 0 " << ((*(it+11)) + (*(it+12)) + 2.*std::sqrt((*(it+11))*(*(it+12)))) / 4. << endl;
795 
796  outputFile << "EmittanceX 0" << endl;
797  outputFile << "EmittanceY 0" << endl;
798  outputFile << "BetaStar 0" << endl;
799  outputFile << "events 0" << endl;
800  outputFile << "meanPV 0" << endl;
801  outputFile << "meanErrPV 0" << endl;
802  outputFile << "rmsPV 0" << endl;
803  outputFile << "rmsErrPV 0" << endl;
804  outputFile << "maxPV 0" << endl;
805  outputFile << "nPV " << counterVx << endl;
806  }
807  outputFile.close();
808 
809  if ((debugMode == true) && (outputDebugFile.is_open() == true) && (vals != NULL) && (vals->size() == (nParams-1)*2))
810  {
811  vector<double>::const_iterator it = vals->begin();
812 
813  outputDebugFile << "Runnumber " << runNumber << endl;
814  outputDebugFile << "BeginTimeOfFit " << formatTime(beginTimeOfFit >> 32) << " " << (beginTimeOfFit >> 32) << endl;
815  outputDebugFile << "EndTimeOfFit " << formatTime(endTimeOfFit >> 32) << " " << (endTimeOfFit >> 32) << endl;
816  outputDebugFile << "LumiRange " << beginLumiOfFit << " - " << endLumiOfFit << endl;
817  outputDebugFile << "Type " << dataType << endl;
818  // 3D Vertexing with Pixel Tracks:
819  // Good data = Type 3
820  // Bad data = Type -1
821 
822  BufferString << *(it+0);
823  outputDebugFile << "X0 " << BufferString.str().c_str() << endl;
824  BufferString.str("");
825 
826  BufferString << *(it+1);
827  outputDebugFile << "Y0 " << BufferString.str().c_str() << endl;
828  BufferString.str("");
829 
830  BufferString << *(it+2);
831  outputDebugFile << "Z0 " << BufferString.str().c_str() << endl;
832  BufferString.str("");
833 
834  BufferString << *(it+5);
835  outputDebugFile << "sigmaZ0 " << BufferString.str().c_str() << endl;
836  BufferString.str("");
837 
838  BufferString << *(it+6);
839  outputDebugFile << "dxdz " << BufferString.str().c_str() << endl;
840  BufferString.str("");
841 
842  BufferString << *(it+7);
843  outputDebugFile << "dydz " << BufferString.str().c_str() << endl;
844  BufferString.str("");
845 
846  BufferString << *(it+3);
847  outputDebugFile << "BeamWidthX " << BufferString.str().c_str() << endl;
848  BufferString.str("");
849 
850  BufferString << *(it+4);
851  outputDebugFile << "BeamWidthY " << BufferString.str().c_str() << endl;
852  BufferString.str("");
853 
854  outputDebugFile << "Cov(0,j) " << *(it+8) << " 0 0 0 0 0 0" << endl;
855  outputDebugFile << "Cov(1,j) 0 " << *(it+9) << " 0 0 0 0 0" << endl;
856  outputDebugFile << "Cov(2,j) 0 0 " << *(it+10) << " 0 0 0 0" << endl;
857  outputDebugFile << "Cov(3,j) 0 0 0 " << *(it+13) << " 0 0 0" << endl;
858  outputDebugFile << "Cov(4,j) 0 0 0 0 " << *(it+14) << " 0 0" << endl;
859  outputDebugFile << "Cov(5,j) 0 0 0 0 0 " << *(it+15) << " 0" << endl;
860  outputDebugFile << "Cov(6,j) 0 0 0 0 0 0 " << ((*(it+11)) + (*(it+12)) + 2.*std::sqrt((*(it+11))*(*(it+12)))) / 4. << endl;
861 
862  outputDebugFile << "EmittanceX 0" << endl;
863  outputDebugFile << "EmittanceY 0" << endl;
864  outputDebugFile << "BetaStar 0" << endl;
865  outputDebugFile << "events 0" << endl;
866  outputDebugFile << "meanPV 0" << endl;
867  outputDebugFile << "meanErrPV 0" << endl;
868  outputDebugFile << "rmsPV 0" << endl;
869  outputDebugFile << "rmsErrPV 0" << endl;
870  outputDebugFile << "maxPV 0" << endl;
871  outputDebugFile << "nPV " << counterVx << endl;
872 
873  outputDebugFile << "\n" << "Used vertices: " << counterVx << "\n" << endl;
874  }
875 }
unsigned int beginLumiOfFit
#define NULL
Definition: scimark2.h:8
edm::TimeValue_t beginTimeOfFit
edm::TimeValue_t endTimeOfFit
unsigned int nParams
unsigned int counterVx
std::string fileName
std::string formatTime(const time_t &t)
unsigned int endLumiOfFit
T sqrt(T t)
Definition: SSEVec.h:18
std::ofstream outputDebugFile
std::ofstream outputFile
unsigned int runNumber

Member Data Documentation

unsigned int Vx3DHLTAnalyzer::beginLumiOfFit
private

Definition at line 153 of file Vx3DHLTAnalyzer.h.

edm::TimeValue_t Vx3DHLTAnalyzer::beginTimeOfFit
private

Definition at line 146 of file Vx3DHLTAnalyzer.h.

bool Vx3DHLTAnalyzer::considerVxCovariance
private

Definition at line 160 of file Vx3DHLTAnalyzer.h.

unsigned int Vx3DHLTAnalyzer::counterVx
private

Definition at line 161 of file Vx3DHLTAnalyzer.h.

bool Vx3DHLTAnalyzer::dataFromFit
private

Definition at line 84 of file Vx3DHLTAnalyzer.h.

bool Vx3DHLTAnalyzer::debugMode
private

Definition at line 83 of file Vx3DHLTAnalyzer.h.

MonitorElement* Vx3DHLTAnalyzer::dxdzlumi
private

Definition at line 112 of file Vx3DHLTAnalyzer.h.

MonitorElement* Vx3DHLTAnalyzer::dydzlumi
private

Definition at line 113 of file Vx3DHLTAnalyzer.h.

unsigned int Vx3DHLTAnalyzer::endLumiOfFit
private

Definition at line 154 of file Vx3DHLTAnalyzer.h.

edm::TimeValue_t Vx3DHLTAnalyzer::endTimeOfFit
private

Definition at line 147 of file Vx3DHLTAnalyzer.h.

std::string Vx3DHLTAnalyzer::fileName
private

Definition at line 98 of file Vx3DHLTAnalyzer.h.

Referenced by readConfig.fileINI::read().

MonitorElement* Vx3DHLTAnalyzer::fitResults
private

Definition at line 138 of file Vx3DHLTAnalyzer.h.

MonitorElement* Vx3DHLTAnalyzer::goodVxCounter
private

Definition at line 131 of file Vx3DHLTAnalyzer.h.

MonitorElement* Vx3DHLTAnalyzer::hitCounter
private

Definition at line 132 of file Vx3DHLTAnalyzer.h.

bool Vx3DHLTAnalyzer::internalDebug
private

Definition at line 157 of file Vx3DHLTAnalyzer.h.

unsigned int Vx3DHLTAnalyzer::lastLumiOfFit
private

Definition at line 155 of file Vx3DHLTAnalyzer.h.

unsigned int Vx3DHLTAnalyzer::lumiCounter
private

Definition at line 149 of file Vx3DHLTAnalyzer.h.

double Vx3DHLTAnalyzer::maxLongLength
private

Definition at line 163 of file Vx3DHLTAnalyzer.h.

unsigned int Vx3DHLTAnalyzer::maxLumiIntegration
private

Definition at line 86 of file Vx3DHLTAnalyzer.h.

double Vx3DHLTAnalyzer::maxTransRadius
private

Definition at line 162 of file Vx3DHLTAnalyzer.h.

unsigned int Vx3DHLTAnalyzer::minNentries
private

Definition at line 88 of file Vx3DHLTAnalyzer.h.

double Vx3DHLTAnalyzer::minVxDoF
private

Definition at line 96 of file Vx3DHLTAnalyzer.h.

double Vx3DHLTAnalyzer::minVxWgt
private

Definition at line 97 of file Vx3DHLTAnalyzer.h.

MonitorElement* Vx3DHLTAnalyzer::mXlumi
private

Definition at line 104 of file Vx3DHLTAnalyzer.h.

MonitorElement* Vx3DHLTAnalyzer::mYlumi
private

Definition at line 105 of file Vx3DHLTAnalyzer.h.

MonitorElement* Vx3DHLTAnalyzer::mZlumi
private

Definition at line 106 of file Vx3DHLTAnalyzer.h.

unsigned int Vx3DHLTAnalyzer::nLumiFit
private

Definition at line 85 of file Vx3DHLTAnalyzer.h.

unsigned int Vx3DHLTAnalyzer::nLumiXaxisRange
private

Definition at line 87 of file Vx3DHLTAnalyzer.h.

unsigned int Vx3DHLTAnalyzer::nParams
private

Definition at line 156 of file Vx3DHLTAnalyzer.h.

unsigned int Vx3DHLTAnalyzer::numberFits
private

Definition at line 152 of file Vx3DHLTAnalyzer.h.

unsigned int Vx3DHLTAnalyzer::numberGoodFits
private

Definition at line 151 of file Vx3DHLTAnalyzer.h.

std::ofstream Vx3DHLTAnalyzer::outputDebugFile
private

Definition at line 145 of file Vx3DHLTAnalyzer.h.

std::ofstream Vx3DHLTAnalyzer::outputFile
private

Definition at line 144 of file Vx3DHLTAnalyzer.h.

double Vx3DHLTAnalyzer::pi
private

Definition at line 165 of file Vx3DHLTAnalyzer.h.

edm::EDGetTokenT<SiPixelRecHitCollection> Vx3DHLTAnalyzer::pixelHitCollection
private

Definition at line 82 of file Vx3DHLTAnalyzer.h.

MonitorElement* Vx3DHLTAnalyzer::reportSummary
private

Definition at line 135 of file Vx3DHLTAnalyzer.h.

MonitorElement* Vx3DHLTAnalyzer::reportSummaryMap
private

Definition at line 136 of file Vx3DHLTAnalyzer.h.

unsigned int Vx3DHLTAnalyzer::runNumber
private

Definition at line 148 of file Vx3DHLTAnalyzer.h.

MonitorElement* Vx3DHLTAnalyzer::statusCounter
private

Definition at line 133 of file Vx3DHLTAnalyzer.h.

MonitorElement* Vx3DHLTAnalyzer::sXlumi
private

Definition at line 108 of file Vx3DHLTAnalyzer.h.

MonitorElement* Vx3DHLTAnalyzer::sYlumi
private

Definition at line 109 of file Vx3DHLTAnalyzer.h.

MonitorElement* Vx3DHLTAnalyzer::sZlumi
private

Definition at line 110 of file Vx3DHLTAnalyzer.h.

unsigned int Vx3DHLTAnalyzer::totalHits
private

Definition at line 150 of file Vx3DHLTAnalyzer.h.

edm::EDGetTokenT<reco::VertexCollection> Vx3DHLTAnalyzer::vertexCollection
private

Definition at line 81 of file Vx3DHLTAnalyzer.h.

std::vector<VertexType> Vx3DHLTAnalyzer::Vertices
private

Definition at line 159 of file Vx3DHLTAnalyzer.h.

MonitorElement* Vx3DHLTAnalyzer::Vx_X
private

Definition at line 115 of file Vx3DHLTAnalyzer.h.

MonitorElement* Vx3DHLTAnalyzer::Vx_X_Cum
private

Definition at line 123 of file Vx3DHLTAnalyzer.h.

MonitorElement* Vx3DHLTAnalyzer::Vx_XY
private

Definition at line 121 of file Vx3DHLTAnalyzer.h.

MonitorElement* Vx3DHLTAnalyzer::Vx_XY_Cum
private

Definition at line 129 of file Vx3DHLTAnalyzer.h.

MonitorElement* Vx3DHLTAnalyzer::Vx_Y
private

Definition at line 116 of file Vx3DHLTAnalyzer.h.

MonitorElement* Vx3DHLTAnalyzer::Vx_Y_Cum
private

Definition at line 124 of file Vx3DHLTAnalyzer.h.

MonitorElement* Vx3DHLTAnalyzer::Vx_Z
private

Definition at line 117 of file Vx3DHLTAnalyzer.h.

MonitorElement* Vx3DHLTAnalyzer::Vx_Z_Cum
private

Definition at line 125 of file Vx3DHLTAnalyzer.h.

MonitorElement* Vx3DHLTAnalyzer::Vx_ZX
private

Definition at line 119 of file Vx3DHLTAnalyzer.h.

MonitorElement* Vx3DHLTAnalyzer::Vx_ZX_Cum
private

Definition at line 127 of file Vx3DHLTAnalyzer.h.

MonitorElement* Vx3DHLTAnalyzer::Vx_ZY
private

Definition at line 120 of file Vx3DHLTAnalyzer.h.

MonitorElement* Vx3DHLTAnalyzer::Vx_ZY_Cum
private

Definition at line 128 of file Vx3DHLTAnalyzer.h.

double Vx3DHLTAnalyzer::VxErrCorr
private

Definition at line 95 of file Vx3DHLTAnalyzer.h.

double Vx3DHLTAnalyzer::xPos
private

Definition at line 164 of file Vx3DHLTAnalyzer.h.

double Vx3DHLTAnalyzer::xRange
private

Definition at line 89 of file Vx3DHLTAnalyzer.h.

double Vx3DHLTAnalyzer::xStep
private

Definition at line 90 of file Vx3DHLTAnalyzer.h.

double Vx3DHLTAnalyzer::yPos
private

Definition at line 164 of file Vx3DHLTAnalyzer.h.

double Vx3DHLTAnalyzer::yRange
private

Definition at line 91 of file Vx3DHLTAnalyzer.h.

double Vx3DHLTAnalyzer::yStep
private

Definition at line 92 of file Vx3DHLTAnalyzer.h.

double Vx3DHLTAnalyzer::zPos
private

Definition at line 164 of file Vx3DHLTAnalyzer.h.

double Vx3DHLTAnalyzer::zRange
private

Definition at line 93 of file Vx3DHLTAnalyzer.h.

double Vx3DHLTAnalyzer::zStep
private

Definition at line 94 of file Vx3DHLTAnalyzer.h.