CMS 3D CMS Logo

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

#include <MuonResidualsFitter.h>

Inheritance diagram for MuonResidualsFitter:
MuonResiduals1DOFFitter MuonResiduals5DOFFitter MuonResiduals6DOFFitter MuonResiduals6DOFrphiFitter MuonResidualsAngleFitter MuonResidualsBfieldAngleFitter MuonResidualsPositionFitter

Public Types

enum  { kPureGaussian, kPowerLawTails, kROOTVoigt, kGaussPowerTails }
 
enum  {
  k1DOF, k5DOF, k6DOF, k6DOFrphi,
  kPositionFitter, kAngleFitter, kAngleBfieldFitter
}
 

Public Member Functions

double errorerror (int parNum)
 
void fill (double *residual)
 
virtual bool fit (Alignable *ali)=0
 
void fix (int parNum, bool value=true)
 
bool fixed (int parNum)
 
double loglikelihood ()
 
 MuonResidualsFitter (int residualsModel, int minHits, bool weightAlignment=true)
 
virtual int ndata ()=0
 
virtual int npar ()=0
 
long numResiduals () const
 
long numsegments ()
 
virtual double plot (std::string name, TFileDirectory *dir, Alignable *ali)=0
 
void plotsimple (std::string name, TFileDirectory *dir, int which, double multiplier)
 
void plotweighted (std::string name, TFileDirectory *dir, int which, int whichredchi2, double multiplier)
 
void read (FILE *file, int which=0)
 
std::vector< double * >
::const_iterator 
residuals_begin () const
 
std::vector< double * >
::const_iterator 
residuals_end () const
 
int residualsModel () const
 
void setPrintLevel (int printLevel)
 
void setStrategy (int strategy)
 
virtual double sumofweights ()=0
 
virtual int type () const =0
 
double value (int parNum)
 
void write (FILE *file, int which=0)
 
virtual ~MuonResidualsFitter ()
 

Protected Member Functions

bool dofit (void(*fcn)(int &, double *, double &, double *, int), std::vector< int > &parNum, std::vector< std::string > &parName, std::vector< double > &start, std::vector< double > &step, std::vector< double > &low, std::vector< double > &high)
 
virtual void inform (TMinuit *tMinuit)=0
 
void initialize_table ()
 

Protected Attributes

std::vector< double > m_error
 
std::vector< bool > m_fixed
 
double m_loglikelihood
 
int m_minHits
 
int m_printLevel
 
std::vector< double * > m_residuals
 
int m_residualsModel
 
int m_strategy
 
std::vector< double > m_value
 
bool m_weightAlignment
 

Detailed Description

Date:
2010/02/11 19:11:56
Revision:
1.14
Author
J. Pivarski - Texas A&M University pivar.nosp@m.ski@.nosp@m.physi.nosp@m.cs.t.nosp@m.amu.e.nosp@m.du

Definition at line 27 of file MuonResidualsFitter.h.

Member Enumeration Documentation

anonymous enum
anonymous enum

Constructor & Destructor Documentation

MuonResidualsFitter::MuonResidualsFitter ( int  residualsModel,
int  minHits,
bool  weightAlignment = true 
)
inline

Definition at line 46 of file MuonResidualsFitter.h.

References edm::hlt::Exception, kGaussPowerTails, kPowerLawTails, kPureGaussian, kROOTVoigt, and m_residualsModel.

virtual MuonResidualsFitter::~MuonResidualsFitter ( )
inlinevirtual

Definition at line 51 of file MuonResidualsFitter.h.

References residuals_begin(), and residuals_end().

51  {
52  for (std::vector<double*>::const_iterator residual = residuals_begin(); residual != residuals_end(); ++residual) {
53  delete [] (*residual);
54  }
55  };
std::vector< double * >::const_iterator residuals_end() const
std::vector< double * >::const_iterator residuals_begin() const

Member Function Documentation

