4 |
|
#include "MitAna/DataTree/interface/Names.h" |
5 |
|
#include "MitAna/DataTree/interface/EmbedWeightCol.h" |
6 |
|
#include "MitProd/ObjectService/interface/ObjectService.h" |
7 |
+ |
#include "SimDataFormats/GeneratorProducts/interface/GenFilterInfo.h" |
8 |
|
|
9 |
|
using namespace std; |
10 |
|
using namespace edm; |
13 |
|
//-------------------------------------------------------------------------------------------------- |
14 |
|
FillerEmbedWeight::FillerEmbedWeight(const ParameterSet &cfg, const char *name, bool active) : |
15 |
|
BaseFiller(cfg,name,active), |
16 |
< |
edmName_(Conf().getUntrackedParameter<string>("edmName","generator_weight")), |
16 |
> |
edmName_ (Conf().getUntrackedParameter<string>("edmName" ,"generator_weight")), |
17 |
> |
edmSpinnerName_(Conf().getUntrackedParameter<string>("edmSpinnerName","TauSpinnerRec")), |
18 |
> |
edmMuEffName_ (Conf().getUntrackedParameter<string>("edmMuEffName" ,"ZmumuEvtSelEffCorrWeightProducer")), |
19 |
> |
edmMuRadName_ (Conf().getUntrackedParameter<string>("edmMuRadName" ,"muonRadiationCorrWeightProducer")), |
20 |
> |
edmKineReweightGenName_ (Conf().getUntrackedParameter<string>("edmKineReweightGenName" ,"embeddingKineReweightGENembedding")), |
21 |
> |
edmKineReweightRecName_ (Conf().getUntrackedParameter<string>("edmKineReweightRecName" ,"embeddingKineReweightRECembedding")), |
22 |
> |
|
23 |
> |
genInfo_(Conf().getUntrackedParameter<bool> ("useGenInfo","True")), |
24 |
> |
recHit_ (Conf().getUntrackedParameter<bool> ("useRecHit","True")), |
25 |
|
mitName_(Conf().getUntrackedParameter<string>("mitName",Names::gkEmbedWeightBrn)), |
26 |
|
embedWeight_(new mithep::EmbedWeightArr) |
27 |
|
{ |
51 |
|
{ |
52 |
|
// Fill missing energy from edm collection into our collection. |
53 |
|
embedWeight_->Delete(); |
54 |
< |
Handle<double> hEmbedWeight; |
55 |
< |
//GetProduct(edmName_, hEmbedWeight, event); |
56 |
< |
event.getByLabel(edm::InputTag(edmName_,"weight","EmbeddedRECO"),hEmbedWeight); |
57 |
< |
|
58 |
< |
const double inEmbedWeight = *(hEmbedWeight.product()); |
54 |
> |
|
55 |
> |
double inEmbedWeightValue = 0; |
56 |
> |
double inSpinnerWeightValue = 0; |
57 |
> |
double inSpinnerFlipWeightValue = 0; |
58 |
> |
double inSpinnerPlusWeightValue = 0; |
59 |
> |
double inSpinnerMinusWeightValue = 0; |
60 |
> |
double inMuEffWeightValue = 0; |
61 |
> |
double inMuEffWeightUpValue = 0; |
62 |
> |
double inMuEffWeightDownValue = 0; |
63 |
> |
double inMuRadWeightValue = 0; |
64 |
> |
double inMuRadWeightUpValue = 0; |
65 |
> |
double inMuRadWeightDownValue = 0; |
66 |
> |
double inGenTau2PtVsGenTau1PtGenValue = 0; |
67 |
> |
double inGenTau2EtaVsGenTau1EtaGenValue = 0; |
68 |
> |
double inDiTauMassVsGenDiTauPtGenValue = 0; |
69 |
> |
double inGenTau2PtVsGenTau1PtRecValue = 0; |
70 |
> |
double inGenTau2EtaVsGenTau1EtaRecValue= 0; |
71 |
> |
double inDiTauMassVsGenDiTauPtRecValue = 0; |
72 |
> |
|
73 |
> |
if(!genInfo_) { |
74 |
> |
Handle<double> hEmbedWeight; |
75 |
> |
event.getByLabel(edm::InputTag(edmName_,"weight","EmbeddedRECO"),hEmbedWeight); |
76 |
> |
inEmbedWeightValue = *(hEmbedWeight.product()); |
77 |
> |
} else { |
78 |
> |
edm::Handle<GenFilterInfo> hGenFilterInfo; |
79 |
> |
event.getByLabel(edm::InputTag(edmName_, "minVisPtFilter", "EmbeddedRECO"), hGenFilterInfo); |
80 |
> |
inEmbedWeightValue = hGenFilterInfo->filterEfficiency(); |
81 |
> |
} |
82 |
> |
if(recHit_) { |
83 |
> |
Handle<double> hSpinnerWeight; |
84 |
> |
event.getByLabel(edm::InputTag(edmSpinnerName_,"TauSpinnerWT","EmbeddedSPIN"),hSpinnerWeight); |
85 |
> |
inSpinnerWeightValue = *(hSpinnerWeight.product()); |
86 |
> |
|
87 |
> |
Handle<double> hSpinnerWeightFlip; |
88 |
> |
event.getByLabel(edm::InputTag(edmSpinnerName_,"TauSpinnerWTFlip","EmbeddedSPIN"),hSpinnerWeightFlip); |
89 |
> |
inSpinnerFlipWeightValue = *(hSpinnerWeightFlip.product()); |
90 |
> |
|
91 |
> |
Handle<double> hSpinnerWeightMinus; |
92 |
> |
event.getByLabel(edm::InputTag(edmSpinnerName_,"TauSpinnerWThplus","EmbeddedSPIN"),hSpinnerWeightMinus); |
93 |
> |
inSpinnerMinusWeightValue = *(hSpinnerWeightMinus.product()); |
94 |
> |
|
95 |
> |
Handle<double> hSpinnerWeightPlus; |
96 |
> |
event.getByLabel(edm::InputTag(edmSpinnerName_,"TauSpinnerWThminus","EmbeddedSPIN"),hSpinnerWeightPlus); |
97 |
> |
inSpinnerPlusWeightValue = *(hSpinnerWeightPlus.product()); |
98 |
> |
|
99 |
> |
Handle<double> hMuEffWeight; |
100 |
> |
event.getByLabel(edm::InputTag(edmMuEffName_,"weight","EmbeddedRECO"),hMuEffWeight); |
101 |
> |
inMuEffWeightValue = *(hMuEffWeight.product()); |
102 |
> |
|
103 |
> |
Handle<double> hMuEffWeightUp; |
104 |
> |
event.getByLabel(edm::InputTag(edmMuEffName_,"weightUp","EmbeddedRECO"),hMuEffWeightUp); |
105 |
> |
inMuEffWeightUpValue = *(hMuEffWeightUp.product()); |
106 |
> |
|
107 |
> |
Handle<double> hMuEffWeightDown; |
108 |
> |
event.getByLabel(edm::InputTag(edmMuEffName_,"weightDown","EmbeddedRECO"),hMuEffWeightDown); |
109 |
> |
inMuEffWeightDownValue = *(hMuEffWeightDown.product()); |
110 |
> |
|
111 |
> |
Handle<double> hMuRadWeight; |
112 |
> |
event.getByLabel(edm::InputTag(edmMuRadName_,"weight","EmbeddedRECO"),hMuRadWeight); |
113 |
> |
inMuRadWeightValue = *(hMuRadWeight.product()); |
114 |
> |
|
115 |
> |
Handle<double> hMuRadWeightUp; |
116 |
> |
event.getByLabel(edm::InputTag(edmMuRadName_,"weightUp","EmbeddedRECO"),hMuRadWeightUp); |
117 |
> |
inMuRadWeightUpValue = *(hMuRadWeightUp.product()); |
118 |
> |
|
119 |
> |
Handle<double> hMuRadWeightDown; |
120 |
> |
event.getByLabel(edm::InputTag(edmMuRadName_,"weightDown","EmbeddedRECO"),hMuRadWeightDown); |
121 |
> |
inMuRadWeightDownValue = *(hMuRadWeightDown.product()); |
122 |
> |
|
123 |
> |
Handle<double> hGenTau2PtVsGenTau1PtGen; |
124 |
> |
event.getByLabel(edm::InputTag(edmKineReweightGenName_,"genTau2PtVsGenTau1Pt"),hGenTau2PtVsGenTau1PtGen); |
125 |
> |
inGenTau2PtVsGenTau1PtGenValue = *(hGenTau2PtVsGenTau1PtGen.product()); |
126 |
> |
|
127 |
> |
Handle<double> hGenTau2EtaVsGenTau1EtaGen; |
128 |
> |
event.getByLabel(edm::InputTag(edmKineReweightGenName_,"genTau2EtaVsGenTau1Eta"),hGenTau2EtaVsGenTau1EtaGen); |
129 |
> |
inGenTau2EtaVsGenTau1EtaGenValue = *(hGenTau2EtaVsGenTau1EtaGen.product()); |
130 |
> |
|
131 |
> |
Handle<double> hDiTauMassVsGenDiTauPtGen; |
132 |
> |
event.getByLabel(edm::InputTag(edmKineReweightGenName_,"genDiTauMassVsGenDiTauPt"),hDiTauMassVsGenDiTauPtGen); |
133 |
> |
inDiTauMassVsGenDiTauPtGenValue = *(hDiTauMassVsGenDiTauPtGen.product()); |
134 |
> |
|
135 |
> |
Handle<double> hGenTau2PtVsGenTau1PtRec; |
136 |
> |
event.getByLabel(edm::InputTag(edmKineReweightRecName_,"genTau2PtVsGenTau1Pt"),hGenTau2PtVsGenTau1PtRec); |
137 |
> |
inGenTau2PtVsGenTau1PtRecValue = *(hGenTau2PtVsGenTau1PtRec.product()); |
138 |
> |
|
139 |
> |
Handle<double> hGenTau2EtaVsGenTau1EtaRec; |
140 |
> |
event.getByLabel(edm::InputTag(edmKineReweightRecName_,"genTau2EtaVsGenTau1Eta"),hGenTau2EtaVsGenTau1EtaRec); |
141 |
> |
inGenTau2EtaVsGenTau1EtaRecValue = *(hGenTau2EtaVsGenTau1EtaRec.product()); |
142 |
> |
|
143 |
> |
Handle<double> hDiTauMassVsGenDiTauPtRec; |
144 |
> |
event.getByLabel(edm::InputTag(edmKineReweightRecName_,"genDiTauMassVsGenDiTauPt"),hDiTauMassVsGenDiTauPtRec); |
145 |
> |
inDiTauMassVsGenDiTauPtRecValue = *(hDiTauMassVsGenDiTauPtRec.product()); |
146 |
> |
} |
147 |
> |
const double inEmbedWeight = inEmbedWeightValue; |
148 |
> |
const double inSpinnerWeight = inSpinnerWeightValue; |
149 |
> |
const double inSpinnerFlipWeight = inSpinnerFlipWeightValue; |
150 |
> |
const double inSpinnerPlusWeight = inSpinnerPlusWeightValue; |
151 |
> |
const double inSpinnerMinusWeight = inSpinnerMinusWeightValue; |
152 |
> |
const double inMuEffWeight = inMuEffWeightValue; |
153 |
> |
const double inMuEffWeightUp = inMuEffWeightUpValue; |
154 |
> |
const double inMuEffWeightDown = inMuEffWeightDownValue; |
155 |
> |
const double inMuRadWeight = inMuRadWeightValue; |
156 |
> |
const double inMuRadWeightUp = inMuRadWeightUpValue; |
157 |
> |
const double inMuRadWeightDown = inMuRadWeightDownValue; |
158 |
> |
const double inGenTau2PtVsGenTau1PtGen = inGenTau2PtVsGenTau1PtGenValue; |
159 |
> |
const double inGenTau2EtaVsGenTau1EtaGen = inGenTau2EtaVsGenTau1EtaGenValue; |
160 |
> |
const double inDiTauMassVsGenDiTauPtGen = inDiTauMassVsGenDiTauPtGenValue; |
161 |
> |
const double inGenTau2PtVsGenTau1PtRec = inGenTau2PtVsGenTau1PtRecValue; |
162 |
> |
const double inGenTau2EtaVsGenTau1EtaRec = inGenTau2EtaVsGenTau1EtaRecValue; |
163 |
> |
const double inDiTauMassVsGenDiTauPtRec = inDiTauMassVsGenDiTauPtRecValue; |
164 |
> |
|
165 |
|
mithep::EmbedWeight *embedWeight = embedWeight_->Allocate(); |
166 |
< |
new (embedWeight) mithep::EmbedWeight(inEmbedWeight); |
167 |
< |
//embedWeight->SetWeight(inEmbedWeight); |
166 |
> |
new (embedWeight) mithep::EmbedWeight(); |
167 |
> |
|
168 |
> |
embedWeight->SetGenWeight (inEmbedWeight); |
169 |
> |
embedWeight->SetSpinnerWeight (inSpinnerWeight); |
170 |
> |
embedWeight->SetSpinnerFlipWeight (inSpinnerFlipWeight); |
171 |
> |
embedWeight->SetSpinnerPlusWeight (inSpinnerPlusWeight); |
172 |
> |
embedWeight->SetSpinnerMinusWeight (inSpinnerMinusWeight); |
173 |
> |
embedWeight->SetMuEffWeight (inMuEffWeight); |
174 |
> |
embedWeight->SetMuEffWeightUp (inMuEffWeightUp); |
175 |
> |
embedWeight->SetMuEffWeightDown (inMuEffWeightDown); |
176 |
> |
embedWeight->SetMuRadWeight (inMuRadWeight); |
177 |
> |
embedWeight->SetMuRadWeightUp (inMuRadWeightUp); |
178 |
> |
embedWeight->SetMuRadWeightDown (inMuRadWeightDown); |
179 |
> |
embedWeight->SetGenTau2VsGenTau1PtGen (inGenTau2PtVsGenTau1PtGen); |
180 |
> |
embedWeight->SetGenTau2VsGenTau1EtaGen (inGenTau2EtaVsGenTau1EtaGen); |
181 |
> |
embedWeight->SetDiTauMassVsGenDiTauPtGen (inDiTauMassVsGenDiTauPtGen); |
182 |
> |
embedWeight->SetGenTau2VsGenTau1PtRec (inGenTau2PtVsGenTau1PtRec); |
183 |
> |
embedWeight->SetGenTau2VsGenTau1EtaRec (inGenTau2EtaVsGenTau1EtaRec); |
184 |
> |
embedWeight->SetDiTauMassVsGenDiTauPtRec (inDiTauMassVsGenDiTauPtRec); |
185 |
> |
embedWeight->SetWeight(); |
186 |
|
embedWeight_->Trim(); |
187 |
|
} |