CMS 3D CMS Logo

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

#include <MuScleFitBase.h>

Inheritance diagram for MuScleFitBase:
MuScleFit TestCorrection

Classes

class  ProbForIntegral
 Functor used to compute the normalization integral of probability functions. More...
 

Public Member Functions

 MuScleFitBase (const edm::ParameterSet &iConfig)
 
virtual ~MuScleFitBase ()
 

Protected Member Functions

void clearHistoMap ()
 Clean the histograms map. More...
 
void fillHistoMap (TFile *outputFile, unsigned int iLoop)
 Create the histograms map. More...
 
void readProbabilityDistributionsFromFile ()
 Read probability distributions from a local root file. More...
 
void writeHistoMap (const unsigned int iLoop)
 Save the histograms map to file. More...
 

Protected Attributes

int debug_
 
std::vector< GenMuonPairgenMuonPairs_
 Stores the genMuon pairs and the motherId prior to the creation of the internal tree. More...
 
std::map< std::string,
Histograms * > 
mapHisto_
 The map of histograms. More...
 
std::vector< MuonPairmuonPairs_
 Used to store the muon pairs plus run and event number prior to the creation of the internal tree. More...
 
std::string probabilitiesFile_
 
std::string probabilitiesFileInPath_
 
std::vector< TFile * > theFiles_
 The files were the histograms are saved. More...
 
std::string theGenInfoRootFileName_
 
edm::InputTag theMuonLabel_
 
int theMuonType_
 
std::string theRootFileName_
 

Detailed Description

This class is used as a base for MuSlceFit. The reason for putting some of the methods inside this base class is that they are used also by the TestCorrection analyzer.

Definition at line 18 of file MuScleFitBase.h.

Constructor & Destructor Documentation

MuScleFitBase::MuScleFitBase ( const edm::ParameterSet iConfig)
inline

Definition at line 21 of file MuScleFitBase.h.

21  :
22  probabilitiesFileInPath_( iConfig.getUntrackedParameter<std::string>( "ProbabilitiesFileInPath" , "MuonAnalysis/MomentumScaleCalibration/test/Probs_new_Horace_CTEQ_1000.root" ) ),
23  probabilitiesFile_( iConfig.getUntrackedParameter<std::string>( "ProbabilitiesFile" , "" ) ),
24  theMuonType_( iConfig.getParameter<int>( "MuonType" ) ),
25  theMuonLabel_( iConfig.getParameter<edm::InputTag>( "MuonLabel" ) ),
26  theRootFileName_( iConfig.getUntrackedParameter<std::string>("OutputFileName") ),
27  theGenInfoRootFileName_( iConfig.getUntrackedParameter<std::string>("OutputGenInfoFileName", "genSimRecoPlots.root") ),
28  debug_( iConfig.getUntrackedParameter<int>("debug",0) )
29  {}
T getParameter(std::string const &) const
T getUntrackedParameter(std::string const &, T const &) const
edm::InputTag theMuonLabel_
Definition: MuScleFitBase.h:46
std::string theGenInfoRootFileName_
Definition: MuScleFitBase.h:48
std::string theRootFileName_
Definition: MuScleFitBase.h:47
std::string probabilitiesFileInPath_
Definition: MuScleFitBase.h:42
std::string probabilitiesFile_
Definition: MuScleFitBase.h:43
virtual MuScleFitBase::~MuScleFitBase ( )
inlinevirtual

Definition at line 30 of file MuScleFitBase.h.

30 {}

Member Function Documentation

void MuScleFitBase::clearHistoMap ( )
protected

Clean the histograms map.

Definition at line 109 of file MuScleFitBase.cc.

References trackerHits::histo, and mapHisto_.

Referenced by MuScleFit::endOfFastLoop().

