CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions | Protected Attributes
HMassResolutionVSPart Class Reference

#include <Histograms.h>

Inheritance diagram for HMassResolutionVSPart:
Histograms

Public Member Functions

virtual void Clear ()
 
virtual void Fill (const reco::Particle::LorentzVector &recoP1, const int charge1, const reco::Particle::LorentzVector &genP1, const reco::Particle::LorentzVector &recoP2, const int charge2, const reco::Particle::LorentzVector &genP2, const double &recoMass, const double &genMass)
 
virtual void Fill (const reco::Particle::LorentzVector &recoP1, const int charge1, const reco::Particle::LorentzVector &recoP2, const int charge2, const double &recoMass, const double &genMass)
 
 HMassResolutionVSPart (TFile *outputFile, const TString &name)
 
virtual void Write ()
 
 ~HMassResolutionVSPart ()
 
- Public Member Functions inherited from Histograms
void declareHistograms ()
 
virtual void Fill (const reco::Particle::LorentzVector &p1, const reco::Particle::LorentzVector &p2)
 
virtual void Fill (const reco::Particle::LorentzVector &p1, const reco::Particle::LorentzVector &p2, const int charge, const double &weight=1.)
 
virtual void Fill (const CLHEP::HepLorentzVector &momentum1, const CLHEP::HepLorentzVector &momentum2)
 
virtual void Fill (const CLHEP::HepLorentzVector &momentum1, const CLHEP::HepLorentzVector &momentum2, const int charge, const double &weight=1.)
 
virtual void Fill (const CLHEP::HepLorentzVector &p1, const reco::Particle::LorentzVector &p2)
 
virtual void Fill (const reco::Particle::LorentzVector &p4, const double &weight=1.)
 
virtual void Fill (const reco::Particle::LorentzVector &p4, const double &resValue, const int charge)
 
virtual void Fill (const reco::Particle::LorentzVector &p4, const double &genValue, const double recValue, const int charge)
 
virtual void Fill (const CLHEP::HepLorentzVector &p, const double &likeValue)
 
virtual void Fill (const unsigned int number)
 
virtual void Fill (const reco::Particle::LorentzVector &recoP1, const reco::Particle::LorentzVector &genP1, const reco::Particle::LorentzVector &recoP2, const reco::Particle::LorentzVector &genP2)
 
virtual void Fill (const double &x, const double &y)
 
virtual void Fill (const double &x, const double &y, const double &a, const double &b)
 
void fillEventInfo (int proc, int strk, int ntrkr)
 
void fillRecHistograms (const RecTrack_t &r)
 
void fillSimHistograms (const SimTrack_t &s)
 
void fillVzeroHistograms (const RecVzero_t &r, int part)
 
virtual double Get (const reco::Particle::LorentzVector &recoP1, const TString &covarianceName)
 
virtual TString GetName ()
 
 Histograms ()
 
 Histograms (const TString &name)
 
 Histograms (TFile *outputFile, const TString &name)
 
 Histograms (const edm::ParameterSet &pset)
 
virtual void SetWeight (double weight)
 
void writeHistograms ()
 
virtual ~Histograms ()
 
 ~Histograms ()
 

Protected Attributes

std::map< TString, TH1 * > mapHisto_
 
std::auto_ptr< HDeltamuMinus
 
std::auto_ptr< HDeltamuPlus
 
TString nameSuffix_ [2]
 
- Protected Attributes inherited from Histograms
TDirectory * histoDir_
 
TString name_
 
TFile * outputFile_
 
double theWeight_
 

Detailed Description

A set of histograms for resolution. The fill method requires the two selected muons, their charges and the reconstructed and generated masses. It evaluates the resolution on the mass vs: Pt of the pair DeltaEta of the pair DeltaPhi of the pair pt, eta and phi of the plus and minus muon separately

Definition at line 1862 of file Histograms.h.

Constructor & Destructor Documentation

HMassResolutionVSPart::HMassResolutionVSPart ( TFile *  outputFile,
const TString &  name 
)
inline

Definition at line 1865 of file Histograms.h.

References Histograms::histoDir_, i, mapHisto_, muMinus, muPlus, AlCaRecoCosmics_cfg::name, and nameSuffix_.

