X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=TRD%2FAliTRDalignment.h;h=364d2574354227ac46a949951d30dfa7cff7539b;hb=64129b355d10efd75096de85219ac3997c7ca660;hp=4bdcd6f136c144faa4e021f524f38b718cf2f341;hpb=d15124a9794d1b4f2c76a1db6e70f022d30f96de;p=u%2Fmrichter%2FAliRoot.git diff --git a/TRD/AliTRDalignment.h b/TRD/AliTRDalignment.h index 4bdcd6f136c..364d2574354 100644 --- a/TRD/AliTRDalignment.h +++ b/TRD/AliTRDalignment.h @@ -16,8 +16,8 @@ #include #include #include - -#include +#include +class AliSurveyObj; class AliTRDalignment : public TObject { @@ -32,11 +32,10 @@ class AliTRDalignment : public TObject { Bool_t operator==(const AliTRDalignment& source) const; virtual ~AliTRDalignment() {}; - // setting + // setters void SetSmZero(); // reset to zero supermodule data void SetChZero(); // reset to zero chamber data - void SetZero() {SetSmZero(); SetChZero();} // reset to zero both void SetSm(int sm, const double a[6]) {for (int i = 0; i < 6; i++) fSm[sm][i] = a[i];} void SetCh(int ch, const double a[6]) {for (int i = 0; i < 6; i++) fCh[ch][i] = a[i];} void SetSmRandom(double a[6]); // generate random gaussians with sigmas a @@ -45,56 +44,68 @@ class AliTRDalignment : public TObject { void SetChFull(); // set chamber data to initial aka full void SetSmResidual(); // set supermodule data to final aka residual void SetChResidual(); // set chamber data to final aka residual + void SetZero() {SetSmZero(); SetChZero();} + void SetIdeal() {SetZero();} void SetFull() {SetSmFull(); SetChFull();} void SetResidual() {SetSmResidual(); SetChResidual();} void SetComment(char *s) {fComment.SetString(s);} + // simple getters (for other getters see below) + + void GetSm(int sm, double * const a) {for (int i = 0; i < 6; i++) a[i] = fSm[sm][i];} + void GetCh(int ch, double * const a) {for (int i = 0; i < 6; i++) a[i] = fCh[ch][i];} + // dumping on screen - void PrintSm(int sm, FILE *fp = stdout) const; // print data of a supermodule - void PrintCh(int sm, FILE *fp = stdout) const; // print data of a chamber - void PrintSm(FILE *fp = stdout) const {for (int i = 0; i < 18; i++) PrintSm(i,fp);} - void PrintCh(FILE *fp = stdout) const {for (int i = 0; i < 540; i++) PrintCh(i,fp);} - void Print(FILE *fp = stdout) const {PrintSm(fp); PrintCh(fp); } + void PrintSm(int sm, FILE * const fp = stdout) const; // print data of a supermodule + void PrintCh(int ch, FILE * const fp = stdout) const; // print data of a chamber + void PrintSm(FILE * const fp = stdout) const {for (int i = 0; i < 18; i++) PrintSm(i,fp);} + void PrintCh(FILE * const fp = stdout) const {for (int i = 0; i < 540; i++) PrintCh(i,fp);} + void Print(FILE * const fp = stdout) const {PrintSm(fp); PrintCh(fp); } void Print(Option_t *) const {Print(); } // reading-in from file - void ReadAscii(char *filename); // read from ascii file - void ReadRoot(char *filename); // read from root file - void ReadDB(char *filename); // read from DB file - void ReadDB(char *db, char *path, int run, int version=-1, int subversion=-1); - void ReadGeo(char *misaligned); // read from misaligned_geometry.root - void ReadSurveyReport(char *filename); // read from survey report - void ReadAny(char *filename); // read from any kind of file + void ReadAscii(const char * const filename); // read from ascii file + void ReadCurrentGeo(); // read from currently loaded geometry + void ReadRoot(const char * const filename); // read from root file + void ReadDB(const char * const filename); // read from DB file + void ReadDB(const char * const db, const char * const path, int run, int version=-1, int subversion=-1); + Bool_t DecodeSurveyPointName(TString pna, Int_t &sm, Int_t &iz,Int_t &ir, Int_t &iphi); + void ReadSurveyReport(const char * const filename); // read from survey report + void ReadSurveyReport(const AliSurveyObj * const so); // read from survey object + void ReadAny(const char * const filename); // read from any kind of file // writing on file - void WriteAscii(char *filename) const; // store data on ascii file - void WriteRoot(char *filename); // store data on root file - void WriteDB(char *filename, int run0, int run1); // store data on a local DB-like file - void WriteDB(char *db, char *path, int run0, int run1); - // store data on DB file - void WriteGeo(char *filename); // apply misalignment and store geometry + void WriteAscii(const char * const filename) const; // store data on ascii file + void WriteRoot(const char * const filename); // store data on root file + void WriteDB(const char * const fina, int r0, int r1, int v, int s); // store data on a local DB-like file + void WriteDB(char * const db, const char * const pa, int r0, int r1); // store data on DB file + void WriteGeo(char *filename); // apply misalignment and store geometry // geometry and symbolic names getters // phi-sector number of chamber ch, 0-17 - int GetSec(int ch) const {return ch/30;} + int GetSec(int ch) const {return ch/30;} // stack number, 0-4 - int GetSta(int ch) const {return ch%30/6;} + int GetSta(int ch) const {return ch%30/6;} // plane number, 0-5 - int GetPla(int ch) const {return ch%30%6;} + int GetPla(int ch) const {return ch%30%6;} // module number, 0-89 - int GetMod(int ch) const {return 5*GetSec(ch)+GetSta(ch); } + int GetMod(int ch) const {return 5*GetSec(ch)+GetSta(ch);} // layer number, 9-14 - int GetLay(int ch) const {return AliAlignObj::kTRD1+GetPla(ch); } + int GetLay(int ch) const {return AliGeomManager::kTRD1+GetPla(ch);} // volume id - UShort_t GetVoi(int ch) const {return AliAlignObj::LayerToVolUID(GetLay(ch),GetMod(ch)); } + UShort_t GetVoi(int ch) const {return AliGeomManager::LayerToVolUID(GetLay(ch),GetMod(ch));} // symbolic name of a supermodule - char *GetSmName(int sm) const {return Form("TRD/sm%02d",sm); } + char *GetSmName(int sm) const {return Form("TRD/sm%02d",sm);} // symbolic name of a chamber - char *GetChName(int ch) const {return Form("TRD/sm%02d/st%d/pl%d",GetSec(ch),GetSta(ch),GetPla(ch)); } + char *GetChName(int ch) const {return Form("TRD/sm%02d/st%d/pl%d",GetSec(ch),GetSta(ch),GetPla(ch));} + // index of a supermodule + int GetSmIndex(const char *name) {for (int i=0; i<18; i++) if (strcmp(name,GetSmName(i))==0) return i; return -1;} + // index of a chamber + int GetChIndex(const char *name) {for (int i=0; i<540; i++) if (strcmp(name,GetChName(i))==0) return i; return -1;} // data analysis @@ -104,16 +115,16 @@ class AliTRDalignment : public TObject { void PrintChRMS() const; // print rms of fCh void PrintRMS() const {PrintSmRMS(); PrintChRMS();} - double SurveyChi2(int i, double *a); // compare survey with ideal, return chi2 - double SurveyChi2(double *a) {return SurveyChi2(fIbuffer[0],a);} - void SurveyToAlignment(int i, char *flag); // determine alignment of supermodule i based on survey + double SurveyChi2(int i, const double * const a); // compare survey with ideal, return chi2 + double SurveyChi2(const double * const a) {return SurveyChi2(fIbuffer[0],a);} + void SurveyToAlignment(int i, const char * const flag); // determine alignment of supermodule i based on survey + void SurveyToAlignment(const char * const flag) {for (int i=0; i<18; i++) SurveyToAlignment(i,flag);} protected: - void ArToNumbers(TClonesArray *ar); // read ar and fill fSm and fCh - void NumbersToAr(TClonesArray *ar); // build ar using fSm and fCh data - void LoadIdealGeometry(char *filename); // load ideal geometry from file - void LoadIdealGeometry() {LoadIdealGeometry("geometry.root");} + void ArToNumbers(TClonesArray * const ar); // read ar and fill fSm and fCh + void NumbersToAr(TClonesArray * const ar); // build ar using fSm and fCh data + int IsGeoLoaded(); // check if geometry is loaded protected: @@ -131,7 +142,9 @@ class AliTRDalignment : public TObject { double fSurveyX[18][2][2][2]; // supermodule survey point X double fSurveyY[18][2][2][2]; // supermodule survey point Y double fSurveyZ[18][2][2][2]; // supermodule survey point Z - double fSurveyE[18][2][2][2]; // supermodule survey point error + double fSurveyEX[18][2][2][2]; // supermodule survey point X error + double fSurveyEY[18][2][2][2]; // supermodule survey point Y error + double fSurveyEZ[18][2][2][2]; // supermodule survey point Z error double fSurveyX0[2][2][2]; // ideal X position of the survey marks double fSurveyY0[2][2][2]; // ideal Y position of the survey marks double fSurveyZ0[2][2][2]; // ideal Z position of the survey marks