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 () override
 
- Public Member Functions inherited from DQMEDAnalyzer
void beginRun (edm::Run const &, edm::EventSetup const &) final
 
void beginStream (edm::StreamID id) final
 
virtual void dqmBeginRun (edm::Run const &, edm::EventSetup const &)
 
 DQMEDAnalyzer ()
 
void endLuminosityBlockSummary (edm::LuminosityBlock const &, edm::EventSetup const &, dqmDetails::NoCache *) const final
 
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
 
 ~EDAnalyzerBase () override
 
- 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
 
ProductResolverIndexAndSkipBit uncheckedIndexFrom (EDGetToken) 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_X_Fit
 
MonitorElementVx_XY
 
MonitorElementVx_XY_Cum
 
MonitorElementVx_Y
 
MonitorElementVx_Y_Cum
 
MonitorElementVx_Y_Fit
 
MonitorElementVx_Z
 
MonitorElementVx_Z_Cum
 
MonitorElementVx_Z_Fit
 
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 ( )
override

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:519
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:100
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 905 of file Vx3DHLTAnalyzer.cc.

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

906 {
907  // @@@ If statement to avoid problems with non-sequential lumisections @@@
908  if ((lumiCounter == 0) && (lumiBlock.luminosityBlock() > lastLumiOfFit))
909  {
910  beginTimeOfFit = lumiBlock.beginTime().value();
911  beginLumiOfFit = lumiBlock.luminosityBlock();
912  lumiCounter++;
913  }
914  else if ((lumiCounter != 0) && (lumiBlock.luminosityBlock() >= (beginLumiOfFit+lumiCounter))) lumiCounter++;
915  else reset("scratch");
916 }
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 1308 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.

