#ifndef HMETAALIGNER_H
#define HMETAALIGNER_H
#include "TROOT.h"
#include "TNtuple.h"
#include "hruntimedb.h"
#include "hgeomrotation.h"
#include "hgeomvector.h"
#define kMETA_ALIGNER_MATRICS 8
#define kMETA_ALIGNER_PARAMS 6
#define kMATA_ALIGN_DEFAULT_STEP 0.01
#define kMATA_ALIGN_DEFAULT_ERROR 0.0001
#define kMATA_ALIGN_DEFAULT_STEPS 500.0
#define kMATA_ALIGN_DEFAULT_TUKAY_CONST 6.0
class HMetaAligner : public TObject
{
public:
Int_t m_iSector;
Int_t m_iSystem;
Int_t m_iVerbose;
Bool_t m_bInitOK;
Bool_t m_bNormalize;
Bool_t m_bEqualSigmas;
Int_t m_iMaxEntries;
Int_t m_iEntries;
Double_t m_dStartParams[kMETA_ALIGNER_PARAMS];
Double_t m_dParams[kMETA_ALIGNER_PARAMS];
Double_t m_dSteps[kMETA_ALIGNER_PARAMS];
Double_t m_dStartErrors[kMETA_ALIGNER_PARAMS];
Double_t m_dErrors[kMETA_ALIGNER_PARAMS];
Bool_t m_bFixed[kMETA_ALIGNER_PARAMS];
Double_t m_dError;
Double_t m_dMigSteps;
Bool_t m_bImprove;
Bool_t m_bUseTukay;
Double_t m_dTukayConst;
Double_t m_dTukayConst_2;
Bool_t m_bChangeWeights;
Double_t m_dLastChi_2;
Int_t m_iStatus;
Int_t m_iHits;
Int_t m_iLastThrown;
Int_t m_iCalls;
Double_t m_dChi2XSum;
Double_t m_dChi2YSum;
Double_t m_dWeightChi2X;
Double_t m_dWeightChi2Y;
protected:
TFile *m_pTupleFile;
TNtuple *m_pTuple;
HRuntimeDb *m_pRTDB;
HGeomRotation m_arRI[kMETA_ALIGNER_MATRICS];
HGeomVector m_avT[kMETA_ALIGNER_MATRICS];
Float_t m_fXc;
Float_t m_fYc;
Float_t m_fZc;
Float_t m_fAlphaX;
Float_t m_fAlphaY;
Float_t m_fAlphaZ;
Float_t m_fXo;
Float_t m_fYo;
Float_t m_fSigXo;
Float_t m_fSigYo;
Float_t m_fSec;
Float_t m_fMod;
Float_t m_fSys;
Int_t m_iMethod;
Double_t m_dPrevSigma;
Double_t m_dWeightsSum0;
Double_t m_dWeightsSum1;
public:
HMetaAligner(const Char_t *pFileName, Int_t iSector,
Int_t iSystem, const Char_t *pParamFile, Int_t iRunId);
~HMetaAligner(void);
void setValue(Int_t iParam, Double_t dVal = 0.0f);
void setStep(Int_t iParam, Double_t dStep = kMATA_ALIGN_DEFAULT_STEP);
void fixParam(Int_t iParam, Bool_t bFix = kTRUE);
void releaseParam(Int_t iParam);
void releaseAll(void);
void fixAll(void);
void reversFixed(void);
void setError(Double_t d = kMATA_ALIGN_DEFAULT_ERROR);
void setMigRad(Double_t d = kMATA_ALIGN_DEFAULT_ERROR);
void setTukayConst(Double_t d = kMATA_ALIGN_DEFAULT_TUKAY_CONST);
void setNormalize(Bool_t bSet = kTRUE);
void setImprove(Bool_t bSet = kTRUE);
void setEntries(Int_t i = 0);
void copyResultsToStart(void);
virtual Bool_t runFit(Bool_t bUseTukay = kTRUE,
const Char_t *pOut = "out.root", Int_t iMethod = 0);
virtual Bool_t contFit(Bool_t bUseTukay = kTRUE,
const Char_t *pOut = "out.root", Int_t iMethod = 0);
virtual void minAlign(Int_t &npar, Double_t *gin, Double_t &f,
Double_t *par, Int_t iflag);
void print(const Char_t *pFileName = NULL) const;
void printLine(const Char_t *pFileName = NULL) const;
void printHtmlRow(const Char_t *pFileName = NULL) const;
void writeResults(const Char_t *pFileName);
private:
void init(void);
Bool_t loadParameters(const Char_t *pParamFileName, Int_t iRunId);
Bool_t openNTuple(const Char_t *pFileName);
Bool_t getShowerGeom(const Char_t *pParamFile, Int_t iRunId);
Bool_t getTofGeom(const Char_t *pParamFile, Int_t iRunId);
virtual Double_t funcResiduals(HGeomVector *pvDT,
HGeomRotation *prDRot = NULL);
Double_t m_dDX;
Double_t m_dDY;
Double_t m_dChi2;
Double_t m_dChi2W;
Double_t m_dChi2X;
Double_t m_dChi2Y;
ClassDef(HMetaAligner, 0)
};
#endif // HMETAALIGNER_H
Last change: Sat May 22 13:04:33 2010
Last generated: 2010-05-22 13:04
This page has been automatically generated. If you have any comments or suggestions about the page layout send a mail to ROOT support, or contact the developers with any questions or problems regarding ROOT.