Skip to content

Commit

Permalink
Merge pull request #8201 from gpetruc/slimTaus_from740p8
Browse files Browse the repository at this point in the history
Slim pat::Tau information (double -> float) - 75X version
  • Loading branch information
davidlange6 committed Mar 12, 2015
2 parents ac7cd37 + 26555f1 commit 1d13e5d
Show file tree
Hide file tree
Showing 5 changed files with 75 additions and 32 deletions.
1 change: 1 addition & 0 deletions DataFormats/Math/src/classes_def.xml
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
<lcgdict>
<selection>
<class pattern="ROOT::Math::PtEtaPhiE4D<*>" />
<class pattern="ROOT::Math::PtEtaPhiM4D<float>" />
<class pattern="ROOT::Math::PxPyPzE4D<*>" />
<class pattern="ROOT::Math::Cartesian3D<*>" />
<class pattern="ROOT::Math::CylindricalEta3D<*>" />
Expand Down
24 changes: 12 additions & 12 deletions DataFormats/PatCandidates/interface/Tau.h
Original file line number Diff line number Diff line change
Expand Up @@ -311,24 +311,24 @@ namespace pat {
/// ---- Tau lifetime information ----
/// Filled from PFTauTIPAssociation.
/// Throws an exception if this pat::Tau was not made from a reco::PFTau
const reco::PFTauTransverseImpactParameter::Point& dxy_PCA() const { return pfEssential().dxy_PCA_; }
double dxy() const { return pfEssential().dxy_; }
double dxy_error() const { return pfEssential().dxy_error_; }
double dxy_Sig() const;
const pat::tau::TauPFEssential::Point& dxy_PCA() const { return pfEssential().dxy_PCA_; }
float dxy() const { return pfEssential().dxy_; }
float dxy_error() const { return pfEssential().dxy_error_; }
float dxy_Sig() const;
const reco::VertexRef& primaryVertex() const { return pfEssential().pv_; }
const reco::PFTauTransverseImpactParameter::Point& primaryVertexPos() const { return pfEssential().pvPos_; }
const reco::PFTauTransverseImpactParameter::CovMatrix& primaryVertexCov() const { return pfEssential().pvCov_; }
const pat::tau::TauPFEssential::Point& primaryVertexPos() const { return pfEssential().pvPos_; }
const pat::tau::TauPFEssential::CovMatrix& primaryVertexCov() const { return pfEssential().pvCov_; }
bool hasSecondaryVertex() const { return pfEssential().hasSV_; }
const reco::PFTauTransverseImpactParameter::Vector& flightLength() const { return pfEssential().flightLength_; }
double flightLengthSig() const { return pfEssential().flightLengthSig_; }
reco::PFTauTransverseImpactParameter::CovMatrix flightLengthCov() const;
const pat::tau::TauPFEssential::Vector& flightLength() const { return pfEssential().flightLength_; }
float flightLengthSig() const { return pfEssential().flightLengthSig_; }
pat::tau::TauPFEssential::CovMatrix flightLengthCov() const;
const reco::VertexRef& secondaryVertex() const { return pfEssential().sv_; }
const reco::PFTauTransverseImpactParameter::Point& secondaryVertexPos() const { return pfEssential().svPos_; }
const reco::PFTauTransverseImpactParameter::CovMatrix& secondaryVertexCov() const { return pfEssential().svCov_; }
const pat::tau::TauPFEssential::Point& secondaryVertexPos() const { return pfEssential().svPos_; }
const pat::tau::TauPFEssential::CovMatrix& secondaryVertexCov() const { return pfEssential().svCov_; }

/// Methods copied from reco::Jet.
/// (accessible from reco::CaloTau/reco::PFTau via reco::CaloTauTagInfo/reco::PFTauTagInfo)
const reco::Candidate::LorentzVector& p4Jet() const;
reco::Candidate::LorentzVector p4Jet() const;
float etaetaMoment() const;
float phiphiMoment() const;
float etaphiMoment() const;
Expand Down
30 changes: 18 additions & 12 deletions DataFormats/PatCandidates/interface/TauPFEssential.h
Original file line number Diff line number Diff line change
Expand Up @@ -19,29 +19,35 @@
namespace pat { namespace tau {

struct TauPFEssential {
// define a float-precision version of the typedefs in reco::PFTauTransverseImpactParameter class
typedef math::PtEtaPhiMLorentzVectorF LorentzVector;
typedef math::XYZPointF Point;
typedef math::XYZVectorF Vector;
typedef math::ErrorF<3>::type CovMatrix;

// dummy constructor for ROOT I/O
TauPFEssential() {}
// constructor from PFTau
TauPFEssential(const reco::PFTau& tau);
// datamembers
reco::Candidate::LorentzVector p4Jet_;
reco::Candidate::LorentzVector p4CorrJet_;
LorentzVector p4Jet_;
LorentzVector p4CorrJet_;

int decayMode_;

reco::PFTauTransverseImpactParameter::Point dxy_PCA_;
double dxy_;
double dxy_error_;
double dxy_Sig_;
Point dxy_PCA_;
float dxy_;
float dxy_error_;
float dxy_Sig_;
reco::VertexRef pv_;
reco::PFTauTransverseImpactParameter::Point pvPos_;
reco::PFTauTransverseImpactParameter::CovMatrix pvCov_;
Point pvPos_;
CovMatrix pvCov_;
bool hasSV_;
reco::PFTauTransverseImpactParameter::Vector flightLength_;
double flightLengthSig_;
Vector flightLength_;
float flightLengthSig_;
reco::VertexRef sv_;
reco::PFTauTransverseImpactParameter::Point svPos_;
reco::PFTauTransverseImpactParameter::CovMatrix svCov_;
Point svPos_;
CovMatrix svCov_;
};

} }
Expand Down
14 changes: 7 additions & 7 deletions DataFormats/PatCandidates/src/Tau.cc
Original file line number Diff line number Diff line change
Expand Up @@ -260,24 +260,24 @@ const pat::tau::TauCaloSpecific & Tau::caloSpecific() const {
return caloSpecific_[0];
}

const reco::Candidate::LorentzVector& Tau::p4Jet() const
reco::Candidate::LorentzVector Tau::p4Jet() const
{
if ( isCaloTau() ) return caloSpecific().p4Jet_;
if ( isPFTau() ) return pfEssential().p4Jet_;
if ( isPFTau() ) return reco::Candidate::LorentzVector(pfEssential().p4Jet_);
throw cms::Exception("Type Error") << "Requesting a CaloTau/PFTau-specific information from a pat::Tau which wasn't made from either a CaloTau or a PFTau.\n";
}

double Tau::dxy_Sig() const
float Tau::dxy_Sig() const
{
if ( pfEssential().dxy_error_ != 0 ) return (pfEssential().dxy_/pfEssential().dxy_error_);
else return 0.;
}

reco::PFTauTransverseImpactParameter::CovMatrix Tau::flightLengthCov() const
pat::tau::TauPFEssential::CovMatrix Tau::flightLengthCov() const
{
reco::PFTauTransverseImpactParameter::CovMatrix cov;
const reco::PFTauTransverseImpactParameter::CovMatrix& sv = secondaryVertexCov();
const reco::PFTauTransverseImpactParameter::CovMatrix& pv = primaryVertexCov();
pat::tau::TauPFEssential::CovMatrix cov;
const pat::tau::TauPFEssential::CovMatrix& sv = secondaryVertexCov();
const pat::tau::TauPFEssential::CovMatrix& pv = primaryVertexCov();
for ( int i = 0; i < dimension; ++i ) {
for ( int j = 0; j < dimension; ++j ) {
cov(i,j) = sv(i,j) + pv(i,j);
Expand Down
38 changes: 37 additions & 1 deletion DataFormats/PatCandidates/src/classes_def_objects.xml
Original file line number Diff line number Diff line change
Expand Up @@ -135,9 +135,45 @@
<version ClassVersion="10" checksum="2692173055"/>
</class>
<class name="std::vector<pat::tau::TauCaloSpecific>" />
<class name="pat::tau::TauPFEssential" ClassVersion="10">
<class name="pat::tau::TauPFEssential" ClassVersion="11">
<version ClassVersion="11" checksum="1193752112" />
<version ClassVersion="10" checksum="1628501942" />
</class>
<ioread sourceClass="pat::tau::TauPFEssential" targetClass="pat::tau::TauPFEssential" version="[-10]" source="ROOT::Math::LorentzVector<ROOT::Math::PxPyPzE4D<double> > p4Jet_" target="p4Jet_">
<![CDATA[ p4Jet_ = ROOT::Math::LorentzVector<ROOT::Math::PtEtaPhiM4D<float> >(onfile.p4Jet_); ]]>
</ioread>
<ioread sourceClass="pat::tau::TauPFEssential" targetClass="pat::tau::TauPFEssential" version="[-10]" source="ROOT::Math::LorentzVector<ROOT::Math::PxPyPzE4D<double> > p4CorrJet_" target="p4CorrJet_">
<![CDATA[ p4CorrJet_ = ROOT::Math::LorentzVector<ROOT::Math::PtEtaPhiM4D<float> >(onfile.p4CorrJet_); ]]>
</ioread>
<ioread sourceClass="pat::tau::TauPFEssential" targetClass="pat::tau::TauPFEssential" version="[-10]" source="ROOT::Math::PositionVector3D<ROOT::Math::Cartesian3D<double>,ROOT::Math::DefaultCoordinateSystemTag> dxy_PCA_" target="dxy_PCA_">
<![CDATA[ dxy_PCA_ = ROOT::Math::PositionVector3D<ROOT::Math::Cartesian3D<float>,ROOT::Math::DefaultCoordinateSystemTag>(onfile.dxy_PCA_); ]]>
</ioread>
<ioread sourceClass="pat::tau::TauPFEssential" targetClass="pat::tau::TauPFEssential" version="[-10]" source="ROOT::Math::PositionVector3D<ROOT::Math::Cartesian3D<double>,ROOT::Math::DefaultCoordinateSystemTag> pvPos_" target="pvPos_">
<![CDATA[ pvPos_ = ROOT::Math::PositionVector3D<ROOT::Math::Cartesian3D<float>,ROOT::Math::DefaultCoordinateSystemTag>(onfile.pvPos_); ]]>
</ioread>
<ioread sourceClass="pat::tau::TauPFEssential" targetClass="pat::tau::TauPFEssential" version="[-10]" source="ROOT::Math::SMatrix<double,3,3,ROOT::Math::MatRepSym<double,3> > pvCov_" target="pvCov_">
<![CDATA[
// matrices must be copied by hand
for (unsigned int i = 0; i < 3; ++i) { for (unsigned int j = 0; j < 3; ++j) {
pvCov_(i,j) = onfile.pvCov_(i,j);
}}
]]>
</ioread>
<ioread sourceClass="pat::tau::TauPFEssential" targetClass="pat::tau::TauPFEssential" version="[-10]" source="ROOT::Math::DisplacementVector3D<ROOT::Math::Cartesian3D<double>,ROOT::Math::DefaultCoordinateSystemTag> flightLength_" target="flightLength_">
<![CDATA[ flightLength_ = ROOT::Math::DisplacementVector3D<ROOT::Math::Cartesian3D<float>,ROOT::Math::DefaultCoordinateSystemTag>(onfile.flightLength_); ]]>
</ioread>
<ioread sourceClass="pat::tau::TauPFEssential" targetClass="pat::tau::TauPFEssential" version="[-10]" source="ROOT::Math::PositionVector3D<ROOT::Math::Cartesian3D<double>,ROOT::Math::DefaultCoordinateSystemTag> svPos_" target="svPos_">
<![CDATA[ svPos_ = ROOT::Math::PositionVector3D<ROOT::Math::Cartesian3D<float>,ROOT::Math::DefaultCoordinateSystemTag>(onfile.svPos_); ]]>
</ioread>
<ioread sourceClass="pat::tau::TauPFEssential" targetClass="pat::tau::TauPFEssential" version="[-10]" source="ROOT::Math::SMatrix<double,3,3,ROOT::Math::MatRepSym<double,3> > svCov_" target="svCov_">
<![CDATA[
// matrices must be copied by hand
for (unsigned int i = 0; i < 3; ++i) { for (unsigned int j = 0; j < 3; ++j) {
svCov_(i,j) = onfile.svCov_(i,j);
}}
]]>
</ioread>

<class name="std::vector<pat::tau::TauPFEssential>" />
<class name="pat::Photon" ClassVersion="17">
<version ClassVersion="17" checksum="2394457997"/>
Expand Down

0 comments on commit 1d13e5d

Please sign in to comment.