24 #include "TLorentzVector.h" 41 produces<edm::ValueMap<float> >(
"costheta");
42 produces<edm::ValueMap<float> >(
"sin2theta");
43 produces<edm::ValueMap<float> >(
"tanphi");
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( !(0==daughter1 || 0==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.
virtual ~ColinsSoperVariablesComputer()
bool getByToken(EDGetToken token, Handle< PROD > &result) const
#define DEFINE_FWK_MODULE(type)
ColinsSoperVariablesComputer(const edm::ParameterSet &iConfig)
EDGetTokenT< ProductType > consumes(edm::InputTag const &tag)
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 void produce(edm::Event &iEvent, const edm::EventSetup &iSetup) override
virtual double px() const =0
x coordinate of momentum vector