bool MuonResidualsFitter::dofit ( void(*)(int &, double *, double &, double *, int)  fcn,
std::vector< int > &  parNum,
std::vector< std::string > &  parName,
std::vector< double > &  start,
std::vector< double > &  step,
std::vector< double > &  low,
std::vector< double > &  high 
)
protected

Definition at line 192 of file MuonResidualsFitter.cc.

References fitWZ::arglist, fcn(), fixed(), i, inform(), m_error, m_loglikelihood, m_printLevel, m_strategy, m_value, MuonResidualsFitter_TMinuit, npar(), and v.

Referenced by MuonResiduals1DOFFitter::fit(), MuonResidualsAngleFitter::fit(), MuonResidualsBfieldAngleFitter::fit(), MuonResidualsPositionFitter::fit(), MuonResiduals5DOFFitter::fit(), MuonResiduals6DOFrphiFitter::fit(), and MuonResiduals6DOFFitter::fit().

192  {
194 
195  MuonResidualsFitter_TMinuit = new TMinuit(npar());
197  MuonResidualsFitter_TMinuit->SetObjectFit(fitinfo);
200 
201  std::vector<int>::const_iterator iNum = parNum.begin();
202  std::vector<std::string>::const_iterator iName = parName.begin();
203  std::vector<double>::const_iterator istart = start.begin();
204  std::vector<double>::const_iterator istep = step.begin();
205  std::vector<double>::const_iterator ilow = low.begin();
206  std::vector<double>::const_iterator ihigh = high.begin();
207 
208  for (; iNum != parNum.end(); ++iNum, ++iName, ++istart, ++istep, ++ilow, ++ihigh) {
209  MuonResidualsFitter_TMinuit->DefineParameter(*iNum, iName->c_str(), *istart, *istep, *ilow, *ihigh);
210  if (fixed(*iNum)) MuonResidualsFitter_TMinuit->FixParameter(*iNum);
211  }
212 
213  double arglist[10];
214  int ierflg;
215  int smierflg; //second MIGRAD ierflg
216 
217  // chi^2 errors should be 1.0, log-likelihood should be 0.5
218  for (int i = 0; i < 10; i++) arglist[i] = 0.;
219  arglist[0] = 0.5;
220  ierflg = 0;
221  smierflg = 0;
222  MuonResidualsFitter_TMinuit->mnexcm("SET ERR", arglist, 1, ierflg);
223  if (ierflg != 0) { delete MuonResidualsFitter_TMinuit; delete fitinfo; return false; }
224 
225  // set strategy = 2 (more refined fits)
226  for (int i = 0; i < 10; i++) arglist[i] = 0.;
227  arglist[0] = m_strategy;
228  ierflg = 0;
229  MuonResidualsFitter_TMinuit->mnexcm("SET STR", arglist, 1, ierflg);
230  if (ierflg != 0) { delete MuonResidualsFitter_TMinuit; delete fitinfo; return false; }
231 
232  bool try_again = false;
233 
234  // minimize
235  for (int i = 0; i < 10; i++) arglist[i] = 0.;
236  arglist[0] = 50000;
237  ierflg = 0;
238  MuonResidualsFitter_TMinuit->mnexcm("MIGRAD", arglist, 1, ierflg);
239  if (ierflg != 0) try_again = true;
240 
241  // just once more, if needed (using the final Minuit parameters from the failed fit; often works)
242  if (try_again) {
243  // minimize
244  for (int i = 0; i < 10; i++) arglist[i] = 0.;
245  arglist[0] = 50000;
246  MuonResidualsFitter_TMinuit->mnexcm("MIGRAD", arglist, 1, smierflg);
247  }
248 
249  Double_t fmin, fedm, errdef;
250  Int_t npari, nparx, istat;
251  MuonResidualsFitter_TMinuit->mnstat(fmin, fedm, errdef, npari, nparx, istat);
252 
253  if (istat != 3) {
254  for (int i = 0; i < 10; i++) arglist[i] = 0.;
255  ierflg = 0;
256  MuonResidualsFitter_TMinuit->mnexcm("HESSE", arglist, 0, ierflg);
257  }
258 
259  // read-out the results
260  m_loglikelihood = -fmin;
261 
262  m_value.clear();
263  m_error.clear();
264  for (int i = 0; i < npar(); i++) {
265  double v, e;
266  MuonResidualsFitter_TMinuit->GetParameter(i, v, e);
267  m_value.push_back(v);
268  m_error.push_back(e);
269  }
270 
272  delete fitinfo;
273  if (smierflg != 0) return false;
274  return true;
275 }
tuple arglist
Definition: fitWZ.py:38
int i
Definition: DBlmapReader.cc:9
virtual void inform(TMinuit *tMinuit)=0
list step
Definition: launcher.py:15
virtual int npar()=0
std::vector< double > m_error
std::vector< double > m_value
bool fixed(int parNum)
static TMinuit * MuonResidualsFitter_TMinuit
void fcn(int &, double *, double &, double *, int)
mathSSE::Vec4< T > v
double MuonResidualsFitter::errorerror ( int  parNum)
inline

Definition at line 93 of file MuonResidualsFitter.h.

References m_error, and npar().

Referenced by MuonResidualsTwoBin::errorerror().

93 { assert(0 <= parNum && parNum < npar()); return m_error[parNum]; };
virtual int npar()=0
std::vector< double > m_error
void MuonResidualsFitter::fill ( double *  residual)
inline

Definition at line 85 of file MuonResidualsFitter.h.

References m_residuals.

Referenced by MuonResidualsTwoBin::fill(), and read().

85  {
86  m_residuals.push_back(residual);
87  };
std::vector< double * > m_residuals
virtual bool MuonResidualsFitter::fit ( Alignable ali)
pure virtual
void MuonResidualsFitter::fix ( int  parNum,
bool  value = true 
)
inline

Definition at line 64 of file MuonResidualsFitter.h.

References i, m_fixed, npar(), and value().

Referenced by MuonResidualsTwoBin::fix().

64  {
65  assert(0 <= parNum && parNum < npar());
66  if (m_fixed.size() == 0) {
67  for (int i = 0; i < npar(); i++) {
68  m_fixed.push_back(false);
69  }
70  }
71  m_fixed[parNum] = value;
72  };
int i
Definition: DBlmapReader.cc:9
virtual int npar()=0
double value(int parNum)
std::vector< bool > m_fixed
bool MuonResidualsFitter::fixed ( int  parNum)
inline

Definition at line 74 of file MuonResidualsFitter.h.

References m_fixed, and npar().

Referenced by dofit(), MuonResiduals1DOFFitter::fit(), MuonResiduals5DOFFitter::fit(), MuonResiduals6DOFrphiFitter::fit(), MuonResiduals6DOFFitter::fit(), and MuonResidualsTwoBin::fixed().

74  {
75  assert(0 <= parNum && parNum < npar());
76  if (m_fixed.size() == 0) return false;
77  else return m_fixed[parNum];
78  };
virtual int npar()=0
std::vector< bool > m_fixed
virtual void MuonResidualsFitter::inform ( TMinuit *  tMinuit)
protectedpure virtual
void MuonResidualsFitter::initialize_table ( )
protected

Definition at line 120 of file MuonResidualsFitter.cc.

References gather_cfg::cout, edm::hlt::Exception, kPowerLawTails, MuonResidualsFitter_compute_log_convolution(), MuonResidualsFitter_gsbinsize, MuonResidualsFitter_lookup_table, MuonResidualsFitter_numgsbins, MuonResidualsFitter_numtsbins, MuonResidualsFitter_table_initialized, MuonResidualsFitter_tsbinsize, residualsModel(), and value().