1309 {
1310  ibooker.setCurrentFolder("BeamPixel");
1311 
1312  Vx_X = ibooker.book1D("F - vertex x", "Primary Vertex X Distribution", int(rint(xRange/xStep)), -xRange/2., xRange/2.);
1313  Vx_Y = ibooker.book1D("F - vertex y", "Primary Vertex Y Distribution", int(rint(yRange/yStep)), -yRange/2., yRange/2.);
1314  Vx_Z = ibooker.book1D("F - vertex z", "Primary Vertex Z Distribution", int(rint(zRange/zStep)), -zRange/2., zRange/2.);
1315  Vx_X->setAxisTitle("Primary Vertices X [cm]",1);
1316  Vx_X->setAxisTitle("Entries [#]",2);
1317  Vx_Y->setAxisTitle("Primary Vertices Y [cm]",1);
1318  Vx_Y->setAxisTitle("Entries [#]",2);
1319  Vx_Z->setAxisTitle("Primary Vertices Z [cm]",1);
1320  Vx_Z->setAxisTitle("Entries [#]",2);
1321 
1322  Vx_X_Fit = ibooker.book1D("G - vertex x fit", "Primary Vertex X Distribution (For Fit)", int(rint(xRange/xStep)), -xRange/2., xRange/2.);
1323  Vx_Y_Fit = ibooker.book1D("G - vertex y fit", "Primary Vertex Y Distribution (For Fit)", int(rint(yRange/yStep)), -yRange/2., yRange/2.);
1324  Vx_Z_Fit = ibooker.book1D("G - vertex z fit", "Primary Vertex Z Distribution (For Fit)", int(rint(zRange/zStep)), -zRange/2., zRange/2.);
1325  Vx_X_Fit->setAxisTitle("Primary Vertices X [cm]",1);
1326  Vx_X_Fit->setAxisTitle("Entries [#]",2);
1327  Vx_Y_Fit->setAxisTitle("Primary Vertices Y [cm]",1);
1328  Vx_Y_Fit->setAxisTitle("Entries [#]",2);
1329  Vx_Z_Fit->setAxisTitle("Primary Vertices Z [cm]",1);
1330  Vx_Z_Fit->setAxisTitle("Entries [#]",2);
1331 
1332  Vx_X_Cum = ibooker.book1D("I - vertex x cum", "Primary Vertex X Distribution (Cumulative)", int(rint(xRange/xStep)), -xRange/2., xRange/2.);
1333  Vx_Y_Cum = ibooker.book1D("I - vertex y cum", "Primary Vertex Y Distribution (Cumulative)", int(rint(yRange/yStep)), -yRange/2., yRange/2.);
1334  Vx_Z_Cum = ibooker.book1D("I - vertex z cum", "Primary Vertex Z Distribution (Cumulative)", int(rint(zRange/zStep)), -zRange/2., zRange/2.);
1335  Vx_X_Cum->setAxisTitle("Primary Vertices X [cm]",1);
1336  Vx_X_Cum->setAxisTitle("Entries [#]",2);
1337  Vx_Y_Cum->setAxisTitle("Primary Vertices Y [cm]",1);
1338  Vx_Y_Cum->setAxisTitle("Entries [#]",2);
1339  Vx_Z_Cum->setAxisTitle("Primary Vertices Z [cm]",1);
1340  Vx_Z_Cum->setAxisTitle("Entries [#]",2);
1341 
1342  mXlumi = ibooker.book1D("B - muX vs lumi", "#mu_{x} vs. Lumisection", nLumiXaxisRange, 0.5, ((double)nLumiXaxisRange)+0.5);
1343  mYlumi = ibooker.book1D("B - muY vs lumi", "#mu_{y} vs. Lumisection", nLumiXaxisRange, 0.5, ((double)nLumiXaxisRange)+0.5);
1344  mZlumi = ibooker.book1D("B - muZ vs lumi", "#mu_{z} vs. Lumisection", nLumiXaxisRange, 0.5, ((double)nLumiXaxisRange)+0.5);
1345  mXlumi->setAxisTitle("Lumisection [#]",1);
1346  mXlumi->setAxisTitle("#mu_{x} [cm]",2);
1347  mXlumi->getTH1()->SetOption("E1");
1348  mYlumi->setAxisTitle("Lumisection [#]",1);
1349  mYlumi->setAxisTitle("#mu_{y} [cm]",2);
1350  mYlumi->getTH1()->SetOption("E1");
1351  mZlumi->setAxisTitle("Lumisection [#]",1);
1352  mZlumi->setAxisTitle("#mu_{z} [cm]",2);
1353  mZlumi->getTH1()->SetOption("E1");
1354 
1355  sXlumi = ibooker.book1D("C - sigmaX vs lumi", "#sigma_{x} vs. Lumisection", nLumiXaxisRange, 0.5, ((double)nLumiXaxisRange)+0.5);
1356  sYlumi = ibooker.book1D("C - sigmaY vs lumi", "#sigma_{y} vs. Lumisection", nLumiXaxisRange, 0.5, ((double)nLumiXaxisRange)+0.5);
1357  sZlumi = ibooker.book1D("C - sigmaZ vs lumi", "#sigma_{z} vs. Lumisection", nLumiXaxisRange, 0.5, ((double)nLumiXaxisRange)+0.5);
1358  sXlumi->setAxisTitle("Lumisection [#]",1);
1359  sXlumi->setAxisTitle("#sigma_{x} [cm]",2);
1360  sXlumi->getTH1()->SetOption("E1");
1361  sYlumi->setAxisTitle("Lumisection [#]",1);
1362  sYlumi->setAxisTitle("#sigma_{y} [cm]",2);
1363  sYlumi->getTH1()->SetOption("E1");
1364  sZlumi->setAxisTitle("Lumisection [#]",1);
1365  sZlumi->setAxisTitle("#sigma_{z} [cm]",2);
1366  sZlumi->getTH1()->SetOption("E1");
1367 
1368  dxdzlumi = ibooker.book1D("D - dxdz vs lumi", "dX/dZ vs. Lumisection", nLumiXaxisRange, 0.5, ((double)nLumiXaxisRange)+0.5);
1369  dydzlumi = ibooker.book1D("D - dydz vs lumi", "dY/dZ vs. Lumisection", nLumiXaxisRange, 0.5, ((double)nLumiXaxisRange)+0.5);
1370  dxdzlumi->setAxisTitle("Lumisection [#]",1);
1371  dxdzlumi->setAxisTitle("dX/dZ [rad]",2);
1372  dxdzlumi->getTH1()->SetOption("E1");
1373  dydzlumi->setAxisTitle("Lumisection [#]",1);
1374  dydzlumi->setAxisTitle("dY/dZ [rad]",2);
1375  dydzlumi->getTH1()->SetOption("E1");
1376 
1377  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.);
1378  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.);
1379  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.);
1380  Vx_ZX->setAxisTitle("Primary Vertices Z [cm]",1);
1381  Vx_ZX->setAxisTitle("Primary Vertices X [cm]",2);
1382  Vx_ZX->setAxisTitle("Entries [#]",3);
1383  Vx_ZY->setAxisTitle("Primary Vertices Z [cm]",1);
1384  Vx_ZY->setAxisTitle("Primary Vertices Y [cm]",2);
1385  Vx_ZY->setAxisTitle("Entries [#]",3);
1386  Vx_XY->setAxisTitle("Primary Vertices X [cm]",1);
1387  Vx_XY->setAxisTitle("Primary Vertices Y [cm]",2);
1388  Vx_XY->setAxisTitle("Entries [#]",3);
1389 
1390  Vx_ZX_Cum = ibooker.book2D("H - vertex zx cum", "Primary Vertex ZX Distribution (Cumulative)", int(rint(zRange/zStep)), -zRange/2., zRange/2., int(rint(xRange/xStep)), -xRange/2., xRange/2.);
1391  Vx_ZY_Cum = ibooker.book2D("H - vertex zy cum", "Primary Vertex ZY Distribution (Cumulative)", int(rint(zRange/zStep)), -zRange/2., zRange/2., int(rint(yRange/yStep)), -yRange/2., yRange/2.);
1392  Vx_XY_Cum = ibooker.book2D("H - vertex xy cum", "Primary Vertex XY Distribution (Cumulative)", int(rint(xRange/xStep)), -xRange/2., xRange/2., int(rint(yRange/yStep)), -yRange/2., yRange/2.);
1393  Vx_ZX_Cum->setAxisTitle("Primary Vertices Z [cm]",1);
1394  Vx_ZX_Cum->setAxisTitle("Primary Vertices X [cm]",2);
1395  Vx_ZX_Cum->setAxisTitle("Entries [#]",3);
1396  Vx_ZY_Cum->setAxisTitle("Primary Vertices Z [cm]",1);
1397  Vx_ZY_Cum->setAxisTitle("Primary Vertices Y [cm]",2);
1398  Vx_ZY_Cum->setAxisTitle("Entries [#]",3);
1399  Vx_XY_Cum->setAxisTitle("Primary Vertices X [cm]",1);
1400  Vx_XY_Cum->setAxisTitle("Primary Vertices Y [cm]",2);
1401  Vx_XY_Cum->setAxisTitle("Entries [#]",3);
1402 
1403  hitCounter = ibooker.book1D("J - pixelHits vs lumi", "# Pixel-Hits vs. Lumisection", nLumiXaxisRange, 0.5, ((double)nLumiXaxisRange)+0.5);
1404  hitCounter->setAxisTitle("Lumisection [#]",1);
1405  hitCounter->setAxisTitle("Pixel-Hits [#]",2);
1406  hitCounter->getTH1()->SetOption("E1");
1407 
1408  goodVxCounter = ibooker.book1D("K - good vertices vs lumi", "# Good vertices vs. Lumisection", nLumiXaxisRange, 0.5, ((double)nLumiXaxisRange)+0.5);
1409  goodVxCounter->setAxisTitle("Lumisection [#]",1);
1410  goodVxCounter->setAxisTitle("Good vertices [#]",2);
1411  goodVxCounter->getTH1()->SetOption("E1");
1412 
1413  statusCounter = ibooker.book1D("L - status vs lumi", "App. Status vs. Lumisection", nLumiXaxisRange, 0.5, ((double)nLumiXaxisRange)+0.5);
1414  statusCounter->setAxisTitle("Lumisection [#]",1);
1415  statusCounter->getTH1()->SetOption("E1");
1416  statusCounter->getTH1()->GetYaxis()->Set(11,-5.5,5.5);
1417  statusCounter->getTH1()->GetYaxis()->SetBinLabel(1, "Max Lumi.");
1418  statusCounter->getTH1()->GetYaxis()->SetBinLabel(2, "Neg. det.");
1419  statusCounter->getTH1()->GetYaxis()->SetBinLabel(3, "Infinite err.");
1420  statusCounter->getTH1()->GetYaxis()->SetBinLabel(4, "No vtx.");
1421  statusCounter->getTH1()->GetYaxis()->SetBinLabel(5, "Infinite EDM");
1422  statusCounter->getTH1()->GetYaxis()->SetBinLabel(6, "OK");
1423  statusCounter->getTH1()->GetYaxis()->SetBinLabel(7, "MINUIT stat.");
1424  statusCounter->getTH1()->GetYaxis()->SetBinLabel(8, "MINUIT stat.");
1425  statusCounter->getTH1()->GetYaxis()->SetBinLabel(9, "MINUIT stat.");
1426  statusCounter->getTH1()->GetYaxis()->SetBinLabel(10, "MINUIT stat.");
1427  statusCounter->getTH1()->GetYaxis()->SetBinLabel(11, "MINUIT stat.");
1428 
1429  fitResults = ibooker.book2D("A - fit results","Results of Beam Spot Fit", 2, 0., 2., 9, 0., 9.);
1430  fitResults->setAxisTitle("Ongoing: bootstrapping", 1);
1431  fitResults->setBinLabel(9, "X[cm]", 2);
1432  fitResults->setBinLabel(8, "Y[cm]", 2);
1433  fitResults->setBinLabel(7, "Z[cm]", 2);
1434  fitResults->setBinLabel(6, "#sigma_{X}[cm]", 2);
1435  fitResults->setBinLabel(5, "#sigma_{Y}[cm]", 2);
1436  fitResults->setBinLabel(4, "#sigma_{Z}[cm]", 2);
1437  fitResults->setBinLabel(3, "#frac{dX}{dZ}[rad]", 2);
1438  fitResults->setBinLabel(2, "#frac{dY}{dZ}[rad]", 2);
1439  fitResults->setBinLabel(1, "Vtx[#]", 2);
1440  fitResults->setBinLabel(1, "Value", 1);
1441  fitResults->setBinLabel(2, "Error (stat)", 1);
1442  fitResults->getTH1()->SetOption("text");
1443 
1444 
1445  ibooker.setCurrentFolder("BeamPixel/EventInfo");
1446 
1447  reportSummary = ibooker.bookFloat("reportSummary");
1448  reportSummary->Fill(-1);
1449  reportSummaryMap = ibooker.book2D("reportSummaryMap","Pixel-Vertices Beam Spot: % Good Fits", 1, 0., 1., 1, 0., 1.);
1450  reportSummaryMap->getTH1()->SetBinContent(1, 1, -1);
1451 
1452  ibooker.setCurrentFolder("BeamPixel/EventInfo/reportSummaryContents");
1453 
1454  // Convention for reportSummary and reportSummaryMap:
1455  // - -1% at the moment of creation of the histogram (i.e. white histogram)
1456  // - n% numberGoodFits / numberFits
1457 
1458 
1459  reset("scratch"); // Initialize histograms after creation
1460 }
MonitorElement * statusCounter
MonitorElement * dxdzlumi
MonitorElement * Vx_ZX
MonitorElement * Vx_Y_Cum
unsigned int nLumiXaxisRange
TH1 * getTH1() const
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:118
MonitorElement * dydzlumi
MonitorElement * Vx_ZX_Cum
MonitorElement * Vx_Z
MonitorElement * mXlumi
void reset(std::string ResetType)
MonitorElement * Vx_X_Cum
MonitorElement * mZlumi
MonitorElement * sXlumi
MonitorElement * Vx_Z_Fit
void setCurrentFolder(const std::string &fullpath)
Definition: DQMStore.cc:279
MonitorElement * book2D(Args &&...args)
Definition: DQMStore.h:136
MonitorElement * Vx_XY_Cum
MonitorElement * Vx_X_Fit
MonitorElement * Vx_Z_Cum
MonitorElement * bookFloat(Args &&...args)
Definition: DQMStore.h:112
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_Fit
MonitorElement * Vx_Y
void Vx3DHLTAnalyzer::endLuminosityBlock ( const edm::LuminosityBlock lumiBlock,
const edm::EventSetup iSetup 
)
overrideprivate

