Release version of ITS code
[u/mrichter/AliRoot.git] / ITS / AliITSAlignmentModule.h
1 #ifndef ALIITSALIGNMENTMODULE_H
2 #define ALIITSALIGNMENTMODULE_H
3
4 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5  * See cxx source for full Copyright notice                               */
6 /* $Id$ */
7 /* $Author$ */
8 /* $Date$ */
9 /* $Name$ */
10 /* $Header$ */
11 /*
12   $Log$
13   Revision 1.1.2.2  2000/03/04 23:39:56  nilsen
14   Fixed the logs???
15
16   Revision 1.1.2.1  2000/03/02 20:12:57  nilsen
17   A new class useful for ITS detector Alignment studdies
18 */
19 /* $Revision$ */
20
21 // Standard C & C++ libraries
22 #include <TObject.h>
23
24 // Standard Root Libraries
25 #include "TParticle.h"
26
27 // ITS libraries
28 #include "AliITSgeom.h"
29
30 class AliITSAlignmentModule : public TObject{
31 ///////////////////////////////////////////////////////////////////////////
32 //      A track class define exclusively for the use in doing ITS detector
33 // alignment studdies. Not intended for general use.
34 // Author: B. S. Nilsen
35 // Date:   January 17 2000
36 ///////////////////////////////////////////////////////////////////////////
37
38  protected:
39
40     Int_t     findex,flay,flad,fdet;
41     TObjArray *ftrksM;
42     Double_t  fChi2;
43     Double_t  fx0[3],fM[3][3],fangles[3];
44
45  public:
46
47     AliITSAlignmentModule();
48     AliITSAlignmentModule(Int_t index,AliITSgeom *gm,
49                           Int_t  ntrk,AliITSAlignmentTrack *trk);
50     virtual ~AliITSAlignmentModule() {;}; // default destructor OK
51     Int_t GetIndex(){return findex;}
52     void GetId(Int_t &lay,Int_t &lad,Int_t &det){lay=flay;lad=flad;det=fdet;}
53     Double_t * GetTranslationVector(){return fx0;}
54     Double_t * GetRotationAngles(){return fangles;}
55     Double_t ComputeChi2();
56     Double_t GetChi2(){return fChi2;}
57     void AlignModule();
58     void lnsrch(Int_t npar,Double_t *xold,Double_t fold,Double_t *g,
59                 Double_t *p,Double_t *x,Double_t &f,Double_t stpmax,
60                 Int_t &check);
61     void MRVMminimization(Int_t npar,Double_t *p,Double_t &fret,Double_t gtol,
62                           Int_t &iter);
63     void SetByAngles(Double_t *th);
64
65  private:
66     void dfMdthx(Double_t dfMx[3][3]);
67     void dfMdthy(Double_t dfMx[3][3]);
68     void dfMdthz(Double_t dfMx[3][3]);
69     void LtoG(Double_t xl[],Double_t xg[]);
70     void GtoL(Double_t xg[],Double_t xl[]);
71     Double_t Chi2(Double_t p[]);
72     void dChi2(Double_t p[],Double_t dChi2[]);
73     
74
75     ClassDef(AliITSAlignmentModule,1) // Module class for ITS Alignment
76
77
78 };
79 #endif