Referenced by MuonResiduals1DOFFitter::fit(), MuonResidualsAngleFitter::fit(), MuonResidualsBfieldAngleFitter::fit(), MuonResidualsPositionFitter::fit(), MuonResiduals5DOFFitter::fit(), MuonResiduals6DOFrphiFitter::fit(), and MuonResiduals6DOFFitter::fit().

120  {
123 
124  std::ifstream convolution_table("convolution_table.txt");
125  if (convolution_table.is_open()) {
126  int numgsbins = 0;
127  int numtsbins = 0;
128  double tsbinsize = 0.;
129  double gsbinsize = 0.;
130 
131  convolution_table >> numgsbins >> numtsbins >> tsbinsize >> gsbinsize;
132  if (numgsbins != MuonResidualsFitter_numgsbins || numtsbins != MuonResidualsFitter_numtsbins ||
133  tsbinsize != MuonResidualsFitter_tsbinsize || gsbinsize != MuonResidualsFitter_gsbinsize) {
134  throw cms::Exception("MuonResidualsFitter") << "convolution_table.txt has the wrong bin width/bin size. Throw it away and let the fitter re-create the file." << std::endl;
135  }
136 
137  for (int gsbin = 0; gsbin < MuonResidualsFitter_numgsbins; gsbin++) {
138  for (int tsbin = 0; tsbin < MuonResidualsFitter_numtsbins; tsbin++) {
139  int read_gsbin = 0;
140  int read_tsbin = 0;
141  double value = 0.;
142 
143  convolution_table >> read_gsbin >> read_tsbin >> value;
144  if (read_gsbin != gsbin || read_tsbin != tsbin) {
145  throw cms::Exception("MuonResidualsFitter") << "convolution_table.txt is out of order. Throw it away and let the fitter re-create the file." << std::endl;
146  }
147 
148  MuonResidualsFitter_lookup_table[gsbin][tsbin] = value;
149  }
150  }
151 
152  convolution_table.close();
153  }
154 
155  else {
156  std::ofstream convolution_table2("convolution_table.txt");
157 
158  if (!convolution_table2.is_open()) {
159  throw cms::Exception("MuonResidualsFitter") << "Couldn't write to file convolution_table.txt" << std::endl;
160  }
161 
162  convolution_table2 << MuonResidualsFitter_numgsbins << " " << MuonResidualsFitter_numtsbins << " " << MuonResidualsFitter_tsbinsize << " " << MuonResidualsFitter_gsbinsize << std::endl;
163 
164  edm::LogWarning("MuonResidualsFitter") << "Initializing convolution look-up table (takes a few minutes)..." << std::endl;
165  std::cout << "Initializing convolution look-up table (takes a few minutes)..." << std::endl;
166 
167  for (int gsbin = 0; gsbin < MuonResidualsFitter_numgsbins; gsbin++) {
168  double gammaoversigma = double(gsbin) * MuonResidualsFitter_gsbinsize;
169 
170  std::cout << " gsbin " << gsbin << "/" << MuonResidualsFitter_numgsbins << std::endl;
171 
172  for (int tsbin = 0; tsbin < MuonResidualsFitter_numtsbins; tsbin++) {
173  double toversigma = double(tsbin) * MuonResidualsFitter_tsbinsize;
174 
175  // 1e-6 errors (out of a value of ~0.01) with max=100, step=0.001, power=4 (max=1000 does a little better with the tails)
176  MuonResidualsFitter_lookup_table[gsbin][tsbin] = MuonResidualsFitter_compute_log_convolution(toversigma, gammaoversigma);
177 
178  // <10% errors with max=20, step=0.005, power=4 (faster computation for testing)
179  // MuonResidualsFitter_lookup_table[gsbin][tsbin] = MuonResidualsFitter_compute_log_convolution(toversigma, gammaoversigma, 100., 0.005, 4.);
180 
181  convolution_table2 << gsbin << " " << tsbin << " " << MuonResidualsFitter_lookup_table[gsbin][tsbin] << std::endl;
182  }
183  }
184 
185  convolution_table2.close();
186 
187  edm::LogWarning("MuonResidualsFitter") << "Initialization done!" << std::endl;
188  std::cout << "Initialization done!" << std::endl;
189  }
190 }
const int MuonResidualsFitter_numgsbins
double value(int parNum)
double MuonResidualsFitter_compute_log_convolution(double toversigma, double gammaoversigma, double max=1000., double step=0.001, double power=4.)
const int MuonResidualsFitter_numtsbins
const double MuonResidualsFitter_gsbinsize
const double MuonResidualsFitter_tsbinsize
bool MuonResidualsFitter_table_initialized
double MuonResidualsFitter_lookup_table[MuonResidualsFitter_numgsbins][MuonResidualsFitter_numtsbins]
tuple cout
Definition: gather_cfg.py:41
double MuonResidualsFitter::loglikelihood ( )
inline