1865  : Histograms( outputFile, name ) {
1866  // Kinematical variables
1867  nameSuffix_[0] = "Plus";
1868  nameSuffix_[1] = "Minus";
1869  TString titleSuffix[] = {" for mu+", " for mu-"};
1870 
1871  mapHisto_[name] = new TH1F (name, "#Delta M/M", 4000, -1, 1);
1872  mapHisto_[name+"VSPairPt"] = new HResolution (name+"VSPairPt", "resolution VS pt of the pair", 100, 0, 200, -1, 1, histoDir_);
1873  mapHisto_[name+"VSPairDeltaEta"] = new HResolution (name+"VSPairDeltaEta", "resolution VS #Delta#eta of the pair", 100, -0.1, 6.2, -1, 1, histoDir_);
1874  mapHisto_[name+"VSPairDeltaPhi"] = new HResolution (name+"VSPairDeltaPhi", "resolution VS #Delta#phi of the pair", 100, -0.1, 3.2, -1, 1, histoDir_);
1875 
1876  for( int i=0; i<2; ++i ) {
1877  mapHisto_[name+"VSPt"+nameSuffix_[i]] = new HResolution (name+"VSPt"+nameSuffix_[i], "resolution VS pt"+titleSuffix[i], 100, 0, 200, -1, 1, histoDir_);
1878  mapHisto_[name+"VSEta"+nameSuffix_[i]] = new HResolution (name+"VSEta"+nameSuffix_[i], "resolution VS #eta"+titleSuffix[i], 100, -3, 3, -1, 1, histoDir_);
1879  mapHisto_[name+"VSPhi"+nameSuffix_[i]] = new HResolution (name+"VSPhi"+nameSuffix_[i], "resolution VS #phi"+titleSuffix[i], 100, -3.2, 3.2, -1, 1, histoDir_);
1880  }
1881 
1882  // single particles histograms
1883  muMinus.reset( new HDelta("muMinus") );
1884  muPlus.reset( new HDelta("muPlus") );
1885  }
int i
Definition: DBlmapReader.cc:9
TString nameSuffix_[2]
Definition: Histograms.h:1990
std::auto_ptr< HDelta > muPlus
Definition: Histograms.h:1992
std::auto_ptr< HDelta > muMinus
Definition: Histograms.h:1991
std::map< TString, TH1 * > mapHisto_
Definition: Histograms.h:1989
TDirectory * histoDir_
Definition: Histograms.h:108
HMassResolutionVSPart::~HMassResolutionVSPart ( )
inline

Definition at line 1887 of file Histograms.h.

References trackerHits::histo, and mapHisto_.

1887  {
1888  for (std::map<TString, TH1*>::const_iterator histo=mapHisto_.begin();
1889  histo!=mapHisto_.end(); histo++) {
1890  delete (*histo).second;
1891  }
1892  }
tuple histo
Definition: trackerHits.py:12
std::map< TString, TH1 * > mapHisto_
Definition: Histograms.h:1989

Member Function Documentation

virtual void HMassResolutionVSPart::Clear ( )
inlinevirtual

Implements Histograms.

Definition at line 1965 of file Histograms.h.

References trackerHits::histo, mapHisto_, muMinus, and muPlus.

1965  {
1966  for (std::map<TString, TH1*>::const_iterator histo=mapHisto_.begin();
1967  histo!=mapHisto_.end(); histo++) {
1968  (*histo).second->Clear();
1969  }
1970  muMinus->Clear();
1971  muPlus->Clear();
1972  }
std::auto_ptr< HDelta > muPlus
Definition: Histograms.h:1992
tuple histo
Definition: trackerHits.py:12
std::auto_ptr< HDelta > muMinus
Definition: Histograms.h:1991
std::map< TString, TH1 * > mapHisto_
Definition: Histograms.h:1989
virtual void HMassResolutionVSPart::Fill ( const reco::Particle::LorentzVector recoP1,
const int  charge1,
const reco::Particle::LorentzVector genP1,
const reco::Particle::LorentzVector recoP2,
const int  charge2,
const reco::Particle::LorentzVector genP2,
const double &  recoMass,
const double &  genMass 
)
inlinevirtual

Reimplemented from Histograms.

Definition at line 1894 of file Histograms.h.

References muMinus, and muPlus.

1898  {
1899  muMinus->Fill(recoP1, genP1);
1900  muPlus->Fill(recoP2, genP2);
1901 
1902  Fill( recoP1, charge1, recoP2, charge2, recoMass, genMass );
1903  }
std::auto_ptr< HDelta > muPlus
Definition: Histograms.h:1992
std::auto_ptr< HDelta > muMinus
Definition: Histograms.h:1991
virtual void Fill(const reco::Particle::LorentzVector &recoP1, const int charge1, const reco::Particle::LorentzVector &genP1, const reco::Particle::LorentzVector &recoP2, const int charge2, const reco::Particle::LorentzVector &genP2, const double &recoMass, const double &genMass)
Definition: Histograms.h:1894
virtual void HMassResolutionVSPart::Fill ( const reco::Particle::LorentzVector recoP1,
const int  charge1,
const reco::Particle::LorentzVector recoP2,
const int  charge2,
const double &  recoMass,
const double &  genMass 
)
inlinevirtual

Reimplemented from Histograms.

Definition at line 1905 of file Histograms.h.

References gather_cfg::cout, MuScleFitUtils::deltaPhi(), i, getHLTprescales::index, mapHisto_, Histograms::name_, and nameSuffix_.

1909  {
1910 
1911  if ( charge1 == charge2 ) std::cout << "Error: must get two opposite charge particles" << std::endl;
1912 
1913  double massRes = (recoMass - genMass)/genMass;
1914 
1915  reco::Particle::LorentzVector recoPair( recoP1 + recoP2 );
1916  double pairPt = recoPair.Pt();
1917 
1918  double recoPt[2] = {recoP1.Pt(), recoP2.Pt()};
1919  double recoEta[2] = {recoP1.Eta(), recoP2.Eta()};
1920  double recoPhi[2] = {recoP1.Phi(), recoP2.Phi()};
1921 
1922  // std::cout << "pairPt = " << pairPt << ", massRes = ("<<recoMass<<" - "<<genMass<<")/"<<genMass<<" = " << massRes
1923  // << ", recoPt[0] = " << recoPt[0] << ", recoPt[1] = " << recoPt[1] << std::endl;
1924 
1925  // Index of the histogram. If the muons have charge1 = -1 and charge2 = 1, they already have the
1926  // correct histogram indeces. Otherwise, swap the indeces.
1927  // In any case the negative muon has index = 0 and the positive muon has index = 1.
1928  int id[2] = {0,1};
1929  if ( charge1 > 0 ) {
1930  id[0] = 1;
1931  id[1] = 0;
1932  }
1933 
1934  double pairDeltaEta = fabs(recoEta[0] - recoEta[1]);
1935  double pairDeltaPhi = MuScleFitUtils::deltaPhi(recoPhi[0], recoPhi[1]);
1936 
1937  mapHisto_[name_]->Fill(massRes);
1938  mapHisto_[name_+"VSPairPt"]->Fill(pairPt, massRes);
1939  mapHisto_[name_+"VSPairDeltaEta"]->Fill(pairDeltaEta, massRes);
1940  mapHisto_[name_+"VSPairDeltaPhi"]->Fill(pairDeltaPhi, massRes);
1941 
1942  // Resolution vs single muon quantities
1943  // ------------------------------------
1944  int index = 0;
1945  for( int i=0; i<2; ++i ) {
1946  index = id[i];
1947  mapHisto_[name_+"VSPt"+nameSuffix_[i]]->Fill(recoPt[i], massRes);
1948  mapHisto_[name_+"VSEta"+nameSuffix_[i]]->Fill(recoEta[i], massRes);
1949  mapHisto_[name_+"VSPhi"+nameSuffix_[i]]->Fill(recoPhi[i], massRes);
1950  }
1951  }
int i
Definition: DBlmapReader.cc:9
TString nameSuffix_[2]
Definition: Histograms.h:1990
TString name_
Definition: Histograms.h:106
std::map< TString, TH1 * > mapHisto_
Definition: Histograms.h:1989
static double deltaPhi(const double &phi1, const double &phi2)
tuple cout
Definition: gather_cfg.py:41
math::XYZTLorentzVector LorentzVector
Lorentz vector.
Definition: Particle.h:26
virtual void HMassResolutionVSPart::Write ( )
inlinevirtual

Implements Histograms.

Definition at line 1953 of file Histograms.h.

References trackerHits::histo, Histograms::histoDir_, mapHisto_, muMinus, and muPlus.

1953  {
1954  histoDir_->cd();
1955  for (std::map<TString, TH1*>::const_iterator histo=mapHisto_.begin();
1956  histo!=mapHisto_.end(); histo++) {
1957  (*histo).second->Write();
1958  }
1959  // Create the new dir and cd into it
1960  (histoDir_->mkdir("singleMuonsVSgen"))->cd();
1961  muMinus->Write();
1962  muPlus->Write();
1963  }
std::auto_ptr< HDelta > muPlus
Definition: Histograms.h:1992
tuple histo
Definition: trackerHits.py:12
std::auto_ptr< HDelta > muMinus
Definition: Histograms.h:1991
std::map< TString, TH1 * > mapHisto_
Definition: Histograms.h:1989
TDirectory * histoDir_
Definition: Histograms.h:108

Member Data Documentation

std::map<TString, TH1*> HMassResolutionVSPart::mapHisto_
protected

Definition at line 1989 of file Histograms.h.

Referenced by Clear(), Fill(), HMassResolutionVSPart(), Write(), and ~HMassResolutionVSPart().

std::auto_ptr<HDelta> HMassResolutionVSPart::muMinus
protected

Definition at line 1991 of file Histograms.h.

Referenced by Clear(), Fill(), HMassResolutionVSPart(), and Write().

std::auto_ptr<HDelta> HMassResolutionVSPart::muPlus
protected

Definition at line 1992 of file Histograms.h.

Referenced by Clear(), Fill(), HMassResolutionVSPart(), and Write().

TString HMassResolutionVSPart::nameSuffix_[2]
protected

Definition at line 1990 of file Histograms.h.

Referenced by Fill(), and HMassResolutionVSPart().