Definition at line 919 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().

920 {
921  stringstream histTitle;
922  double minXfit, maxXfit;
923  int goodData;
924 
925  if ((nLumiFit != 0) && (lumiCounter%nLumiFit == 0) && (beginTimeOfFit != 0) && (runNumber != 0))
926  {
927  endTimeOfFit = lumiBlock.endTime().value();
928  endLumiOfFit = lumiBlock.luminosityBlock();
930  vector<double> vals;
931 
932  hitCounter->getTH1()->SetBinContent(lastLumiOfFit, (double)totalHits);
933  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
934 
935  if (dataFromFit == true)
936  {
937  vector<double> fitResults;
938 
939  fitResults.push_back(Vx_X->getTH1()->GetRMS()*Vx_X->getTH1()->GetRMS());
940  fitResults.push_back(Vx_Y->getTH1()->GetRMS()*Vx_Y->getTH1()->GetRMS());
941  fitResults.push_back(Vx_Z->getTH1()->GetRMS()*Vx_Z->getTH1()->GetRMS());
942  fitResults.push_back(0.0);
943  fitResults.push_back(0.0);
944  fitResults.push_back(0.0);
945  fitResults.push_back(Vx_X->getTH1()->GetMean());
946  fitResults.push_back(Vx_Y->getTH1()->GetMean());
947  fitResults.push_back(Vx_Z->getTH1()->GetMean());
948  for (unsigned int i = 0; i < nParams; i++) fitResults.push_back(0.0);
949 
950  if (internalDebug == true)
951  {
952  cout << "[Vx3DHLTAnalyzer]::\t@@@ Beam Spot parameters - prefit @@@" << endl;
953 
954  printFitParams(fitResults);
955 
956  cout << "Runnumber " << runNumber << endl;
957  cout << "BeginTimeOfFit " << formatTime(beginTimeOfFit >> 32) << " " << (beginTimeOfFit >> 32) << endl;
958  cout << "EndTimeOfFit " << formatTime(endTimeOfFit >> 32) << " " << (endTimeOfFit >> 32) << endl;
959  cout << "LumiRange " << beginLumiOfFit << " - " << endLumiOfFit << endl;
960  }
961 
962  goodData = MyFit(&fitResults);
963 
964  if (internalDebug == true)
965  {
966  cout << "[Vx3DHLTAnalyzer]::\t@@@ Beam Spot parameters - postfit @@@" << endl;
967 
968  printFitParams(fitResults);
969 
970  cout << "goodData --> " << goodData << endl;
971  cout << "Used vertices --> " << counterVx << endl;
972  }
973 
974  if (goodData == 0)
975  {
976  vals.push_back(fitResults[6]);
977  vals.push_back(fitResults[7]);
978  vals.push_back(fitResults[8]);
979  vals.push_back(std::sqrt(std::fabs(fitResults[0])));
980  vals.push_back(std::sqrt(std::fabs(fitResults[1])));
981  vals.push_back(std::sqrt(std::fabs(fitResults[2])));
982  vals.push_back(fitResults[5]);
983  vals.push_back(fitResults[4]);
984 
985  vals.push_back(std::pow(fitResults[6+nParams],2.));
986  vals.push_back(std::pow(fitResults[7+nParams],2.));
987  vals.push_back(std::pow(fitResults[8+nParams],2.));
988  vals.push_back(std::pow(std::fabs(fitResults[0+nParams]) / (2.*std::sqrt(std::fabs(fitResults[0]))),2.));
989  vals.push_back(std::pow(std::fabs(fitResults[1+nParams]) / (2.*std::sqrt(std::fabs(fitResults[1]))),2.));
990  vals.push_back(std::pow(std::fabs(fitResults[2+nParams]) / (2.*std::sqrt(std::fabs(fitResults[2]))),2.));
991  vals.push_back(std::pow(fitResults[5+nParams],2.));
992  vals.push_back(std::pow(fitResults[4+nParams],2.));
993  }
994  else for (unsigned int i = 0; i < (nParams-1)*2; i++) vals.push_back(0.0);
995 
996  fitResults.clear();
997  }
998  else
999  {
1000  counterVx = Vx_X->getTH1F()->GetEntries();
1001 
1002  if (Vx_X->getTH1F()->GetEntries() >= minNentries)
1003  {
1004  goodData = 0;
1005 
1006  vals.push_back(Vx_X->getTH1F()->GetMean());
1007  vals.push_back(Vx_Y->getTH1F()->GetMean());
1008  vals.push_back(Vx_Z->getTH1F()->GetMean());
1009  vals.push_back(Vx_X->getTH1F()->GetRMS());
1010  vals.push_back(Vx_Y->getTH1F()->GetRMS());
1011  vals.push_back(Vx_Z->getTH1F()->GetRMS());
1012  vals.push_back(0.0);
1013  vals.push_back(0.0);
1014 
1015  vals.push_back(std::pow(Vx_X->getTH1F()->GetMeanError(),2.));
1016  vals.push_back(std::pow(Vx_Y->getTH1F()->GetMeanError(),2.));
1017  vals.push_back(std::pow(Vx_Z->getTH1F()->GetMeanError(),2.));
1018  vals.push_back(std::pow(Vx_X->getTH1F()->GetRMSError(),2.));
1019  vals.push_back(std::pow(Vx_Y->getTH1F()->GetRMSError(),2.));
1020  vals.push_back(std::pow(Vx_Z->getTH1F()->GetRMSError(),2.));
1021  vals.push_back(0.0);
1022  vals.push_back(0.0);
1023  }
1024  else
1025  {
1026  goodData = -2;
1027  for (unsigned int i = 0; i < (nParams-1)*2; i++) vals.push_back(0.0);
1028  }
1029  }
1030 
1031  // vals[0] = X0
1032  // vals[1] = Y0
1033  // vals[2] = Z0
1034  // vals[3] = sigmaX0
1035  // vals[4] = sigmaY0
1036  // vals[5] = sigmaZ0
1037  // vals[6] = dxdz
1038  // vals[7] = dydz
1039 
1040  // vals[8] = err^2 X0
1041  // vals[9] = err^2 Y0
1042  // vals[10] = err^2 Z0
1043  // vals[11] = err^2 sigmaX0
1044  // vals[12] = err^2 sigmaY0
1045  // vals[13] = err^2 sigmaZ0
1046  // vals[14] = err^2 dxdz
1047  // vals[15] = err^2 dydz
1048 
1049  numberFits++;
1051  if (internalDebug == true) cout << "[Vx3DHLTAnalyzer]::\tUsed vertices: " << counterVx << endl;
1052 
1053  statusCounter->getTH1()->SetBinContent(lastLumiOfFit, (double)goodData);
1054  statusCounter->getTH1()->SetBinError(lastLumiOfFit, 1e-3);
1055 
1056  // Copy vertex position histograms into to-fit histograms
1057  if (goodData == 0) reset("fit");
1058  else if (lumiCounter >= maxLumiIntegration)
1059  {
1060  reset("fit");
1061  reset("whole");
1062  }
1063 
1064  for (int i = 0; i < Vx_X_Fit->getTH1()->GetNbinsX(); i++)
1065  {
1066  Vx_X_Fit->getTH1()->SetBinContent(i+1,Vx_X_Fit->getTH1()->GetBinContent(i+1) + Vx_X->getTH1()->GetBinContent(i+1));
1067  Vx_X_Fit->getTH1()->SetBinError(i+1,sqrt(Vx_X_Fit->getTH1()->GetBinContent(i+1)));
1068  }
1069 
1070  for (int i = 0; i < Vx_Y_Fit->getTH1()->GetNbinsX(); i++)
1071  {
1072  Vx_Y_Fit->getTH1()->SetBinContent(i+1,Vx_Y_Fit->getTH1()->GetBinContent(i+1) + Vx_Y->getTH1()->GetBinContent(i+1));
1073  Vx_Y_Fit->getTH1()->SetBinError(i+1,sqrt(Vx_Y_Fit->getTH1()->GetBinContent(i+1)));
1074  }
1075 
1076  for (int i = 0; i < Vx_Z_Fit->getTH1()->GetNbinsX(); i++)
1077  {
1078  Vx_Z_Fit->getTH1()->SetBinContent(i+1,Vx_Z_Fit->getTH1()->GetBinContent(i+1) + Vx_Z->getTH1()->GetBinContent(i+1));
1079  Vx_Z_Fit->getTH1()->SetBinError(i+1,sqrt(Vx_Z_Fit->getTH1()->GetBinContent(i+1)));
1080  }
1081 
1082  // Check data quality
1083  if (goodData == 0)
1084  {
1085  numberGoodFits++;
1086 
1087  histTitle << "Ongoing: fitted lumis " << beginLumiOfFit << " - " << endLumiOfFit;
1088  reset("whole");
1089  }
1090  else
1091  {
1092  if (goodData == -2) histTitle << "Ongoing: not enough evts (" << lumiCounter << " - " << maxLumiIntegration << " lumis)";
1093  else histTitle << "Ongoing: temporary problems (" << lumiCounter << " - " << maxLumiIntegration << " lumis)";
1094 
1095  if (lumiCounter >= maxLumiIntegration)
1096  {
1097  statusCounter->getTH1()->SetBinContent(lastLumiOfFit, -5);
1098  statusCounter->getTH1()->SetBinError(lastLumiOfFit, 1e-3);
1099  }
1100  else reset("hitCounter");
1101  }
1102 
1103  reportSummary->Fill((numberFits != 0 ? ((double)numberGoodFits) / ((double)numberFits) : -1));
1104  reportSummaryMap->getTH1()->SetBinContent(1, 1, (numberFits != 0 ? ((double)numberGoodFits) / ((double)numberFits) : -1));
1105 
1106  fitResults->setAxisTitle(histTitle.str(), 1);
1107 
1108  fitResults->setBinContent(1, 9, vals[0]);
1109  fitResults->setBinContent(1, 8, vals[1]);
1110  fitResults->setBinContent(1, 7, vals[2]);
1111  fitResults->setBinContent(1, 6, vals[3]);
1112  fitResults->setBinContent(1, 5, vals[4]);
1113  fitResults->setBinContent(1, 4, vals[5]);
1114  fitResults->setBinContent(1, 3, vals[6]);
1115  fitResults->setBinContent(1, 2, vals[7]);
1116  fitResults->setBinContent(1, 1, counterVx);
1117 
1118  fitResults->setBinContent(2, 9, std::sqrt(vals[8]));
1119  fitResults->setBinContent(2, 8, std::sqrt(vals[9]));
1120  fitResults->setBinContent(2, 7, std::sqrt(vals[10]));
1121  fitResults->setBinContent(2, 6, std::sqrt(vals[11]));
1122  fitResults->setBinContent(2, 5, std::sqrt(vals[12]));
1123  fitResults->setBinContent(2, 4, std::sqrt(vals[13]));
1124  fitResults->setBinContent(2, 3, std::sqrt(vals[14]));
1125  fitResults->setBinContent(2, 2, std::sqrt(vals[15]));
1126  fitResults->setBinContent(2, 1, std::sqrt(counterVx));
1127 
1128  // Linear fit to the historical plots
1129  TF1* myLinFit = new TF1("myLinFit", "[0] + [1]*x", mXlumi->getTH1()->GetXaxis()->GetXmin(), mXlumi->getTH1()->GetXaxis()->GetXmax());
1130  myLinFit->SetLineColor(2);
1131  myLinFit->SetLineWidth(2);
1132  myLinFit->SetParName(0,"Inter.");
1133  myLinFit->SetParName(1,"Slope");
1134 
1135  mXlumi->getTH1()->SetBinContent(lastLumiOfFit, vals[0]);
1136  mXlumi->getTH1()->SetBinError(lastLumiOfFit, std::sqrt(vals[8]));
1137  myLinFit->SetParameter(0, mXlumi->getTH1()->GetMean(2));
1138  myLinFit->SetParameter(1, 0.0);
1139  mXlumi->getTH1()->Fit(myLinFit,"QR");
1140 
1141  mYlumi->getTH1()->SetBinContent(lastLumiOfFit, vals[1]);
1142  mYlumi->getTH1()->SetBinError(lastLumiOfFit, std::sqrt(vals[9]));
1143  myLinFit->SetParameter(0, mYlumi->getTH1()->GetMean(2));
1144  myLinFit->SetParameter(1, 0.0);
1145  mYlumi->getTH1()->Fit(myLinFit,"QR");
1146 
1147  mZlumi->getTH1()->SetBinContent(lastLumiOfFit, vals[2]);
1148  mZlumi->getTH1()->SetBinError(lastLumiOfFit, std::sqrt(vals[10]));
1149  myLinFit->SetParameter(0, mZlumi->getTH1()->GetMean(2));
1150  myLinFit->SetParameter(1, 0.0);
1151  mZlumi->getTH1()->Fit(myLinFit,"QR");
1152 
1153  sXlumi->getTH1()->SetBinContent(lastLumiOfFit, vals[3]);
1154  sXlumi->getTH1()->SetBinError(lastLumiOfFit, std::sqrt(vals[11]));
1155  myLinFit->SetParameter(0, sXlumi->getTH1()->GetMean(2));
1156  myLinFit->SetParameter(1, 0.0);
1157  sXlumi->getTH1()->Fit(myLinFit,"QR");
1158 
1159  sYlumi->getTH1()->SetBinContent(lastLumiOfFit, vals[4]);
1160  sYlumi->getTH1()->SetBinError(lastLumiOfFit, std::sqrt(vals[12]));
1161  myLinFit->SetParameter(0, sYlumi->getTH1()->GetMean(2));
1162  myLinFit->SetParameter(1, 0.0);
1163  sYlumi->getTH1()->Fit(myLinFit,"QR");
1164 
1165  sZlumi->getTH1()->SetBinContent(lastLumiOfFit, vals[5]);
1166  sZlumi->getTH1()->SetBinError(lastLumiOfFit, std::sqrt(vals[13]));
1167  myLinFit->SetParameter(0, sZlumi->getTH1()->GetMean(2));
1168  myLinFit->SetParameter(1, 0.0);
1169  sZlumi->getTH1()->Fit(myLinFit,"QR");
1170 
1171  dxdzlumi->getTH1()->SetBinContent(lastLumiOfFit, vals[6]);
1172  dxdzlumi->getTH1()->SetBinError(lastLumiOfFit, std::sqrt(vals[14]));
1173  myLinFit->SetParameter(0, dxdzlumi->getTH1()->GetMean(2));
1174  myLinFit->SetParameter(1, 0.0);
1175  dxdzlumi->getTH1()->Fit(myLinFit,"QR");
1176 
1177  dydzlumi->getTH1()->SetBinContent(lastLumiOfFit, vals[7]);
1178  dydzlumi->getTH1()->SetBinError(lastLumiOfFit, std::sqrt(vals[15]));
1179  myLinFit->SetParameter(0, dydzlumi->getTH1()->GetMean(2));
1180  myLinFit->SetParameter(1, 0.0);
1181  dydzlumi->getTH1()->Fit(myLinFit,"QR");
1182 
1183  myLinFit->SetParameter(0, hitCounter->getTH1()->GetMean(2));
1184  myLinFit->SetParameter(1, 0.0);
1185  hitCounter->getTH1()->Fit(myLinFit,"QR");
1186 
1187  goodVxCounter->getTH1()->SetBinContent(lastLumiOfFit, (double)counterVx);
1188  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
1189  myLinFit->SetParameter(0, goodVxCounter->getTH1()->GetMean(2));
1190  myLinFit->SetParameter(1, 0.0);
1191  goodVxCounter->getTH1()->Fit(myLinFit,"QR");
1192 
1193  delete myLinFit;
1194  vals.clear();
1195 
1196  // Gaussian fit to 1D vertex coordinate distributions
1197  TF1* myGaussFit = new TF1("myGaussFit", "[0]*exp(-(x-[1])*(x-[1])/(2*[2]*[2]))", Vx_Z_Fit->getTH1()->GetXaxis()->GetXmin(), Vx_Z_Fit->getTH1()->GetXaxis()->GetXmax());
1198  myGaussFit->SetLineColor(2);
1199  myGaussFit->SetLineWidth(2);
1200  myGaussFit->SetParName(0,"Ampl.");
1201  myGaussFit->SetParName(1,"#mu");
1202  myGaussFit->SetParName(2,"#sigma");
1203 
1204  myGaussFit->SetParameter(0, Vx_X_Fit->getTH1()->GetMaximum());
1205  myGaussFit->SetParameter(1, Vx_X_Fit->getTH1()->GetMean());
1206  myGaussFit->SetParameter(2, Vx_X_Fit->getTH1()->GetRMS());
1207  minXfit = Vx_X_Fit->getTH1()->GetBinLowEdge(1);
1208  for (int i = 0; i < Vx_X_Fit->getTH1()->GetNbinsX(); i++)
1209  {
1210  if (Vx_X_Fit->getTH1()->GetBinContent(i+1) > 0)
1211  {
1212  minXfit = Vx_X_Fit->getTH1()->GetBinLowEdge(i+1);
1213  break;
1214  }
1215  }
1216  maxXfit = Vx_X_Fit->getTH1()->GetBinLowEdge(Vx_X_Fit->getTH1()->GetNbinsX());
1217  for (int i = Vx_X_Fit->getTH1()->GetNbinsX(); i > 0; i--)
1218  {
1219  if (Vx_X_Fit->getTH1()->GetBinContent(i) > 0)
1220  {
1221  maxXfit = Vx_X_Fit->getTH1()->GetBinLowEdge(i);
1222  break;
1223  }
1224  }
1225  myGaussFit->SetRange(minXfit - (maxXfit-minXfit)/2.,maxXfit + (maxXfit-minXfit)/2.);
1226  Vx_X_Fit->getTH1()->Fit(myGaussFit,"QR");
1227 
1228  myGaussFit->SetParameter(0, Vx_Y_Fit->getTH1()->GetMaximum());
1229  myGaussFit->SetParameter(1, Vx_Y_Fit->getTH1()->GetMean());
1230  myGaussFit->SetParameter(2, Vx_Y_Fit->getTH1()->GetRMS());
1231  minXfit = Vx_Y_Fit->getTH1()->GetBinLowEdge(1);
1232  for (int i = 0; i < Vx_Y_Fit->getTH1()->GetNbinsX(); i++)
1233  {
1234  if (Vx_Y_Fit->getTH1()->GetBinContent(i+1) > 0)
1235  {
1236  minXfit = Vx_Y_Fit->getTH1()->GetBinLowEdge(i+1);
1237  break;
1238  }
1239  }
1240  maxXfit = Vx_Y_Fit->getTH1()->GetBinLowEdge(Vx_Y_Fit->getTH1()->GetNbinsX());
1241  for (int i = Vx_Y_Fit->getTH1()->GetNbinsX(); i > 0; i--)
1242  {
1243  if (Vx_Y_Fit->getTH1()->GetBinContent(i) > 0)
1244  {
1245  maxXfit = Vx_Y_Fit->getTH1()->GetBinLowEdge(i);
1246  break;
1247  }
1248  }
1249  myGaussFit->SetRange(minXfit - (maxXfit-minXfit)/2.,maxXfit + (maxXfit-minXfit)/2.);
1250  Vx_Y_Fit->getTH1()->Fit(myGaussFit,"QR");
1251 
1252  myGaussFit->SetParameter(0, Vx_Z_Fit->getTH1()->GetMaximum());
1253  myGaussFit->SetParameter(1, Vx_Z_Fit->getTH1()->GetMean());
1254  myGaussFit->SetParameter(2, Vx_Z_Fit->getTH1()->GetRMS());
1255  minXfit = Vx_Z_Fit->getTH1()->GetBinLowEdge(1);
1256  for (int i = 0; i < Vx_Z_Fit->getTH1()->GetNbinsX(); i++)
1257  {
1258  if (Vx_Z_Fit->getTH1()->GetBinContent(i+1) > 0)
1259  {
1260  minXfit = Vx_Z_Fit->getTH1()->GetBinLowEdge(i+1);
1261  break;
1262  }
1263  }
1264  maxXfit = Vx_Z_Fit->getTH1()->GetBinLowEdge(Vx_Z_Fit->getTH1()->GetNbinsX());
1265  for (int i = Vx_Z_Fit->getTH1()->GetNbinsX(); i > 0; i--)
1266  {
1267  if (Vx_Z_Fit->getTH1()->GetBinContent(i) > 0)
1268  {
1269  maxXfit = Vx_Z_Fit->getTH1()->GetBinLowEdge(i);
1270  break;
1271  }
1272  }
1273  myGaussFit->SetRange(minXfit - (maxXfit-minXfit)/2.,maxXfit + (maxXfit-minXfit)/2.);
1274  Vx_Z_Fit->getTH1()->Fit(myGaussFit,"QR");
1275 
1276  delete myGaussFit;
1277  }
1278  else if ((nLumiFit != 0) && (lumiCounter%nLumiFit != 0) && (beginTimeOfFit != 0) && (runNumber != 0))
1279  {
1280  histTitle << "Ongoing: accumulating evts (" << lumiCounter%nLumiFit << " - " << nLumiFit << " in " << lumiCounter << " - " << maxLumiIntegration << " lumis)";
1281  fitResults->setAxisTitle(histTitle.str(), 1);
1282  if ((debugMode == true) && (outputDebugFile.is_open() == true))
1283  {
1284  outputDebugFile << "\n" << "Runnumber " << runNumber << endl;
1285  outputDebugFile << "BeginTimeOfFit " << formatTime(beginTimeOfFit >> 32) << " " << (beginTimeOfFit >> 32) << endl;
1286  outputDebugFile << "BeginLumiRange " << beginLumiOfFit << endl;
1287  outputDebugFile << histTitle.str().c_str() << "\n" << endl;
1288  }
1289  }
1290  else if ((nLumiFit == 0) || (beginTimeOfFit == 0) || (runNumber == 0))
1291  {
1292  histTitle << "Ongoing: no ongoing fits";
1293  fitResults->setAxisTitle(histTitle.str(), 1);
1294  if ((debugMode == true) && (outputDebugFile.is_open() == true)) outputDebugFile << histTitle.str().c_str() << "\n" << endl;
1295 
1296  endLumiOfFit = lumiBlock.luminosityBlock();
1297 
1298  hitCounter->getTH1()->SetBinContent(endLumiOfFit, (double)totalHits);
1299  hitCounter->getTH1()->SetBinError(endLumiOfFit, std::sqrt((double)totalHits));
1300 
1301  reset("whole");
1302  }
1303 
1304  if (internalDebug == true) cout << "[Vx3DHLTAnalyzer]::\tHistogram title: " << histTitle.str() << endl;
1305 }
unsigned int lumiCounter
MonitorElement * statusCounter
MonitorElement * dxdzlumi
unsigned int totalHits
unsigned int maxLumiIntegration
unsigned int numberFits
TH1F * getTH1F() const
unsigned int beginLumiOfFit
int MyFit(std::vector< double > *vals)
unsigned int minNentries
TH1 * getTH1() const
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
MonitorElement * Vx_Z
MonitorElement * mXlumi
void reset(std::string ResetType)
MonitorElement * mZlumi
MonitorElement * sXlumi
MonitorElement * Vx_Z_Fit
unsigned int lastLumiOfFit
void printFitParams(const std::vector< double > &fitResults)
unsigned int runNumber
MonitorElement * Vx_X_Fit
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_Fit
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(), and fftjetpfpileupcleaner_cfi::Vertices.

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:519
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, 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 != nullptr) && (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
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 891 of file Vx3DHLTAnalyzer.cc.

References gather_cfg::cout.

892 {
893  cout << "var x --> " << fitResults[0] << " +/- " << fitResults[0+nParams] << endl;
894  cout << "var y --> " << fitResults[1] << " +/- " << fitResults[1+nParams] << endl;
895  cout << "var z --> " << fitResults[2] << " +/- " << fitResults[2+nParams] << endl;
896  cout << "cov xy --> " << fitResults[3] << " +/- " << fitResults[3+nParams] << endl;
897  cout << "dydz --> " << fitResults[4] << " +/- " << fitResults[4+nParams] << endl;
898  cout << "dxdz --> " << fitResults[5] << " +/- " << fitResults[5+nParams] << endl;
899  cout << "mean x --> " << fitResults[6] << " +/- " << fitResults[6+nParams] << endl;
900  cout << "mean y --> " << fitResults[7] << " +/- " << fitResults[7+nParams] << endl;
901  cout << "mean z --> " << fitResults[8] << " +/- " << fitResults[8+nParams] << endl;
902 }
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 == "scratch")
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_X_Fit->Reset();
657  Vx_Y_Fit->Reset();
658  Vx_Z_Fit->Reset();
659 
660  Vx_ZX->Reset();
661  Vx_ZY->Reset();
662  Vx_XY->Reset();
663 
664  Vx_X_Cum->Reset();
665  Vx_Y_Cum->Reset();
666  Vx_Z_Cum->Reset();
667 
668  Vx_ZX_Cum->Reset();
669  Vx_ZY_Cum->Reset();
670  Vx_XY_Cum->Reset();
671 
672  mXlumi->Reset();
673  mYlumi->Reset();
674  mZlumi->Reset();
675 
676  sXlumi->Reset();
677  sYlumi->Reset();
678  sZlumi->Reset();
679 
680  dxdzlumi->Reset();
681  dydzlumi->Reset();
682 
683  hitCounter->Reset();
684  goodVxCounter->Reset();
685  statusCounter->Reset();
686  fitResults->Reset();
687 
688  reportSummary->Fill(-1);
689  reportSummaryMap->getTH1()->SetBinContent(1, 1, -1);
690 
691  Vertices.clear();
692 
693  lumiCounter = 0;
694  totalHits = 0;
695  beginTimeOfFit = 0;
696  endTimeOfFit = 0;
697  beginLumiOfFit = 0;
698  endLumiOfFit = 0;
699 
700  if (internalDebug == true) cout << "[Vx3DHLTAnalyzer]::\tReset issued: scratch" << endl;
701  if ((debugMode == true) && (outputDebugFile.is_open() == true)) outputDebugFile << "Reset -scratch- issued\n" << endl;
702  }
703  else if (ResetType == "whole")
704  {
705  Vx_X->Reset();
706  Vx_Y->Reset();
707  Vx_Z->Reset();
708 
709  Vx_ZX->Reset();
710  Vx_ZY->Reset();
711  Vx_XY->Reset();
712 
713  Vertices.clear();
714 
715  lumiCounter = 0;
716  totalHits = 0;
717  beginTimeOfFit = 0;
718  endTimeOfFit = 0;
719  beginLumiOfFit = 0;
720  endLumiOfFit = 0;
721 
722  if (internalDebug == true) cout << "[Vx3DHLTAnalyzer]::\tReset issued: whole" << endl;
723  if ((debugMode == true) && (outputDebugFile.is_open() == true)) outputDebugFile << "Reset -whole- issued\n" << endl;
724  }
725  else if (ResetType == "fit")
726  {
727  Vx_X_Fit->Reset();
728  Vx_Y_Fit->Reset();
729  Vx_Z_Fit->Reset();
730 
731  if (internalDebug == true) cout << "[Vx3DHLTAnalyzer]::\tReset issued: fit" << endl;
732  if ((debugMode == true) && (outputDebugFile.is_open() == true)) outputDebugFile << "Reset -fit- issued\n" << endl;
733  }
734  else if (ResetType == "hitCounter")
735  {
736  totalHits = 0;
737 
738  if (internalDebug == true) cout << "[Vx3DHLTAnalyzer]::\tReset issued: hitCounter" << endl;
739  if ((debugMode == true) && (outputDebugFile.is_open() == true)) outputDebugFile << "Reset -hitCounter- issued\n" << endl;
740  }
741 }
unsigned int lumiCounter
MonitorElement * statusCounter
MonitorElement * dxdzlumi
MonitorElement * Vx_ZX
unsigned int totalHits
unsigned int numberFits
MonitorElement * Vx_Y_Cum
unsigned int beginLumiOfFit
TH1 * getTH1() const
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
MonitorElement * Vx_ZX_Cum
MonitorElement * Vx_Z
MonitorElement * mXlumi
void Reset()
reset ME (ie. contents, errors, etc)
MonitorElement * Vx_X_Cum
std::vector< VertexType > Vertices
MonitorElement * mZlumi
MonitorElement * sXlumi
MonitorElement * Vx_Z_Fit
unsigned int lastLumiOfFit
MonitorElement * Vx_XY_Cum
unsigned int runNumber
MonitorElement * Vx_X_Fit
MonitorElement * Vx_Z_Cum
MonitorElement * hitCounter
MonitorElement * Vx_Y_Fit
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 744 of file Vx3DHLTAnalyzer.cc.

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

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

