10 |
|
#include "EfficiencyWeightsInterface.h" |
11 |
|
|
12 |
|
RunLumiRangeMap rlrm; |
13 |
+ |
TH1D * hpu; |
14 |
+ |
|
15 |
|
|
16 |
|
// #include "TH2D.h" |
17 |
|
// extern TH2D * h_mu_eff_idiso_2011a; |
36 |
|
rlrm.AddJSONFile(std::string("./data/Cert_160404-178078_7TeV_PromptReco_Collisions11_JSON.txt")); |
37 |
|
rlrm.AddJSONFile(std::string("./data/Cert_160404-163869_7TeV_May10ReReco_Collisions11_JSON_v3.txt")); |
38 |
|
rlrm.AddJSONFile(std::string("./data/Cert_170249-172619_7TeV_ReReco5Aug_Collisions11_JSON.txt")); |
39 |
+ |
TFile * puf = new TFile("data/PileupReweighting.Summer11DYmm_To_Run2011A.root"); |
40 |
+ |
hpu = (TH1D*)(puf->Get("puWeights")); |
41 |
|
}; |
42 |
|
|
43 |
|
void initRunLumiRangeMap(RunLumiRangeMap &rlrm) { |
121 |
|
<< endl; |
122 |
|
} |
123 |
|
|
124 |
+ |
unsigned npu; double npuw; |
125 |
|
if( !ctrl.mc ) { |
126 |
|
// not accounting for overlap atm |
127 |
|
RunLumiRangeMap::RunLumiPairType rl(info->runNum, info->lumiSec); |
130 |
|
evtfail |= (1<<EVTFAIL_JSON); |
131 |
|
return evtfail; |
132 |
|
} |
133 |
+ |
} else { |
134 |
+ |
npu = info->nPU; |
135 |
+ |
npuw = hpu->GetBinContent(hpu->FindBin(npu)); |
136 |
|
} |
137 |
|
|
138 |
|
|
175 |
|
const mithep::TMuon *mu = (mithep::TMuon*)((*muonArr)[i]); |
176 |
|
unsigned muonfail; |
177 |
|
if( ctrl.muSele == "ksWW" ) |
178 |
< |
muonfail = passMuonSelection(mu); |
178 |
> |
muonfail = passKSMuonSelection(mu); |
179 |
|
else |
180 |
|
muonfail = passMuonSelectionZZ(mu); |
181 |
|
if( ctrl.debug ) { |
186 |
|
} |
187 |
|
if ( !muonfail ) { |
188 |
|
SimpleLepton tmplep; |
189 |
< |
tmplep.vec.SetPtEtaPhiM(mu->pt, |
189 |
> |
|
190 |
> |
float pt = mu->pt; |
191 |
> |
if( ctrl.do_escale_up ) pt*=(1.01); |
192 |
> |
if( ctrl.do_escale_down ) pt*=(0.99); |
193 |
> |
|
194 |
> |
tmplep.vec.SetPtEtaPhiM(pt, |
195 |
|
mu->eta, |
196 |
|
mu->phi, |
197 |
|
105.658369e-3); |
198 |
+ |
|
199 |
|
tmplep.type = 13; |
200 |
|
tmplep.index = i; |
201 |
|
tmplep.charge = mu->q; |
289 |
|
} |
290 |
|
if ( !FAIL && !isMuonOverlap ) { |
291 |
|
SimpleLepton tmplep; |
292 |
< |
tmplep.vec.SetPtEtaPhiM( ele->pt, |
292 |
> |
|
293 |
> |
float pt = ele->pt; |
294 |
> |
if( ctrl.do_escale_up ) pt*=(1.02); |
295 |
> |
if( ctrl.do_escale_down ) pt*=(0.98); |
296 |
> |
|
297 |
> |
tmplep.vec.SetPtEtaPhiM( pt, |
298 |
|
ele->eta, |
299 |
|
ele->phi, |
300 |
|
0.51099892e-3 ); |
597 |
|
|
598 |
|
if( abs(lepvec[i].type) == 13 ) { |
599 |
|
|
600 |
+ |
/* |
601 |
|
float reliso = lepvec[i].isoPF03/lepvec[i].vec.Pt(); |
602 |
|
if( lepvec[i].isEB && lepvec[i].vec.Pt() > 20 && reliso > PFISO_MU_LOOSE_EB_HIGHPT ) { //0.13 |
603 |
|
failiso = true; |
615 |
|
failiso = true; |
616 |
|
break; |
617 |
|
} |
618 |
+ |
*/ |
619 |
|
} |
620 |
|
} |
621 |
|
} else if ( ctrl.isoScheme == "pairwise" ) { |
766 |
|
|
767 |
|
vector< pair <double,double> > wlegs; // pair here is eff & err |
768 |
|
vector< pair <float,float> > mvec; // pair here is eta & pt |
769 |
< |
vector< pair <float,float> > evec; // pair here is eta & pt |
769 |
> |
// now deal with medium vs loose |
770 |
> |
// vector< pair <float,float> > evec; // pair here is eta & pt |
771 |
> |
vector< pair< bool, pair <float,float> > > evec; // pair here is eta & pt |
772 |
|
|
773 |
|
for( int k=0; k<lepvec.size(); k++ ) { |
774 |
|
if( !(lepvec[k].is4l) ) continue; |
777 |
|
wlegs.push_back( muonPerLegOfflineEfficiencyWeight( fabs(lepvec[k].vec.Eta()), |
778 |
|
lepvec[k].vec.Pt() ) ); |
779 |
|
} else { |
780 |
< |
evec.push_back( std::pair<float,float> (fabs(lepvec[k].vec.Eta()), lepvec[k].vec.Pt()) ); |
780 |
> |
|
781 |
> |
// now deal with medium vs loose |
782 |
> |
// evec.push_back( std::pair<float,float> (fabs(lepvec[k].vec.Eta()), lepvec[k].vec.Pt()) ); |
783 |
> |
|
784 |
> |
std::pair<float,float> tmppair(fabs(lepvec[k].vec.Eta()), lepvec[k].vec.Pt()); |
785 |
> |
evec.push_back( std::pair<bool, std::pair<float,float> > (lepvec[k].isTight, tmppair) ); |
786 |
> |
|
787 |
|
wlegs.push_back( elePerLegOfflineEfficiencyWeight( fabs(lepvec[k].vec.Eta()), |
788 |
|
lepvec[k].vec.Pt() ) ); |
760 |
– |
// wlegs.push_back( pair<double,double> (1.,0.) ); |
789 |
|
} |
790 |
|
} |
791 |
|
|
796 |
|
pair<double,double> onpair = getOnlineEfficiencyWeight( mvec, evec ); |
797 |
|
w_online = onpair.first; |
798 |
|
werr_online = onpair.second; |
799 |
+ |
|
800 |
|
} // if mc |
801 |
|
|
802 |
|
|
847 |
|
passtuple->SetBranchAddress("werroff", &werr_offline ); |
848 |
|
passtuple->SetBranchAddress("won", &w_online ); |
849 |
|
passtuple->SetBranchAddress("werron", &werr_online ); |
850 |
+ |
passtuple->SetBranchAddress("npu", &npu ); |
851 |
+ |
passtuple->SetBranchAddress("npuw", &npuw ); |
852 |
+ |
passtuple->SetBranchAddress("gchannel", &gchannel); |
853 |
|
} |
854 |
|
if( ctrl.btag ) { |
855 |
|
passtuple->SetBranchAddress("l3tche", &l3tche); |
862 |
|
passtuple->SetBranchAddress("l4csvMva", &l4csvMva); |
863 |
|
} |
864 |
|
|
833 |
– |
if( ctrl.mc ) passtuple->SetBranchAddress("gchannel", &gchannel); |
865 |
|
passtuple->Fill( ); |
835 |
– |
|
866 |
|
} |
867 |
|
|
868 |
|
if( ctrl.debug ) cout << "run: " << info->runNum |