]> git.uio.no Git - u/mrichter/AliRoot.git/blob - EMCAL/AliEMCALShishKebabModule.h
"Version
[u/mrichter/AliRoot.git] / EMCAL / AliEMCALShishKebabModule.h
1 #ifndef ALIEMCALSHISHKEBABMODULE_H
2 #define ALIEMCALSHISHKEBABMODULE_H
3
4 /* Copyright(c) 1998-2004, ALICE Experiment at CERN, All rights reserved. *
5  * See cxx source for full Copyright notice                               */
6
7 /* $Id$ */
8 #include "TNamed.h"
9 #include "TMath.h"
10 #include "TVector2.h"
11
12 class AliEMCALGeometry;
13
14 class AliEMCALShishKebabModule : public TNamed {
15  public:
16   AliEMCALShishKebabModule(const double theta=TMath::Pi()/2.);
17   AliEMCALShishKebabModule(AliEMCALShishKebabModule &leftNeighbor);
18   void Init(const double A,const double B);
19
20   virtual ~AliEMCALShishKebabModule(void) {}
21   Bool_t GetParameters();
22   void DefineName(const double theta);
23   void DefineFirstModule();
24   void DefineSecondModuleFirstAssumption(); // need for testing
25
26   Double_t Solve(Double_t (*fcn)(Double_t*, Double_t*), Double_t xmin=0., Double_t xmax=1.,
27   Int_t npar=0, Double_t *par=0, Double_t eps=1.0e-8, Int_t maxIter=1000);
28
29   static Double_t Y2(double *x, double *par);
30   static Double_t YALL(double *x, double *par);
31
32   Double_t GetTheta() const {return fTheta;}
33   Double_t GetThetaInDegree() const {return fTheta*180./TMath::Pi();}
34
35   Double_t GetPosX() {return fOK.Y();}
36   Double_t GetPosZ() {return fOK.X();}
37   Double_t GetPosXfromR() {return fOK.Y() - fgr;}
38   Double_t GetA() {return fA;}
39   Double_t GetB() {return fB;}
40
41   // geometry info
42   static AliEMCALGeometry *fgGeometry; //!
43   static Double_t fga; // default 11.2cm 
44   static Double_t fgb; // 
45   // radius to IP
46   static Double_t fgr;
47
48   TVector2 fOK; // position the module center x->y; z->x;
49   Double_t fA;  // parameters of line = y = A*z + B
50   Double_t fB;  // 
51   // service methods
52   void Print(const int pri=1) const;  // *MENU*
53  protected:
54   // size of SK module
55   Double_t fTheta; // theta for SK module
56
57   ClassDef(AliEMCALShishKebabModule,0) // Turned Shish-Kebab module 
58 };
59
60 #endif
61 /* To do
62  1. Insert position the center of towers - 2 additional TVector2
63  */