1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
|
#ifndef Calibration_EcalCalibAlgos_Pi0FixedMassWindowCalibration_h
#define Calibration_EcalCalibAlgos_Pi0FixedMassWindowCalibration_h
#include <memory>
#include <string>
#include <iostream>
#include <vector>
#include "DataFormats/GeometryVector/interface/GlobalPoint.h"
// Framework
#include "FWCore/Framework/interface/LooperFactory.h"
#include "FWCore/Framework/interface/ESProducerLooper.h"
#include "FWCore/Framework/interface/Frameworkfwd.h"
#include "FWCore/MessageLogger/interface/MessageLogger.h"
#include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h"
#include "FWCore/Framework/interface/Event.h"
#include "FWCore/Framework/interface/EventSetup.h"
#include "CondFormats/EcalObjects/interface/EcalIntercalibConstants.h"
#include "CondFormats/DataRecord/interface/EcalIntercalibConstantsRcd.h"
#include "DataFormats/EcalRecHit/interface/EcalRecHit.h"
#include "DataFormats/EcalRecHit/interface/EcalRecHitCollections.h"
#include "DataFormats/EcalDetId/interface/EcalSubdetector.h"
#include "DataFormats/EcalDetId/interface/EBDetId.h"
#include "DataFormats/EcalDetId/interface/EEDetId.h"
#include "DataFormats/EcalDetId/interface/ESDetId.h"
#include "DataFormats/DetId/interface/DetId.h"
#include "Geometry/CaloGeometry/interface/CaloGeometry.h"
#include "Geometry/Records/interface/CaloGeometryRecord.h"
#include "FWCore/ParameterSet/interface/ParameterSet.h"
#include "RecoEcal/EgammaClusterAlgos/interface/IslandClusterAlgo.h"
#include "RecoEcal/EgammaCoreTools/interface/PositionCalc.h"
#include "RecoEcal/EgammaCoreTools/interface/ClusterShapeAlgo.h"
#include "Geometry/CaloTopology/interface/CaloSubdetectorTopology.h"
class Pi0FixedMassWindowCalibration : public edm::ESProducerLooper {
public:
/// Constructor
Pi0FixedMassWindowCalibration(const edm::ParameterSet& iConfig);
/// Destructor
~Pi0FixedMassWindowCalibration() override;
static void fillDescriptions(edm::ConfigurationDescriptions& descriptions);
/// Dummy implementation (job done in duringLoop)
virtual void produce(edm::Event&, const edm::EventSetup&) {}
/// Called at beginning of job
void beginOfJob() override;
/// Called at end of job
void endOfJob() override;
/// Called at beginning of loop
void startingNewLoop(unsigned int iLoop) override;
/// Called at end of loop
Status endOfLoop(const edm::EventSetup&, unsigned int iLoop) override;
/// Called at each event
Status duringLoop(const edm::Event&, const edm::EventSetup&) override;
private:
// static const double PDGPi0Mass;
int nevent;
const unsigned int theMaxLoops;
const std::string ecalHitsProducer_;
const std::string barrelHits_;
IslandClusterAlgo::VerbosityLevel verbosity;
std::string barrelHitProducer_;
std::string barrelHitCollection_;
std::string barrelClusterCollection_;
std::string clustershapecollectionEB_;
std::string barrelClusterShapeAssociation_;
PositionCalc posCalculator_; // position calculation algorithm
ClusterShapeAlgo shapeAlgo_; // cluster shape algorithm
IslandClusterAlgo* island_p;
// Selection algorithm parameters
double selePi0PtGammaOneMin_;
double selePi0PtGammaTwoMin_;
double selePi0DRBelt_;
double selePi0DetaBelt_;
double selePi0PtPi0Min_;
double selePi0S4S9GammaOneMin_;
double selePi0S4S9GammaTwoMin_;
double selePi0S9S25GammaOneMin_;
double selePi0S9S25GammaTwoMin_;
double selePi0EtBeltIsoRatioMax_;
double selePi0MinvMeanFixed_;
double selePi0MinvSigmaFixed_;
std::vector<DetId> barrelCells;
// input calibration constants
double oldCalibs_barl[85][360][2];
double newCalibs_barl[85][360][2];
double wxtals[85][360][2];
double mwxtals[85][360][2];
// steering parameters
edm::ParameterSet theParameterSet;
// map for all RecHits from ECal:
std::map<DetId, EcalRecHit>* recHitsEB_map;
const EcalRecHitCollection* ecalRecHitBarrelCollection;
const EcalRecHitCollection* recalibEcalRecHitCollection;
const edm::EDGetTokenT<EcalRecHitCollection> recHitToken_;
const edm::ESGetToken<EcalIntercalibConstants, EcalIntercalibConstantsRcd> intercalibConstantsToken_;
const edm::ESGetToken<CaloGeometry, CaloGeometryRecord> geometryToken_;
bool isfirstcall_;
};
#endif
|