edm::TimeValue_t Vx3DHLTAnalyzer::beginTimeOfFit
private

Definition at line 150 of file Vx3DHLTAnalyzer.h.

bool Vx3DHLTAnalyzer::considerVxCovariance
private

Definition at line 164 of file Vx3DHLTAnalyzer.h.

unsigned int Vx3DHLTAnalyzer::counterVx
private

Definition at line 165 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 158 of file Vx3DHLTAnalyzer.h.

edm::TimeValue_t Vx3DHLTAnalyzer::endTimeOfFit
private

Definition at line 151 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 142 of file Vx3DHLTAnalyzer.h.

MonitorElement* Vx3DHLTAnalyzer::goodVxCounter
private

Definition at line 135 of file Vx3DHLTAnalyzer.h.

MonitorElement* Vx3DHLTAnalyzer::hitCounter
private

Definition at line 136 of file Vx3DHLTAnalyzer.h.

bool Vx3DHLTAnalyzer::internalDebug
private

Definition at line 161 of file Vx3DHLTAnalyzer.h.

unsigned int Vx3DHLTAnalyzer::lastLumiOfFit
private

Definition at line 159 of file Vx3DHLTAnalyzer.h.

unsigned int Vx3DHLTAnalyzer::lumiCounter
private

Definition at line 153 of file Vx3DHLTAnalyzer.h.