109  {
110  for (std::map<std::string, Histograms*>::const_iterator histo=mapHisto_.begin();
111  histo!=mapHisto_.end(); histo++) {
112  delete (*histo).second;
113  }
114 }
std::map< std::string, Histograms * > mapHisto_
The map of histograms.
Definition: MuScleFitBase.h:77
tuple histo
Definition: trackerHits.py:12
void MuScleFitBase::fillHistoMap ( TFile *  outputFile,
unsigned int  iLoop 
)
protected

Create the histograms map.

Definition at line 7 of file MuScleFitBase.cc.

References MuScleFitUtils::debugMassResol_, LogDebug, mapHisto_, MuScleFitUtils::resfind, and theMuonType_.

Referenced by MuScleFit::startingNewLoop(), and TestCorrection::TestCorrection().

7  {
8  //Reconstructed muon kinematics
9  //-----------------------------
10  outputFile->cd();
11  // If no Z is required, use a smaller mass range.
12  double minMass = 0.;
13  double maxMass = 200.;
14  double maxPt = 100.;
15  double yMaxEta = 4.;
16  double yMaxPt = 2.;
17  if( MuScleFitUtils::resfind[0] != 1 ) {
18  maxMass = 20.;
19  maxPt = 20.;
20  yMaxEta = 0.2;
21  yMaxPt = 0.2;
22  // If running on standalone muons we need to expand the window range
23  if( theMuonType_ == 2 ) {
24  yMaxEta = 20.;
25  }
26  }
27 
28  LogDebug("MuScleFitBase") << "Creating new histograms" << std::endl;
29 
30  mapHisto_["hRecBestMu"] = new HParticle ("hRecBestMu", minMass, maxMass, maxPt);
31  mapHisto_["hRecBestMuVSEta"] = new HPartVSEta ("hRecBestMuVSEta", minMass, maxMass, maxPt);
32  //mapHisto_["hRecBestMu_Acc"] = new HParticle ("hRecBestMu_Acc", minMass, maxMass);
33  mapHisto_["hDeltaRecBestMu"] = new HDelta ("hDeltaRecBestMu");
34 
35  mapHisto_["hRecBestRes"] = new HParticle ("hRecBestRes", minMass, maxMass, maxPt);
36  mapHisto_["hRecBestResAllEvents"] = new HParticle ("hRecBestResAllEvents", minMass, maxMass, maxPt);
37  //mapHisto_["hRecBestRes_Acc"] = new HParticle ("hRecBestRes_Acc", minMass, maxMass);
38  // If not finding Z, use a smaller mass window
39  mapHisto_["hRecBestResVSMu"] = new HMassVSPart ("hRecBestResVSMu", minMass, maxMass, maxPt);
40  mapHisto_["hRecBestResVSRes"] = new HMassVSPart ("hRecBestResVSRes", minMass, maxMass, maxPt);
41  //Generated Mass versus pt
42  mapHisto_["hGenResVSMu"] = new HMassVSPart ("hGenResVSMu", minMass, maxMass, maxPt);
43  // Likelihood values VS muon variables
44  // -------------------------------------
45  mapHisto_["hLikeVSMu"] = new HLikelihoodVSPart ("hLikeVSMu");
46  mapHisto_["hLikeVSMuMinus"] = new HLikelihoodVSPart ("hLikeVSMuMinus");
47  mapHisto_["hLikeVSMuPlus"] = new HLikelihoodVSPart ("hLikeVSMuPlus");
48 
49  //Resolution VS muon kinematic
50  //----------------------------
51  mapHisto_["hResolMassVSMu"] = new HResolutionVSPart( outputFile, "hResolMassVSMu", maxPt, 0., yMaxEta, 0., yMaxPt, true );
52  mapHisto_["hFunctionResolMassVSMu"] = new HResolutionVSPart( outputFile, "hFunctionResolMassVSMu", maxPt, 0, 0.1, 0, 0.1, true );
53  mapHisto_["hResolPtGenVSMu"] = new HResolutionVSPart( outputFile, "hResolPtGenVSMu", maxPt, -0.1, 0.1, -0.1, 0.1 );
54  mapHisto_["hResolPtSimVSMu"] = new HResolutionVSPart( outputFile, "hResolPtSimVSMu", maxPt, -0.1, 0.1, -0.1, 0.1 );
55  mapHisto_["hResolEtaGenVSMu"] = new HResolutionVSPart( outputFile, "hResolEtaGenVSMu", maxPt, -0.02, 0.02, -0.02, 0.02 );
56  mapHisto_["hResolEtaSimVSMu"] = new HResolutionVSPart( outputFile, "hResolEtaSimVSMu", maxPt, -0.02, 0.02, -0.02, 0.02 );
57  mapHisto_["hResolThetaGenVSMu"] = new HResolutionVSPart( outputFile, "hResolThetaGenVSMu", maxPt, -0.02, 0.02, -0.02, 0.02 );
58  mapHisto_["hResolThetaSimVSMu"] = new HResolutionVSPart( outputFile, "hResolThetaSimVSMu", maxPt, -0.02, 0.02, -0.02, 0.02 );
59  mapHisto_["hResolCotgThetaGenVSMu"] = new HResolutionVSPart( outputFile, "hResolCotgThetaGenVSMu", maxPt, -0.02, 0.02, -0.02, 0.02 );
60  mapHisto_["hResolCotgThetaSimVSMu"] = new HResolutionVSPart( outputFile, "hResolCotgThetaSimVSMu", maxPt, -0.02, 0.02, -0.02, 0.02 );
61  mapHisto_["hResolPhiGenVSMu"] = new HResolutionVSPart( outputFile, "hResolPhiGenVSMu", maxPt, -0.02, 0.02, -0.02, 0.02 );
62  mapHisto_["hResolPhiSimVSMu"] = new HResolutionVSPart( outputFile, "hResolPhiSimVSMu", maxPt, -0.02, 0.02, -0.02, 0.02 );
63 
65  mapHisto_["hdMdPt1"] = new HResolutionVSPart( outputFile, "hdMdPt1", maxPt, 0, 100, -3.2, 3.2, true );
66  mapHisto_["hdMdPt2"] = new HResolutionVSPart( outputFile, "hdMdPt2", maxPt, 0, 100, -3.2, 3.2, true );
67  mapHisto_["hdMdPhi1"] = new HResolutionVSPart( outputFile, "hdMdPhi1", maxPt, 0, 100, -3.2, 3.2, true );
68  mapHisto_["hdMdPhi2"] = new HResolutionVSPart( outputFile, "hdMdPhi2", maxPt, 0, 100, -3.2, 3.2, true );
69  mapHisto_["hdMdCotgTh1"] = new HResolutionVSPart( outputFile, "hdMdCotgTh1", maxPt, 0, 100, -3.2, 3.2, true );
70  mapHisto_["hdMdCotgTh2"] = new HResolutionVSPart( outputFile, "hdMdCotgTh2", maxPt, 0, 100, -3.2, 3.2, true );
71  }
72 
73  HTH2D * recoGenHisto = new HTH2D(outputFile, "hPtRecoVsPtGen", "Pt reco vs Pt gen", "hPtRecoVsPtGen", 120, 0., 120., 120, 0, 120.);
74  (*recoGenHisto)->SetXTitle("Pt gen (GeV)");
75  (*recoGenHisto)->SetYTitle("Pt reco (GeV)");
76  mapHisto_["hPtRecoVsPtGen"] = recoGenHisto;
77  HTH2D * recoSimHisto = new HTH2D(outputFile, "hPtRecoVsPtSim", "Pt reco vs Pt sim", "hPtRecoVsPtSim", 120, 0., 120., 120, 0, 120.);
78  (*recoSimHisto)->SetXTitle("Pt sim (GeV)");
79  (*recoSimHisto)->SetYTitle("Pt reco (GeV)");
80  mapHisto_["hPtRecoVsPtSim"] = recoSimHisto;
81  // Resolutions from resolution functions
82  // -------------------------------------
83  mapHisto_["hFunctionResolPt"] = new HFunctionResolution( outputFile, "hFunctionResolPt", maxPt );
84  mapHisto_["hFunctionResolCotgTheta"] = new HFunctionResolution( outputFile, "hFunctionResolCotgTheta", maxPt );
85  mapHisto_["hFunctionResolPhi"] = new HFunctionResolution( outputFile, "hFunctionResolPhi", maxPt );
86 
87  // Mass probability histograms
88  // ---------------------------
89  // The word "profile" is added to the title automatically
90  mapHisto_["hMass_P"] = new HTProfile( outputFile, "Mass_P", "Mass probability", 4000, 0., 200., 0., 50. );
91  mapHisto_["hMass_fine_P"] = new HTProfile( outputFile, "Mass_fine_P", "Mass probability", 4000, 0., 20., 0., 50. );
92  mapHisto_["hMass_Probability"] = new HTH1D( outputFile, "Mass_Probability", "Mass probability", 4000, 0., 200.);
93  mapHisto_["hMass_fine_Probability"] = new HTH1D( outputFile, "Mass_fine_Probability", "Mass probability", 4000, 0., 20.);
94  mapHisto_["hMassProbVsMu"] = new HMassVSPartProfile( "hMassProbVsMu", minMass, maxMass, maxPt );
95  mapHisto_["hMassProbVsRes"] = new HMassVSPartProfile( "hMassProbVsRes", minMass, maxMass, maxPt );
96  mapHisto_["hMassProbVsMu_fine"] = new HMassVSPartProfile( "hMassProbVsMu_fine", minMass, maxMass, maxPt );
97  mapHisto_["hMassProbVsRes_fine"] = new HMassVSPartProfile( "hMassProbVsRes_fine", minMass, maxMass, maxPt );
98 
99  // (M_reco-M_gen)/M_gen vs (pt, eta) of the muons from MC
100  mapHisto_["hDeltaMassOverGenMassVsPt"] = new HTH2D( outputFile, "DeltaMassOverGenMassVsPt", "DeltaMassOverGenMassVsPt", "DeltaMassOverGenMass", 200, 0, maxPt, 200, -0.2, 0.2 );
101  mapHisto_["hDeltaMassOverGenMassVsEta"] = new HTH2D( outputFile, "DeltaMassOverGenMassVsEta", "DeltaMassOverGenMassVsEta", "DeltaMassOverGenMass", 200, -3., 3., 200, -0.2, 0.2 );
102 
103  // Square of mass resolution vs (pt, eta) of the muons from MC
104  mapHisto_["hMassResolutionVsPtEta"] = new HCovarianceVSxy( "Mass", "Mass", 100, 0., maxPt, 60, -3, 3, outputFile->mkdir("MassCovariance") );
105  // Mass resolution vs (pt, eta) from resolution function
106  mapHisto_["hFunctionResolMass"] = new HFunctionResolution( outputFile, "hFunctionResolMass", maxPt );
107 }
#define LogDebug(id)
static bool debugMassResol_
A wrapper for the TH1D histogram to allow it to be put inside the same map as all the other classes i...
Definition: Histograms.h:156
std::map< std::string, Histograms * > mapHisto_
The map of histograms.
Definition: MuScleFitBase.h:77
A wrapper for the TProfile histogram to allow it to be put inside the same map as all the other class...
Definition: Histograms.h:187
A wrapper for the TH2D histogram to allow it to be put inside the same map as all the other classes i...
Definition: Histograms.h:115
static std::vector< int > resfind
A set of histograms for resolution.
Definition: Histograms.h:857
void MuScleFitBase::readProbabilityDistributionsFromFile ( )
protected

Read probability distributions from a local root file.

Definition at line 125 of file MuScleFitBase.cc.

References gather_cfg::cout, cmsRelvalreport::exit, mergeVDriftHistosByStation::file, GL, MuScleFitUtils::GLNorm, MuScleFitUtils::GLValue, MuScleFitUtils::GLZNorm, MuScleFitUtils::GLZValue, i, MuScleFitUtils::nbins, probabilitiesFile_, probabilitiesFileInPath_, MuScleFitUtils::resfind, MuScleFitUtils::ResHalfWidth, MuScleFitUtils::ResMaxSigma, MuScleFitUtils::ResMinMass, and theMuonType_.

Referenced by MuScleFit::beginOfJobInConstructor(), and TestCorrection::initialize().

126 {
127  TH2D * GLZ[24];
128  TH2D * GL[6];
129  TFile * ProbsFile;
130  if( probabilitiesFile_ != "" ) {
131  ProbsFile = new TFile (probabilitiesFile_.c_str());
132  std::cout << "[MuScleFit-Constructor]: Reading TH2D probabilities from " << probabilitiesFile_ << std::endl;
133  }
134  else {
135  // edm::FileInPath file("MuonAnalysis/MomentumScaleCalibration/test/Probs_new_1000_CTEQ.root");
136  // edm::FileInPath file("MuonAnalysis/MomentumScaleCalibration/test/Probs_new_Horace_CTEQ_1000.root");
137  // edm::FileInPath file("MuonAnalysis/MomentumScaleCalibration/test/Probs_merge.root");
139  ProbsFile = new TFile (file.fullPath().c_str());
140  std::cout << "[MuScleFit-Constructor]: Reading TH2D probabilities from " << probabilitiesFileInPath_ << std::endl;
141  }
142 
143  ProbsFile->cd();
144  if( theMuonType_!=2 && MuScleFitUtils::resfind[0]) {
145  for ( int i=0; i<24; i++ ) {
146  char nameh[6];
147  sprintf (nameh,"GLZ%d",i);
148  GLZ[i] = dynamic_cast<TH2D*>(ProbsFile->Get(nameh));
149  }
150  }
152  GL[0] = dynamic_cast<TH2D*> (ProbsFile->Get("GL0"));
154  GL[1] = dynamic_cast<TH2D*> (ProbsFile->Get("GL1"));
156  GL[2] = dynamic_cast<TH2D*> (ProbsFile->Get("GL2"));
158  GL[3] = dynamic_cast<TH2D*> (ProbsFile->Get("GL3"));
160  GL[4] = dynamic_cast<TH2D*> (ProbsFile->Get("GL4"));
162  GL[5] = dynamic_cast<TH2D*> (ProbsFile->Get("GL5"));
163 
164  // Read the limits for M and Sigma axis for each pdf
165  // Note: we assume all the Z histograms to have the same limits
166  // x is mass, y is sigma
168  MuScleFitUtils::ResHalfWidth[0] = (GLZ[0]->GetXaxis()->GetXmax() - GLZ[0]->GetXaxis()->GetXmin())/2.;
169  MuScleFitUtils::ResMaxSigma[0] = (GLZ[0]->GetYaxis()->GetXmax() - GLZ[0]->GetYaxis()->GetXmin());
170  MuScleFitUtils::ResMinMass[0] = (GLZ[0]->GetXaxis()->GetXmin());
171  }
173  MuScleFitUtils::ResHalfWidth[0] = (GL[0]->GetXaxis()->GetXmax() - GL[0]->GetXaxis()->GetXmin())/2.;
174  MuScleFitUtils::ResMaxSigma[0] = (GL[0]->GetYaxis()->GetXmax() - GL[0]->GetYaxis()->GetXmin());
175  MuScleFitUtils::ResMinMass[0] = (GL[0]->GetXaxis()->GetXmin());
176  }
177  for( int i=1; i<6; ++i ) {
179  MuScleFitUtils::ResHalfWidth[i] = (GL[i]->GetXaxis()->GetXmax() - GL[i]->GetXaxis()->GetXmin())/2.;
180  MuScleFitUtils::ResMaxSigma[i] = (GL[i]->GetYaxis()->GetXmax() - GL[i]->GetYaxis()->GetXmin());
181  MuScleFitUtils::ResMinMass[i] = (GL[i]->GetXaxis()->GetXmin());
182  // if( debug_>2 ) {
183  std::cout << "MuScleFitUtils::ResHalfWidth["<<i<<"] = " << MuScleFitUtils::ResHalfWidth[i] << std::endl;
184  std::cout << "MuScleFitUtils::ResMaxSigma["<<i<<"] = " << MuScleFitUtils::ResMaxSigma[i] << std::endl;
185  // }
186  }
187  }
188 
189  // Extract normalization for mass slice in Y bins of Z
190  // ---------------------------------------------------
192  for (int iY=0; iY<24; iY++) {
193  int nBinsX = GLZ[iY]->GetNbinsX();
194  int nBinsY = GLZ[iY]->GetNbinsY();
195  if( nBinsX != MuScleFitUtils::nbins+1 || nBinsY != MuScleFitUtils::nbins+1 ) {
196  std::cout << "Error: for histogram \"" << GLZ[iY]->GetName() << "\" bins are not " << MuScleFitUtils::nbins << std::endl;
197  std::cout<< "nBinsX = " << nBinsX << ", nBinsY = " << nBinsY << std::endl;
198  exit(1);
199  }
200  for (int iy=0; iy<=MuScleFitUtils::nbins; iy++) {
201  MuScleFitUtils::GLZNorm[iY][iy] = 0.;
202  for (int ix=0; ix<=MuScleFitUtils::nbins; ix++) {
203  MuScleFitUtils::GLZValue[iY][ix][iy] = GLZ[iY]->GetBinContent(ix+1, iy+1);
205  }
206  }
207  }
208  }
209 
211  int nBinsX = GL[0]->GetNbinsX();
212  int nBinsY = GL[0]->GetNbinsY();
213  if( nBinsX != MuScleFitUtils::nbins+1 || nBinsY != MuScleFitUtils::nbins+1 ) {
214  std::cout << "Error: for histogram \"" << GL[0]->GetName() << "\" bins are not " << MuScleFitUtils::nbins << std::endl;
215  std::cout<< "nBinsX = " << nBinsX << ", nBinsY = " << nBinsY << std::endl;
216  exit(1);
217  }
218 
219  for (int iy=0; iy<=MuScleFitUtils::nbins; iy++) {
220  MuScleFitUtils::GLNorm[0][iy] = 0.;
221  for (int ix=0; ix<=MuScleFitUtils::nbins; ix++) {
222  MuScleFitUtils::GLValue[0][ix][iy] = GL[0]->GetBinContent(ix+1, iy+1);
223  // N.B. approximation: we should compute the integral of the function used to compute the probability (linear
224  // interpolation of the mass points). This computation could be troublesome because the points have a steep
225  // variation near the mass peak and the normal integral is not precise in these conditions.
226  // Furthermore it is slow.
228  }
229  }
230  }
231  // Extract normalization for each mass slice
232  // -----------------------------------------
233  for (int ires=1; ires<6; ires++) {
234  if(MuScleFitUtils::resfind[ires]){
235  int nBinsX = GL[ires]->GetNbinsX();
236  int nBinsY = GL[ires]->GetNbinsY();
237  if( nBinsX != MuScleFitUtils::nbins+1 || nBinsY != MuScleFitUtils::nbins+1 ) {
238  std::cout << "Error: for histogram \"" << GL[ires]->GetName() << "\" bins are not " << MuScleFitUtils::nbins << std::endl;
239  std::cout<< "nBinsX = " << nBinsX << ", nBinsY = " << nBinsY << std::endl;
240  exit(1);
241  }
242 
243  for (int iy=0; iy<=MuScleFitUtils::nbins; iy++) {
244  MuScleFitUtils::GLNorm[ires][iy] = 0.;
245  for (int ix=0; ix<=MuScleFitUtils::nbins; ix++) {
246  MuScleFitUtils::GLValue[ires][ix][iy] = GL[ires]->GetBinContent(ix+1, iy+1);
247  // N.B. approximation: we should compute the integral of the function used to compute the probability (linear
248  // interpolation of the mass points). This computation could be troublesome because the points have a steep
249  // variation near the mass peak and the normal integral is not precise in these conditions.
250  // Furthermore it is slow.
252  }
253  }
254  }
255  }
256  // Free all the memory for the probability histograms.
258  for ( int i=0; i<24; i++ ) {
259  delete GLZ[i];
260  }
261  }
263  delete GL[0];
264  for (int ires=1; ires<6; ires++) {
265  if(MuScleFitUtils::resfind[ires])
266  delete GL[ires];
267  }
268  delete ProbsFile;
269 }
static double GLValue[6][1001][1001]
int i
Definition: DBlmapReader.cc:9
static int nbins
static double ResMinMass[6]
TF1 * GL
static double GLZNorm[40][1001]
static double ResMaxSigma[6]
static double GLZValue[40][1001][1001]
static double GLNorm[6][1001]
tuple cout
Definition: gather_cfg.py:41
static std::vector< int > resfind
static double ResHalfWidth[6]
std::string probabilitiesFileInPath_
Definition: MuScleFitBase.h:42
std::string probabilitiesFile_
Definition: MuScleFitBase.h:43
void MuScleFitBase::writeHistoMap ( const unsigned int  iLoop)
protected

