46 nbinsMass_(pset.getUntrackedParameter<unsigned
int>(
"nbinsMass")),
47 nbinsPt_(pset.getUntrackedParameter<unsigned
int>(
"nbinsPt")),
48 nbinsAng_(pset.getUntrackedParameter<unsigned
int>(
"nbinsAng")),
50 massMax_(pset.getUntrackedParameter<double>(
"massMax")),
51 ptMax_(pset.getUntrackedParameter<double>(
"ptMax")),
52 angMax_(pset.getUntrackedParameter<double>(
"angMax")),
53 massResMax_(pset.getUntrackedParameter<double>(
"massResMax")) {
54 cout <<
">>> Z Histogrammer constructor" << endl;
60 h_nZ_ = ZHisto.
make<TH1F>(
"ZNumber",
"number of Z particles", 11, -0.5, 10.5);
69 h_nZMC_ = ZMCHisto.
make<TH1F>(
"ZMCNumber",
"number of Z MC particles", 11, -0.5, 10.5);
93 h_mResZ_ = ZResHisto.
make<TH1F>(
"ZMassResolution",
"Z mass Resolution (GeV/c^{2})",
95 h_ptResZ_ = ZResHisto.
make<TH1F>(
"ZPtResolution",
"Z p_{t} Resolution (GeV/c)",
97 h_phiResZ_ = ZResHisto.
make<TH1F>(
"ZPhiResolution",
"Z #phi Resolution",
99 h_thetaResZ_ = ZResHisto.
make<TH1F>(
"ZThetaResolution",
"Z #theta Resolution",
101 h_etaResZ_ = ZResHisto.
make<TH1F>(
"ZEtaResolution",
"Z #eta Resolution",
106 "Z Reco vs matched final state #mu #mu mass Difference (GeV/c^{2})",
109 "Z Reco vs matched final state #mu #mu mass Ratio",
112 "Z vs final state #mu #mu MC mass Difference (GeV/c^{2})",
115 "Z vs final state #mu #mu MC mass Ratio",
120 cout <<
">>> Z Histogrammer analyze" << endl;
128 for(
unsigned int i = 0;
i < z->
size(); ++
i) {
138 if(zMCMatch.
isNonnull() && zMCMatch->pdgId()==23) {
139 h_mResZ_->Fill(zCandRef->mass() - zMCMatch->mass());
140 h_ptResZ_->Fill(zCandRef->pt() - zMCMatch->pt());
141 h_phiResZ_->Fill(zCandRef->phi() - zMCMatch->phi());
142 h_thetaResZ_->Fill(zCandRef->theta() - zMCMatch->theta());
143 h_etaResZ_->Fill(zCandRef->eta() - zMCMatch->eta());
145 const Candidate * dau0 = zMCMatch->daughter(0);
146 const Candidate * dau1 = zMCMatch->daughter(1);
161 double invMass = (dau0->
p4()+dau1->
p4()).
mass();
168 for(
unsigned int i = 0;
i < gen->
size(); ++
i) {
170 if((genCand.
pdgId() == 23) && (genCand.
status() == 2))
172 <<
" daughters" << endl;
173 if((genCand.
pdgId() == 23)&&(genCand.
status() == 3)) {
175 <<
" daughters" << endl;
198 cout <<
">>> The muon " << j
202 cout <<
">>> Mu " << j
203 <<
" daughter MC " <<
k 204 <<
" PDG Id " << dauMuGen->
pdgId()
205 <<
", status " << dauMuGen->
status()
206 <<
", charge " << dauMuGen->
charge()
209 pZ += dauMuGen->
p4();
216 double mZ = pZ.mass();
bool isNonnull() const
Checks for non-null.
void analyze(const edm::Event &event, const edm::EventSetup &setup) override
#define DEFINE_FWK_MODULE(type)
virtual const Candidate * daughter(size_type i) const =0
return daughter at a given position, i = 0, ... numberOfDaughters() - 1 (read only mode) ...
def setup(process, global_tag, zero_tesla=False)
EDGetTokenT< ProductType > consumes(edm::InputTag const &tag)
virtual int status() const =0
status word
virtual const LorentzVector & p4() const =0
four-momentum Lorentz vector
virtual int pdgId() const =0
PDG identifier.
Abs< T >::type abs(const T &t)
ZHistogrammer(const edm::ParameterSet &pset)
T * make(const Args &...args) const
make new ROOT object
def gen(fragment, howMuch)
Production test section ####.
unsigned int nbinsMassRes_
virtual double theta() const =0
momentum polar angle
virtual double eta() const =0
momentum pseudorapidity
TFileDirectory mkdir(const std::string &dir, const std::string &descr="")
create a new subdirectory
virtual double pt() const =0
transverse momentum
edm::EDGetTokenT< reco::CandidateCollection > zToken_
virtual double mass() const =0
mass
edm::EDGetTokenT< reco::CandidateCollection > genToken_
virtual double rapidity() const =0
rapidity
virtual int charge() const =0
electric charge
edm::EDGetTokenT< reco::CandMatchMap > matchToken_
std::pair< typename Association::data_type::first_type, double > match(Reference key, Association association, bool bestMatchByMaxValue)
Generic matching function.
virtual size_type numberOfDaughters() const =0
number of daughters
virtual double phi() const =0
momentum azimuthal angle
math::PtEtaPhiELorentzVectorF LorentzVector