62 std::vector<float> values2;
63 std::vector<float> values3;
66 double costheta = -10.0;
67 double sin2theta = -10.0;
68 double tanphi = -10.0;
72 TLorentzVector
mu (0., 0., 0., 0.);
73 TLorentzVector
mubar (0., 0., 0., 0.);
75 int charge1=0, charge2 =0;
76 double res[3] = { -10., -10., -10.};
80 for (boson = bosons->begin(); boson != endbosons; ++boson) {
82 daughter1 = boson->daughter(0);
83 daughter2 = boson->daughter(1);
85 if( !(
nullptr==daughter1 ||
nullptr==daughter2) ) {
87 charge1 = daughter1->
charge();
88 charge2 = daughter2->
charge();
89 isOS = charge1*charge2<0;
90 if(isOS && charge1<0) {
91 mu.SetPxPyPzE( daughter1->
px(), daughter1->
py(), daughter1->
pz(), daughter1->
energy() );
92 mubar.SetPxPyPzE( daughter2->
px(), daughter2->
py(), daughter2->
pz(), daughter2->
energy() );
94 if(isOS && charge1>0) {
95 mu.SetPxPyPzE( daughter2->
px(), daughter2->
py(), daughter2->
pz(), daughter2->
energy() );
96 mubar.SetPxPyPzE( daughter1->
px(), daughter1->
py(), daughter1->
pz(), daughter1->
energy() );
107 values.push_back(costheta);
108 values2.push_back(sin2theta);
109 values3.push_back(tanphi);
114 auto valMap = std::make_unique<ValueMap<float>>();
116 filler.insert(bosons, values.begin(), values.end());
122 auto valMap2 = std::make_unique<ValueMap<float>>();
124 filler2.insert(bosons, values2.begin(), values2.end());
129 auto valMap3 = std::make_unique<ValueMap<float>>();
131 filler3.insert(bosons, values3.begin(), values3.end());
virtual double pz() const =0
z coordinate of momentum vector
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
bool getByToken(EDGetToken token, Handle< PROD > &result) const
virtual double energy() const =0
energy
virtual double py() const =0
y coordinate of momentum vector
edm::EDGetTokenT< edm::View< reco::Candidate > > parentBosonToken_
void calCSVariables(TLorentzVector mu, TLorentzVector mubar, double *res, bool swap)
virtual int charge() const =0
electric charge
virtual double px() const =0
x coordinate of momentum vector