Definition at line 94 of file MuonResidualsFitter.h.

References m_loglikelihood.

Referenced by MuonResidualsTwoBin::loglikelihood().

94 { return m_loglikelihood; };
virtual int MuonResidualsFitter::ndata ( )
pure virtual
virtual int MuonResidualsFitter::npar ( )
pure virtual
long MuonResidualsFitter::numResiduals ( ) const
inline
long MuonResidualsFitter::numsegments ( )
inline

Definition at line 95 of file MuonResidualsFitter.h.

References residuals_begin(), and residuals_end().

Referenced by MuonResidualsTwoBin::numsegments().

95  {
96  long num = 0;
97  for (std::vector<double*>::const_iterator resiter = residuals_begin(); resiter != residuals_end(); ++resiter) {
98  num++;
99  }
100  return num;
101  };
long long int num
Definition: procUtils.cc:71
std::vector< double * >::const_iterator residuals_end() const
std::vector< double * >::const_iterator residuals_begin() const
virtual double MuonResidualsFitter::plot ( std::string  name,
TFileDirectory dir,
Alignable ali 
)
pure virtual
void MuonResidualsFitter::plotsimple ( std::string  name,
TFileDirectory dir,
int  which,
double  multiplier 
)

Definition at line 355 of file MuonResidualsFitter.cc.

References estimatePileup::hist, TFileDirectory::make(), csvReporter::r, residuals_begin(), residuals_end(), and svgfig::window().

Referenced by MuonResidualsTwoBin::plotsimple().

355  {
356  double window = 100.;
357  if (which == 0) window = 2.*30.;
358  else if (which == 1) window = 2.*30.;
359  else if (which == 2) window = 2.*20.;
360  else if (which == 3) window = 2.*50.;
361 
362  TH1F *hist = dir->make<TH1F>(name.c_str(), "", 200, -window, window);
363 
364  for (std::vector<double*>::const_iterator r = residuals_begin(); r != residuals_end(); ++r) {
365  hist->Fill(multiplier * (*r)[which]);
366  }
367 }
def window
Definition: svgfig.py:642
std::vector< double * >::const_iterator residuals_end() const
T * make() const
make new ROOT object
std::vector< double * >::const_iterator residuals_begin() const
void MuonResidualsFitter::plotweighted ( std::string  name,
TFileDirectory dir,
int  which,
int  whichredchi2,
double  multiplier 
)

Definition at line 369 of file MuonResidualsFitter.cc.

References estimatePileup::hist, TFileDirectory::make(), csvReporter::r, residuals_begin(), residuals_end(), CommonMethods::weight(), and svgfig::window().

Referenced by MuonResidualsTwoBin::plotweighted().

