Millepede-II V04-16-01
Public Member Functions | Private Types | Private Member Functions | Private Attributes | List of all members
Mille Class Reference

Class to write C binary file. More...

#include <Mille.h>

Public Member Functions

 Mille (const char *outFileName, bool asBinary=true, bool writeZero=false)
 author : Gero Flucke, University Hamburg, 2006 date : October 2006 More...
 
 ~Mille ()
 Closes file. More...
 
void mille (int NLC, const float *derLc, int NGL, const float *derGl, const int *label, float rMeas, float sigma)
 Add measurement to buffer. More...
 
void special (int nSpecial, const float *floatings, const int *integers)
 Add special data to buffer. More...
 
void kill ()
 Reset buffers, i.e. kill derivatives accumulated for current set. More...
 
void end ()
 Write buffer (set of derivatives with same local parameters) to file. More...
 

Private Types

enum  { myBufferSize = 5000 }
 buffer size for ints and floats More...
 
enum  { myMaxLabel = (0xFFFFFFFF - (1 << 31)) }
 largest label allowed: 2^31 - 1 More...
 

Private Member Functions

void newSet ()
 Initialize for new set of locals, e.g. new track. More...
 
bool checkBufferSize (int nLocal, int nGlobal)
 Enough space for next nLocal + nGlobal derivatives incl. measurement? More...
 

Private Attributes

std::ofstream myOutFile
 C-binary for output. More...
 
bool myAsBinary
 if false output as text More...
 
bool myWriteZero
 if true also write out derivatives/labels ==0 More...
 
int myBufferInt [myBufferSize]
 to collect labels etc. More...
 
float myBufferFloat [myBufferSize]
 to collect derivatives etc. More...
 
int myBufferPos
 position in buffer More...
 
bool myHasSpecial
 if true, special(..) already called for this record More...
 

Detailed Description

Class to write C binary file.

Class to write a C binary (cf.

below) file of a given name and to fill it with information used as input to pede. Use its member functions mille(), special(), kill() and end() as you would use the fortran MILLE and its entry points MILLSP, KILLE and ENDLE.

For debugging purposes constructor flags enable switching to text output and/or to write also derivatives and labels which are ==0. But note that pede will not be able to read text output and has not been tested with derivatives/labels ==0.

author : Gero Flucke date : October 2006

Revision
1.3
Date
2007/04/16 17:47:38

(last update by

Author
flucke

)

Definition at line 50 of file Mille.h.

Member Enumeration Documentation

◆ anonymous enum

anonymous enum
private

buffer size for ints and floats

Enumerator
myBufferSize 

Definition at line 70 of file Mille.h.

◆ anonymous enum

anonymous enum
private

largest label allowed: 2^31 - 1

Enumerator
myMaxLabel 

Definition at line 76 of file Mille.h.

Constructor & Destructor Documentation

◆ Mille()

Mille::Mille ( const char *  outFileName,
bool  asBinary = true,
bool  writeZero = false 
)

author : Gero Flucke, University Hamburg, 2006 date : October 2006

Revision
1.3
Date
2007/04/16 17:47:38

(last update by

Author
flucke

) Opens outFileName (by default as binary file).

Parameters
[in]outFileNamefile name
[in]asBinaryflag for binary
[in]writeZeroflag for keeping of zeros

Definition at line 45 of file Mille.cc.

References myBufferFloat, myBufferInt, and myOutFile.

◆ ~Mille()

Mille::~Mille ( )

Closes file.

Definition at line 62 of file Mille.cc.

References myOutFile.

Member Function Documentation

◆ checkBufferSize()

bool Mille::checkBufferSize ( int  nLocal,
int  nGlobal 
)
private

Enough space for next nLocal + nGlobal derivatives incl. measurement?

Parameters
[in]nLocalnumber of local derivatives
[in]nGlobalnumber of global derivatives
Returns
true if sufficient space available (else false)

Definition at line 214 of file Mille.cc.

References myBufferInt, myBufferPos, and myBufferSize.

Referenced by mille(), and special().

◆ end()

void Mille::end ( )

Write buffer (set of derivatives with same local parameters) to file.

Definition at line 169 of file Mille.cc.

References readMilleBinary::i, myAsBinary, myBufferFloat, myBufferInt, myBufferPos, and myOutFile.

◆ kill()

void Mille::kill ( )

Reset buffers, i.e. kill derivatives accumulated for current set.

Definition at line 162 of file Mille.cc.

References myBufferPos.

◆ mille()

void Mille::mille ( int  NLC,
const float *  derLc,
int  NGL,
const float *  derGl,
const int *  label,
float  rMeas,
float  sigma 
)

Add measurement to buffer.

Parameters
[in]NLCnumber of local derivatives
[in]derLclocal derivatives
[in]NGLnumber of global derivatives
[in]derGlglobal derivatives
[in]labelglobal labels
[in]rMeasmeasurement (residuum)
[in]sigmaerror

Definition at line 78 of file Mille.cc.

References checkBufferSize(), readMilleBinary::i, myBufferFloat, myBufferInt, myBufferPos, myMaxLabel, myWriteZero, newSet(), and mptest1::sigma.

◆ newSet()

void Mille::newSet ( )
private

Initialize for new set of locals, e.g. new track.

Definition at line 199 of file Mille.cc.

References myBufferFloat, myBufferInt, myBufferPos, and myHasSpecial.

Referenced by mille(), and special().

◆ special()

void Mille::special ( int  nSpecial,
const float *  floatings,
const int *  integers 
)

Add special data to buffer.

Parameters
[in]nSpecialnumber of floats/ints
[in]floatingsfloats
[in]integersints

Definition at line 127 of file Mille.cc.

References checkBufferSize(), readMilleBinary::i, myBufferFloat, myBufferInt, myBufferPos, myHasSpecial, and newSet().

Member Data Documentation

◆ myAsBinary

bool Mille::myAsBinary
private

if false output as text

Definition at line 67 of file Mille.h.

Referenced by end().

◆ myBufferFloat

float Mille::myBufferFloat[myBufferSize]
private

to collect derivatives etc.

Definition at line 72 of file Mille.h.

Referenced by end(), Mille(), mille(), newSet(), and special().

◆ myBufferInt

int Mille::myBufferInt[myBufferSize]
private

to collect labels etc.

Definition at line 71 of file Mille.h.

Referenced by checkBufferSize(), end(), Mille(), mille(), newSet(), and special().

◆ myBufferPos

int Mille::myBufferPos
private

position in buffer

Definition at line 73 of file Mille.h.

Referenced by checkBufferSize(), end(), kill(), mille(), newSet(), and special().

◆ myHasSpecial

bool Mille::myHasSpecial
private

if true, special(..) already called for this record

Definition at line 74 of file Mille.h.

Referenced by newSet(), and special().

◆ myOutFile

std::ofstream Mille::myOutFile
private

C-binary for output.

Definition at line 66 of file Mille.h.

Referenced by end(), Mille(), and ~Mille().

◆ myWriteZero

bool Mille::myWriteZero
private

if true also write out derivatives/labels ==0

Definition at line 68 of file Mille.h.

Referenced by mille().


The documentation for this class was generated from the following files: