CMS 3D CMS Logo

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 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 ()(false)
 

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

Member Function Documentation

void MuScleFitBase::clearHistoMap ( )
protected

Clean the histograms map.

Definition at line 110 of file MuScleFitBase.cc.

References trackerHits::histo, and mapHisto_.

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

110  {
111  for (std::map<std::string, Histograms*>::const_iterator histo=mapHisto_.begin();
112  histo!=mapHisto_.end(); histo++) {
113  delete (*histo).second;
114  }
115 }
std::map< std::string, Histograms * > mapHisto_
The map of histograms.
Definition: MuScleFitBase.h:77
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_, PFRecoTauDiscriminationByHPSSelection_cfi::maxMass, MuonErrorMatrixAnalyzer_cfi::maxPt, PFRecoTauDiscriminationByHPSSelection_cfi::minMass, MuScleFitUtils::resfind, and theMuonType_.

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

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_["hRecBestMuVSPhi"] = new HPartVSPhi ("hRecBestMuVSPhi");
33  //mapHisto_["hRecBestMu_Acc"] = new HParticle ("hRecBestMu_Acc", minMass, maxMass);
34  mapHisto_["hDeltaRecBestMu"] = new HDelta ("hDeltaRecBestMu");
35 
36  mapHisto_["hRecBestRes"] = new HParticle ("hRecBestRes", minMass, maxMass, maxPt);
37  mapHisto_["hRecBestResAllEvents"] = new HParticle ("hRecBestResAllEvents", minMass, maxMass, maxPt);
38  //mapHisto_["hRecBestRes_Acc"] = new HParticle ("hRecBestRes_Acc", minMass, maxMass);
39  // If not finding Z, use a smaller mass window
40  mapHisto_["hRecBestResVSMu"] = new HMassVSPart ("hRecBestResVSMu", minMass, maxMass, maxPt);
41  mapHisto_["hRecBestResVSRes"] = new HMassVSPart ("hRecBestResVSRes", minMass, maxMass, maxPt);
42  //Generated Mass versus pt
43  mapHisto_["hGenResVSMu"] = new HMassVSPart ("hGenResVSMu", minMass, maxMass, maxPt);
44  // Likelihood values VS muon variables
45  // -------------------------------------
46  mapHisto_["hLikeVSMu"] = new HLikelihoodVSPart ("hLikeVSMu");
47  mapHisto_["hLikeVSMuMinus"] = new HLikelihoodVSPart ("hLikeVSMuMinus");
48  mapHisto_["hLikeVSMuPlus"] = new HLikelihoodVSPart ("hLikeVSMuPlus");
49 
50  //Resolution VS muon kinematic
51  //----------------------------
52  mapHisto_["hResolMassVSMu"] = new HResolutionVSPart( outputFile, "hResolMassVSMu", maxPt, 0., yMaxEta, 0., yMaxPt, true );
53  mapHisto_["hFunctionResolMassVSMu"] = new HResolutionVSPart( outputFile, "hFunctionResolMassVSMu", maxPt, 0, 0.1, 0, 0.1, true );
54  mapHisto_["hResolPtGenVSMu"] = new HResolutionVSPart( outputFile, "hResolPtGenVSMu", maxPt, -0.1, 0.1, -0.1, 0.1 );
55  mapHisto_["hResolPtSimVSMu"] = new HResolutionVSPart( outputFile, "hResolPtSimVSMu", maxPt, -0.1, 0.1, -0.1, 0.1 );
56  mapHisto_["hResolEtaGenVSMu"] = new HResolutionVSPart( outputFile, "hResolEtaGenVSMu", maxPt, -0.02, 0.02, -0.02, 0.02 );
57  mapHisto_["hResolEtaSimVSMu"] = new HResolutionVSPart( outputFile, "hResolEtaSimVSMu", maxPt, -0.02, 0.02, -0.02, 0.02 );
58  mapHisto_["hResolThetaGenVSMu"] = new HResolutionVSPart( outputFile, "hResolThetaGenVSMu", maxPt, -0.02, 0.02, -0.02, 0.02 );
59  mapHisto_["hResolThetaSimVSMu"] = new HResolutionVSPart( outputFile, "hResolThetaSimVSMu", maxPt, -0.02, 0.02, -0.02, 0.02 );
60  mapHisto_["hResolCotgThetaGenVSMu"] = new HResolutionVSPart( outputFile, "hResolCotgThetaGenVSMu", maxPt, -0.02, 0.02, -0.02, 0.02 );
61  mapHisto_["hResolCotgThetaSimVSMu"] = new HResolutionVSPart( outputFile, "hResolCotgThetaSimVSMu", maxPt, -0.02, 0.02, -0.02, 0.02 );
62  mapHisto_["hResolPhiGenVSMu"] = new HResolutionVSPart( outputFile, "hResolPhiGenVSMu", maxPt, -0.02, 0.02, -0.02, 0.02 );
63  mapHisto_["hResolPhiSimVSMu"] = new HResolutionVSPart( outputFile, "hResolPhiSimVSMu", maxPt, -0.02, 0.02, -0.02, 0.02 );
64 
66  mapHisto_["hdMdPt1"] = new HResolutionVSPart( outputFile, "hdMdPt1", maxPt, 0, 100, -3.2, 3.2, true );
67  mapHisto_["hdMdPt2"] = new HResolutionVSPart( outputFile, "hdMdPt2", maxPt, 0, 100, -3.2, 3.2, true );
68  mapHisto_["hdMdPhi1"] = new HResolutionVSPart( outputFile, "hdMdPhi1", maxPt, 0, 100, -3.2, 3.2, true );
69  mapHisto_["hdMdPhi2"] = new HResolutionVSPart( outputFile, "hdMdPhi2", maxPt, 0, 100, -3.2, 3.2, true );
70  mapHisto_["hdMdCotgTh1"] = new HResolutionVSPart( outputFile, "hdMdCotgTh1", maxPt, 0, 100, -3.2, 3.2, true );
71  mapHisto_["hdMdCotgTh2"] = new HResolutionVSPart( outputFile, "hdMdCotgTh2", maxPt, 0, 100, -3.2, 3.2, true );
72  }
73 
74  HTH2D * recoGenHisto = new HTH2D(outputFile, "hPtRecoVsPtGen", "Pt reco vs Pt gen", "hPtRecoVsPtGen", 120, 0., 120., 120, 0, 120.);
75  (*recoGenHisto)->SetXTitle("Pt gen (GeV)");
76  (*recoGenHisto)->SetYTitle("Pt reco (GeV)");
77  mapHisto_["hPtRecoVsPtGen"] = recoGenHisto;
78  HTH2D * recoSimHisto = new HTH2D(outputFile, "hPtRecoVsPtSim", "Pt reco vs Pt sim", "hPtRecoVsPtSim", 120, 0., 120., 120, 0, 120.);
79  (*recoSimHisto)->SetXTitle("Pt sim (GeV)");
80  (*recoSimHisto)->SetYTitle("Pt reco (GeV)");
81  mapHisto_["hPtRecoVsPtSim"] = recoSimHisto;
82  // Resolutions from resolution functions
83  // -------------------------------------
84  mapHisto_["hFunctionResolPt"] = new HFunctionResolution( outputFile, "hFunctionResolPt", maxPt );
85  mapHisto_["hFunctionResolCotgTheta"] = new HFunctionResolution( outputFile, "hFunctionResolCotgTheta", maxPt );
86  mapHisto_["hFunctionResolPhi"] = new HFunctionResolution( outputFile, "hFunctionResolPhi", maxPt );
87 
88  // Mass probability histograms
89  // ---------------------------
90  // The word "profile" is added to the title automatically
91  mapHisto_["hMass_P"] = new HTProfile( outputFile, "Mass_P", "Mass probability", 4000, 0., 200., 0., 50. );
92  mapHisto_["hMass_fine_P"] = new HTProfile( outputFile, "Mass_fine_P", "Mass probability", 4000, 0., 20., 0., 50. );
93  mapHisto_["hMass_Probability"] = new HTH1D( outputFile, "Mass_Probability", "Mass probability", 4000, 0., 200.);
94  mapHisto_["hMass_fine_Probability"] = new HTH1D( outputFile, "Mass_fine_Probability", "Mass probability", 4000, 0., 20.);
95  mapHisto_["hMassProbVsMu"] = new HMassVSPartProfile( "hMassProbVsMu", minMass, maxMass, maxPt );
96  mapHisto_["hMassProbVsRes"] = new HMassVSPartProfile( "hMassProbVsRes", minMass, maxMass, maxPt );
97  mapHisto_["hMassProbVsMu_fine"] = new HMassVSPartProfile( "hMassProbVsMu_fine", minMass, maxMass, maxPt );
98  mapHisto_["hMassProbVsRes_fine"] = new HMassVSPartProfile( "hMassProbVsRes_fine", minMass, maxMass, maxPt );
99 
100  // (M_reco-M_gen)/M_gen vs (pt, eta) of the muons from MC
101  mapHisto_["hDeltaMassOverGenMassVsPt"] = new HTH2D( outputFile, "DeltaMassOverGenMassVsPt", "DeltaMassOverGenMassVsPt", "DeltaMassOverGenMass", 200, 0, maxPt, 200, -0.2, 0.2 );
102  mapHisto_["hDeltaMassOverGenMassVsEta"] = new HTH2D( outputFile, "DeltaMassOverGenMassVsEta", "DeltaMassOverGenMassVsEta", "DeltaMassOverGenMass", 200, -3., 3., 200, -0.2, 0.2 );
103 
104  // Square of mass resolution vs (pt, eta) of the muons from MC
105  // EM 2012.12.19 mapHisto_["hMassResolutionVsPtEta"] = new HCovarianceVSxy( "Mass", "Mass", 100, 0., maxPt, 60, -3, 3, outputFile->mkdir("MassCovariance") );
106  // Mass resolution vs (pt, eta) from resolution function
107  mapHisto_["hFunctionResolMass"] = new HFunctionResolution( outputFile, "hFunctionResolMass", maxPt );
108 }
#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:172
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:203
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:131
static std::vector< int > resfind
A set of histograms for resolution.
Definition: Histograms.h:1139
void MuScleFitBase::readProbabilityDistributionsFromFile ( )
protected

Read probability distributions from a local root file.

Definition at line 126 of file MuScleFitBase.cc.

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

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

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

References trackerHits::histo, mapHisto_, and theFiles_.

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

117  {
118  for (std::map<std::string, Histograms*>::const_iterator histo=mapHisto_.begin();
119  histo!=mapHisto_.end(); histo++) {
120  // This is to avoid writing into subdirs. Need a workaround.
121  theFiles_[iLoop]->cd();
122  (*histo).second->Write();
123  }
124 }
std::map< std::string, Histograms * > mapHisto_
The map of histograms.
Definition: MuScleFitBase.h:77
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 MuScleFit::MuScleFit().

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