Analysis Software
Documentation for sPHENIX simulation software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Mille Class Reference

Class to write C binary file. More...

#include <coresoftware/blob/master/offline/packages/TrackerMillepedeAlignment/Mille.h>

+ Collaboration diagram for Mille:

Public Member Functions

 Mille (const char *outFileName, bool asBinary=true, bool writeZero=false)
 Opens outFileName (by default as binary file).
 
 ~Mille ()
 Closes file.
 
void mille (int NLC, const float *derLc, int NGL, const float *derGl, const int *label, float rMeas, float sigma)
 Add measurement to buffer.
 
void special (int nSpecial, const float *floatings, const int *integers)
 Add special data to buffer.
 
void kill ()
 Reset buffers, i.e. kill derivatives accumulated for current set.
 
void end ()
 Write buffer (set of derivatives with same local parameters) to file.
 

Private Types

enum  { myBufferSize = 10000 }
 buffer size for ints and floats More...
 
enum  { myMaxLabel = INT_MAX - 1 }
 largest label allowed More...
 

Private Member Functions

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

Private Attributes

std::ofstream myOutFile
 C-binary for output.
 
bool myAsBinary
 if false output as text
 
bool myWriteZero
 
int myBufferInt [myBufferSize]
 to collect labels etc.
 
float myBufferFloat [myBufferSize]
 to collect derivatives etc.
 
int myBufferPos
 position in buffer
 
bool myHasSpecial
 

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 51 of file Mille.h.

View newest version in sPHENIX GitHub at line 51 of file Mille.h

Member Enumeration Documentation

anonymous enum
private

buffer size for ints and floats

Enumerator:
myBufferSize 

Definition at line 71 of file Mille.h.

View newest version in sPHENIX GitHub at line 71 of file Mille.h

anonymous enum
private

largest label allowed

Enumerator:
myMaxLabel 

Definition at line 77 of file Mille.h.

View newest version in sPHENIX GitHub at line 77 of file Mille.h

Constructor & Destructor Documentation

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

Opens outFileName (by default as binary file).

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

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

(last update by

Author:
flucke

)

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

Definition at line 45 of file Mille.cc.

View newest version in sPHENIX GitHub at line 45 of file Mille.cc

References myBufferFloat, myBufferInt, and myOutFile.

Mille::~Mille ( )

Closes file.

Definition at line 62 of file Mille.cc.

View newest version in sPHENIX GitHub at line 62 of file Mille.cc

References myOutFile.

Member Function Documentation

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 218 of file Mille.cc.

View newest version in sPHENIX GitHub at line 218 of file Mille.cc

References myBufferInt, myBufferPos, and myBufferSize.

Referenced by mille(), and special().

+ Here is the caller graph for this function:

void Mille::end ( void  )

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

Definition at line 169 of file Mille.cc.

View newest version in sPHENIX GitHub at line 169 of file Mille.cc

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

Referenced by MakeMilleFiles::process_event(), and HelicalFitter::process_event().

+ Here is the caller graph for this function:

void Mille::kill ( )

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

Definition at line 162 of file Mille.cc.

View newest version in sPHENIX GitHub at line 162 of file Mille.cc

References myBufferPos.

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.

View newest version in sPHENIX GitHub at line 78 of file Mille.cc

References checkBufferSize(), i, myBufferFloat, myBufferInt, myBufferPos, myMaxLabel, myWriteZero, newSet(), AlignmentDefs::NGL, AlignmentDefs::NLC, and sigma.

Referenced by MakeMilleFiles::addTrackToMilleFile(), MakeMilleFiles::process_event(), and HelicalFitter::process_event().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void Mille::newSet ( )
private

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

Definition at line 203 of file Mille.cc.

View newest version in sPHENIX GitHub at line 203 of file Mille.cc

References myBufferFloat, myBufferInt, myBufferPos, and myHasSpecial.

Referenced by mille(), and special().

+ Here is the caller graph for this function:

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.

View newest version in sPHENIX GitHub at line 127 of file Mille.cc

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

+ Here is the call graph for this function:

Member Data Documentation

bool Mille::myAsBinary
private

if false output as text

Definition at line 68 of file Mille.h.

View newest version in sPHENIX GitHub at line 68 of file Mille.h

Referenced by end().

float Mille::myBufferFloat[myBufferSize]
private

to collect derivatives etc.

Definition at line 73 of file Mille.h.

View newest version in sPHENIX GitHub at line 73 of file Mille.h

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

int Mille::myBufferInt[myBufferSize]
private

to collect labels etc.

Definition at line 72 of file Mille.h.

View newest version in sPHENIX GitHub at line 72 of file Mille.h

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

int Mille::myBufferPos
private

position in buffer

Definition at line 74 of file Mille.h.

View newest version in sPHENIX GitHub at line 74 of file Mille.h

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

bool Mille::myHasSpecial
private

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

Definition at line 75 of file Mille.h.

View newest version in sPHENIX GitHub at line 75 of file Mille.h

Referenced by newSet(), and special().

std::ofstream Mille::myOutFile
private

C-binary for output.

Definition at line 67 of file Mille.h.

View newest version in sPHENIX GitHub at line 67 of file Mille.h

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

bool Mille::myWriteZero
private

if true also write out derivatives/labels ==0

Definition at line 69 of file Mille.h.

View newest version in sPHENIX GitHub at line 69 of file Mille.h

Referenced by mille().


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