// @(#) $Id$ // Original: AliHLTTransform.h,v 1.37 2005/06/14 10:55:21 cvetan #ifndef ALIHLTTPCTRANSFORM_H #define ALIHLTTPCTRANSFORM_H #ifdef use_aliroot class AliRunLoader; #endif #include "AliHLTTPCRootTypes.h" class AliHLTTPCTransform { public: AliHLTTPCTransform(); enum VersionType { kVdefault=0, kVdeprecated=1, kValiroot=10, kVcosmics=100}; private: static const Double_t fgkBFACT; //bfield static const Double_t fgkPi; //pi static const Double_t fgkPi2; //2pi static const Double_t fgk2Pi; //pi/2 static const Double_t fgkAnodeWireSpacing; //anode wire spacing static const Double_t fgkToDeg; //rad to deg static Int_t fgNPatches; //6 (dont change this) static Int_t fgRows[6][2]; //rows per patch static Int_t fgNRows[6]; //rows per patch static Double_t fgBField; //field static Double_t fgBFieldFactor; //field static Double_t fgSolenoidBField; //field static Int_t fgNTimeBins; //ntimebins static Int_t fgNRowLow; //nrows static Int_t fgNRowUp; //nrows static Int_t fgNRowUp1; //nrows static Int_t fgNRowUp2; //nrows static Int_t fgNSectorLow; //nsector static Int_t fgNSectorUp; //nsector static Int_t fgSlice2Sector[36][2]; //nslice static Int_t fgSector2Slice[72]; //nslice static Int_t fgSectorLow[72]; //nsector static Double_t fgPadPitchWidthLow; //pad pitch static Double_t fgPadPitchWidthUp; //pad pitch static Double_t fgZWidth; //width static Double_t fgZSigma; //sigma static Double_t fgZLength; //length static Double_t fgZOffset; //offset static Int_t fgNSector; //72 (dont change this) static Int_t fgNSlice; //36 (dont change this) static Int_t fgNRow; //159 (dont change this) static Double_t fgNRotShift; //Rotation shift (eg. 0.5 for 10 degrees) static Int_t fgNPads[159]; //fill this following Init and fVersion static Double_t fgX[159]; //X position in local coordinates static Int_t fgVersion; //flags the version static Double_t fgDiffT; //Transversal diffusion constant static Double_t fgDiffL; //Longitudinal diffusion constant static Double_t fgOmegaTau; //ExB effects static Double_t fgInnerPadLength; //innner pad length static Double_t fgOuter1PadLength; //outer pad length static Double_t fgOuter2PadLength; //outer pad length static Double_t fgInnerPRFSigma; //inner pad response function static Double_t fgOuter1PRFSigma; //outer pad response function static Double_t fgOuter2PRFSigma; //outer pad response function static Double_t fgTimeSigma; //Minimal longitudinal width static Int_t fgADCSat; //ADC Saturation (1024 = 10 bit) static Int_t fgZeroSup; //Zero suppression threshold static Double_t fgCos[36]; //stores the cos value for local to global rotations static Double_t fgSin[36]; //stores the sin value for local to global rotations public: virtual ~AliHLTTPCTransform() {} #ifdef use_aliroot static Bool_t Init(AliRunLoader *runLoader); //init transformer params using a run loader #endif static Bool_t Init(Char_t* path,Bool_t UseAliTPCParam=kFALSE); //init transformer settings (versions) static Bool_t MakeInitFile(Char_t *rootfilename,Char_t *filename); //create the init file from rootfile static Bool_t ReadInit(Char_t *path); //read init (possibly from root file) static Bool_t ReadInitFile(Char_t *path); //read init from text file static Bool_t SaveInitFile(Char_t *filename); //save parameters in init file //setters static void SetNPatches(Int_t i){fgNPatches = i;} static void SetNRows(Int_t s[6]){for(Int_t i=0;i