Save the histograms map to file.

Definition at line 116 of file MuScleFitBase.cc.

References trackerHits::histo, mapHisto_, and theFiles_.

Referenced by MuScleFit::endOfFastLoop(), and TestCorrection::~TestCorrection().

116  {
117  for (std::map<std::string, Histograms*>::const_iterator histo=mapHisto_.begin();
118  histo!=mapHisto_.end(); histo++) {
119  // This is to avoid writing into subdirs. Need a workaround.
120  theFiles_[iLoop]->cd();
121  (*histo).second->Write();
122  }
123 }
std::map< std::string, Histograms * > mapHisto_
The map of histograms.
Definition: MuScleFitBase.h:77
tuple histo
Definition: trackerHits.py:12
std::vector< TFile * > theFiles_
The files were the histograms are saved.
Definition: MuScleFitBase.h:74

Member Data Documentation

int MuScleFitBase::debug_
protected
std::vector<GenMuonPair> MuScleFitBase::genMuonPairs_
protected

Stores the genMuon pairs and the motherId prior to the creation of the internal tree.

Definition at line 82 of file MuScleFitBase.h.

Referenced by MuScleFit::selectMuons(), and MuScleFit::~MuScleFit().

std::map<std::string, Histograms*> MuScleFitBase::mapHisto_
protected
std::vector<MuonPair> MuScleFitBase::muonPairs_
protected

Used to store the muon pairs plus run and event number prior to the creation of the internal tree.

Definition at line 80 of file MuScleFitBase.h.

Referenced by MuScleFit::selectMuons(), and MuScleFit::~MuScleFit().

std::string MuScleFitBase::probabilitiesFile_
protected

Definition at line 43 of file MuScleFitBase.h.

Referenced by readProbabilityDistributionsFromFile().

std::string MuScleFitBase::probabilitiesFileInPath_
protected

Definition at line 42 of file MuScleFitBase.h.

Referenced by readProbabilityDistributionsFromFile().

std::vector<TFile*> MuScleFitBase::theFiles_
protected
std::string MuScleFitBase::theGenInfoRootFileName_
protected

Definition at line 48 of file MuScleFitBase.h.

Referenced by MuScleFit::beginOfJobInConstructor().

edm::InputTag MuScleFitBase::theMuonLabel_
protected

Definition at line 46 of file MuScleFitBase.h.

Referenced by TestCorrection::analyze(), and MuScleFit::MuScleFit().

int MuScleFitBase::theMuonType_
protected
std::string MuScleFitBase::theRootFileName_
protected