369  {
370  double window = 100.;
371  if (which == 0) window = 2.*30.;
372  else if (which == 1) window = 2.*30.;
373  else if (which == 2) window = 2.*20.;
374  else if (which == 3) window = 2.*50.;
375 
376  TH1F *hist = dir->make<TH1F>(name.c_str(), "", 200, -window, window);
377 
378  for (std::vector<double*>::const_iterator r = residuals_begin(); r != residuals_end(); ++r) {
379  double weight = 1./(*r)[whichredchi2];
380  if (TMath::Prob(1./weight*12, 12) < 0.99) {
381  hist->Fill(multiplier * (*r)[which], weight);
382  }
383  }
384 }
def window
Definition: svgfig.py:642
std::vector< double * >::const_iterator residuals_end() const
T * make() const
make new ROOT object
std::vector< double * >::const_iterator residuals_begin() const
void MuonResidualsFitter::read ( FILE *  file,
int  which = 0 
)

Definition at line 311 of file MuonResidualsFitter.cc.

References edm::hlt::Exception, fill(), i, ndata(), and tablePrinter::rows.

Referenced by python.Vispa.Plugins.EdmBrowser.EdmDataAccessor.EdmDataAccessor::goto(), MuonResidualsTwoBin::read(), and python.Vispa.Plugins.EdmBrowser.EdmDataAccessor.EdmDataAccessor::setFilterBranches().

311  {
312  long rows = -100;
313  int cols = -100;
314  int readwhich = -100;
315 
316  fread(&rows, sizeof(long), 1, file);
317  fread(&cols, sizeof(int), 1, file);
318  fread(&readwhich, sizeof(int), 1, file);
319 
320  if (cols != ndata() || rows < 0 || readwhich != which) throw cms::Exception("MuonResidualsFitter") << "temporary file is corrupted (which = " << which << " readwhich = " << readwhich << " rows = " << rows << " cols = " << cols << ")" << std::endl;
321 
322  double *likeAChecksum = new double[cols];
323  double *likeAChecksum2 = new double[cols];
324  for (int i = 0; i < cols; i++) {
325  likeAChecksum[i] = 0.;
326  likeAChecksum2[i] = 0.;
327  }
328 
329  for (long row = 0; row < rows; row++) {
330  double *residual = new double[cols];
331  fread(residual, sizeof(double), cols, file);
332  fill(residual);
333 
334  for (int i = 0; i < cols; i++) {
335  if (fabs(residual[i]) > likeAChecksum[i]) likeAChecksum[i] = fabs(residual[i]);
336  if (fabs(residual[i]) < likeAChecksum2[i]) likeAChecksum2[i] = fabs(residual[i]);
337  }
338  } // end loop over records in file
339 
340  double *readChecksum = new double[cols];
341  double *readChecksum2 = new double[cols];
342  fread(readChecksum, sizeof(double), cols, file);
343  fread(readChecksum2, sizeof(double), cols, file);
344 
345  for (int i = 0; i < cols; i++) {
346  if (fabs(likeAChecksum[i] - readChecksum[i]) > 1e-10 || fabs(1./likeAChecksum2[i] - 1./readChecksum2[i]) > 1e10) {
347  throw cms::Exception("MuonResidualsFitter") << "temporary file is corrupted (which = " << which << " rows = " << rows << " likeAChecksum " << likeAChecksum[i] << " != readChecksum " << readChecksum[i] << " " << " likeAChecksum2 " << likeAChecksum2[i] << " != readChecksum2 " << readChecksum2[i] << ")" << std::endl;
348  }
349  }
350 
351  delete [] likeAChecksum;
352  delete [] likeAChecksum2;
353 }
int i
Definition: DBlmapReader.cc:9
void fill(double *residual)
virtual int ndata()=0
std::vector<double*>::const_iterator MuonResidualsFitter::residuals_begin ( ) const
inline
std::vector<double*>::const_iterator MuonResidualsFitter::residuals_end ( ) const
inline
int MuonResidualsFitter::residualsModel ( ) const
inline
void MuonResidualsFitter::setPrintLevel ( int  printLevel)
inline

Definition at line 80 of file MuonResidualsFitter.h.

References m_printLevel.

Referenced by MuonResidualsTwoBin::setPrintLevel().

80 { m_printLevel = printLevel; };
void MuonResidualsFitter::setStrategy ( int  strategy)
inline