double Vx3DHLTAnalyzer::maxLongLength
private

Definition at line 167 of file Vx3DHLTAnalyzer.h.

unsigned int Vx3DHLTAnalyzer::maxLumiIntegration
private

Definition at line 86 of file Vx3DHLTAnalyzer.h.

double Vx3DHLTAnalyzer::maxTransRadius
private

Definition at line 166 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 160 of file Vx3DHLTAnalyzer.h.

unsigned int Vx3DHLTAnalyzer::numberFits
private

Definition at line 156 of file Vx3DHLTAnalyzer.h.

unsigned int Vx3DHLTAnalyzer::numberGoodFits
private

Definition at line 155 of file Vx3DHLTAnalyzer.h.

std::ofstream Vx3DHLTAnalyzer::outputDebugFile
private

Definition at line 149 of file Vx3DHLTAnalyzer.h.

std::ofstream Vx3DHLTAnalyzer::outputFile
private
double Vx3DHLTAnalyzer::pi
private

Definition at line 169 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 139 of file Vx3DHLTAnalyzer.h.

MonitorElement* Vx3DHLTAnalyzer::reportSummaryMap
private

Definition at line 140 of file Vx3DHLTAnalyzer.h.

unsigned int Vx3DHLTAnalyzer::runNumber
private
MonitorElement* Vx3DHLTAnalyzer::statusCounter
private

Definition at line 137 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 154 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 163 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 127 of file Vx3DHLTAnalyzer.h.

MonitorElement* Vx3DHLTAnalyzer::Vx_X_Fit
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 133 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 128 of file Vx3DHLTAnalyzer.h.

MonitorElement* Vx3DHLTAnalyzer::Vx_Y_Fit
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 129 of file Vx3DHLTAnalyzer.h.

MonitorElement* Vx3DHLTAnalyzer::Vx_Z_Fit
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 131 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 132 of file Vx3DHLTAnalyzer.h.

double Vx3DHLTAnalyzer::VxErrCorr
private

Definition at line 95 of file Vx3DHLTAnalyzer.h.

double Vx3DHLTAnalyzer::xPos
private

Definition at line 168 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 168 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 168 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.