23 #include "TLorentzVector.h" 38 produces<edm::ValueMap<float>>(
"costheta");
39 produces<edm::ValueMap<float>>(
"sin2theta");
40 produces<edm::ValueMap<float>>(
"tanphi");
54 std::vector<float> values2;
55 std::vector<float> values3;
58 double costheta = -10.0;
59 double sin2theta = -10.0;
60 double tanphi = -10.0;
64 TLorentzVector
mu(0., 0., 0., 0.);
65 TLorentzVector
mubar(0., 0., 0., 0.);
67 int charge1 = 0, charge2 = 0;
68 double res[3] = {-10., -10., -10.};
72 for (boson = bosons->begin(); boson != endbosons; ++boson) {
76 if (!(
nullptr == daughter1 ||
nullptr == daughter2)) {
77 charge1 = daughter1->
charge();
78 charge2 = daughter2->
charge();
79 isOS = charge1 * charge2 < 0;
80 if (isOS && charge1 < 0) {
81 mu.SetPxPyPzE(daughter1->
px(), daughter1->
py(), daughter1->
pz(), daughter1->
energy());
82 mubar.SetPxPyPzE(daughter2->
px(), daughter2->
py(), daughter2->
pz(), daughter2->
energy());
84 if (isOS && charge1 > 0) {
85 mu.SetPxPyPzE(daughter2->
px(), daughter2->
py(), daughter2->
pz(), daughter2->
energy());
86 mubar.SetPxPyPzE(daughter1->
px(), daughter1->
py(), daughter1->
pz(), daughter1->
energy());
96 values.push_back(costheta);
97 values2.push_back(sin2theta);
98 values3.push_back(tanphi);
102 auto valMap = std::make_unique<ValueMap<float>>();
109 auto valMap2 = std::make_unique<ValueMap<float>>();
111 filler2.insert(bosons, values2.begin(), values2.end());
116 auto valMap3 = std::make_unique<ValueMap<float>>();
118 filler3.insert(bosons, values3.begin(), values3.end());
virtual double energy() const =0
energy
virtual const Candidate * daughter(size_type i) const =0
return daughter at a given position, i = 0, ... numberOfDaughters() - 1 (read only mode) ...
#define DEFINE_FWK_MODULE(type)
virtual double pz() const =0
z coordinate of momentum vector
ColinsSoperVariablesComputer(const edm::ParameterSet &iConfig)
const edm::EDGetTokenT< edm::View< reco::Candidate > > parentBosonToken_
virtual int charge() const =0
electric charge
virtual double py() const =0
y coordinate of momentum vector
virtual double px() const =0
x coordinate of momentum vector
void calCSVariables(TLorentzVector mu, TLorentzVector mubar, double *res, bool swap)
boost::indirect_iterator< typename seq_t::const_iterator > const_iterator
void produce(edm::StreamID, edm::Event &iEvent, const edm::EventSetup &iSetup) const override
~ColinsSoperVariablesComputer() override