Definition at line 81 of file MuonResidualsFitter.h.

References m_strategy.

Referenced by MuonResidualsTwoBin::setStrategy().

81 { m_strategy = strategy; };
virtual double MuonResidualsFitter::sumofweights ( )
pure virtual
virtual int MuonResidualsFitter::type ( ) const
pure virtual
double MuonResidualsFitter::value ( int  parNum)
inline
void MuonResidualsFitter::write ( FILE *  file,
int  which = 0 
)

Definition at line 277 of file MuonResidualsFitter.cc.

References i, ndata(), numResiduals(), residuals_begin(), residuals_end(), and tablePrinter::rows.

Referenced by MuonResidualsTwoBin::write().

277  {
278  long rows = numResiduals();
279  int cols = ndata();
280  int whichcopy = which;
281 
282  fwrite(&rows, sizeof(long), 1, file);
283  fwrite(&cols, sizeof(int), 1, file);
284  fwrite(&whichcopy, sizeof(int), 1, file);
285 
286  double *likeAChecksum = new double[cols];
287  double *likeAChecksum2 = new double[cols];
288  for (int i = 0; i < cols; i++) {
289  likeAChecksum[i] = 0.;
290  likeAChecksum2[i] = 0.;
291  }
292 
293  for (std::vector<double*>::const_iterator residual = residuals_begin(); residual != residuals_end(); ++residual) {
294  fwrite((*residual), sizeof(double), cols, file);
295 
296  for (int i = 0; i < cols; i++) {
297  if (fabs((*residual)[i]) > likeAChecksum[i]) likeAChecksum[i] = fabs((*residual)[i]);
298  if (fabs((*residual)[i]) < likeAChecksum2[i]) likeAChecksum2[i] = fabs((*residual)[i]);
299  }
300  } // end loop over residuals
301 
302  // the idea is that mal-formed doubles are likely to be huge values (or tiny values)
303  // because the exponent gets screwed up; we want to check for that
304  fwrite(likeAChecksum, sizeof(double), cols, file);
305  fwrite(likeAChecksum2, sizeof(double), cols, file);
306 
307  delete [] likeAChecksum;
308  delete [] likeAChecksum2;
309 }
int i
Definition: DBlmapReader.cc:9
long numResiduals() const
virtual int ndata()=0
std::vector< double * >::const_iterator residuals_end() const
std::vector< double * >::const_iterator residuals_begin() const

Member Data Documentation

std::vector<double> MuonResidualsFitter::m_error
protected

Definition at line 132 of file MuonResidualsFitter.h.

Referenced by dofit(), and errorerror().

std::vector<bool> MuonResidualsFitter::m_fixed
protected

Definition at line 126 of file MuonResidualsFitter.h.

Referenced by fix(), and fixed().

double MuonResidualsFitter::m_loglikelihood
protected

Definition at line 133 of file MuonResidualsFitter.h.

Referenced by dofit(), and loglikelihood().

int MuonResidualsFitter::m_minHits
protected
int MuonResidualsFitter::m_printLevel
protected

Definition at line 127 of file MuonResidualsFitter.h.

Referenced by dofit(), and setPrintLevel().

std::vector<double*> MuonResidualsFitter::m_residuals
protected

Definition at line 129 of file MuonResidualsFitter.h.

Referenced by fill(), numResiduals(), residuals_begin(), and residuals_end().

int MuonResidualsFitter::m_residualsModel
protected

Definition at line 123 of file MuonResidualsFitter.h.

Referenced by MuonResidualsFitter(), and residualsModel().

int MuonResidualsFitter::m_strategy
protected

Definition at line 127 of file MuonResidualsFitter.h.

Referenced by dofit(), and setStrategy().

std::vector<double> MuonResidualsFitter::m_value
protected

Definition at line 131 of file MuonResidualsFitter.h.

Referenced by dofit(), and value().

bool MuonResidualsFitter::m_weightAlignment
protected