/[PAMELA software]/DarthVader/CalorimeterLevel2/src/CaloLevel1.cpp
ViewVC logotype

Diff of /DarthVader/CalorimeterLevel2/src/CaloLevel1.cpp

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.3 by mocchiut, Thu Jan 11 16:08:02 2007 UTC revision 1.8 by mocchiut, Fri Mar 30 14:37:44 2007 UTC
# Line 3  Line 3 
3   * \author Emiliano Mocchiutti   * \author Emiliano Mocchiutti
4   *   *
5  **/  **/
 #include <TObject.h>  
 #include <TMath.h>  
6  #include <CaloLevel1.h>  #include <CaloLevel1.h>
7  //  //
8  ClassImp(CaloStrip);  ClassImp(CaloStrip);
9  ClassImp(CaloLevel1);  ClassImp(CaloLevel1);
10    
11    Float_t CaloStrip::UXal = CTX;
12    Float_t CaloStrip::UYal = CTY;
13    Float_t CaloStrip::UZal = CTZ;
14    Bool_t CaloStrip::paramload  = false;
15    
16  /**  /**
17   * CaloStrip default constructor   * CaloStrip default constructor
18  **/  **/
# Line 21  CaloStrip::CaloStrip() { Line 24  CaloStrip::CaloStrip() {
24  /**  /**
25   * CaloStrip default constructor   * CaloStrip default constructor
26  **/  **/
27    CaloStrip::CaloStrip(Bool_t mechalig) {
28      c1 = 0;
29      this->Clear();
30      if ( mechalig ){
31        ismech = true;
32        paramload = true;
33        UXal = MECHCTX;
34        UYal = MECHCTY;
35        UZal = MECHCTZ;
36      } else {
37        ismech = false;
38        UseStandardAlig();
39      };
40    };
41    
42    /**
43     * CaloStrip default constructor
44    **/
45  CaloStrip::CaloStrip(CaloLevel1 *calo) {  CaloStrip::CaloStrip(CaloLevel1 *calo) {
46    c1 = calo->GetCaloLevel1();    c1 = calo->GetCaloLevel1();
47    this->Clear();    this->Clear();
48      ismech = false;
49      UseStandardAlig();
50    };
51    
52    /**
53     * CaloStrip default constructor
54    **/
55    CaloStrip::CaloStrip(CaloLevel1 *calo, Bool_t mechalig) {
56      c1 = calo->GetCaloLevel1();
57      this->Clear();
58      if ( mechalig ){
59        ismech = true;
60        paramload = true;
61        UXal = MECHCTX;
62        UYal = MECHCTY;
63        UZal = MECHCTZ;
64      } else {
65        ismech = false;
66        UseStandardAlig();
67      };
68  };  };
69    
70  /**  /**
71   * Clear variables   * Clear variables
72  **/  **/
73  void CaloStrip::Clear() {  void CaloStrip::Clear() {  
74    fE = 0.;    fE = 0.;
75    fX = 0.;    fX = 0.;
76    fY = 0.;    fY = 0.;
# Line 40  void CaloStrip::Clear() { Line 81  void CaloStrip::Clear() {
81  };  };
82    
83  /**  /**
84     * Connect to the DB and retrieve alignement parameters
85     **/
86    void CaloStrip::UseStandardAlig(){
87      //
88      if ( !paramload ){
89        //
90        paramload = true;
91        ismech = false;
92        //
93        stringstream aligfile;
94        Int_t error = 0;
95        FILE *f = 0;
96        ifstream badfile;
97        GL_PARAM *glparam = new GL_PARAM();
98        //
99        TString host = "mysql://localhost/pamelaprod";
100        TString user = "anonymous";
101        TString psw = "";
102        const char *pamdbhost=gSystem->Getenv("PAM_DBHOST");
103        const char *pamdbuser=gSystem->Getenv("PAM_DBUSER");
104        const char *pamdbpsw=gSystem->Getenv("PAM_DBPSW");
105        if ( !pamdbhost ) pamdbhost = "";
106        if ( !pamdbuser ) pamdbuser = "";
107        if ( !pamdbpsw ) pamdbpsw = "";
108        if ( strcmp(pamdbhost,"") ) host = pamdbhost;
109        if ( strcmp(pamdbuser,"") ) user = pamdbuser;
110        if ( strcmp(pamdbpsw,"") ) psw = pamdbpsw;
111        TSQLServer *dbc = TSQLServer::Connect(host.Data(),user.Data(),psw.Data());
112        //
113        UXal = 0.;
114        UYal = 0.;
115        UZal = 0.;
116        //
117        if ( dbc ){
118          //
119          // determine where I can find calorimeter ADC to MIP conversion file  
120          //
121          printf(" Querying DB for calorimeter parameters files...\n");
122          //
123          //
124          //
125          error = 0;
126          error = glparam->Query_GL_PARAM(1000,102,dbc);
127          if ( error >= 0 ){
128            //
129            aligfile.str("");
130            aligfile << glparam->PATH.Data() << "/";
131            aligfile << glparam->NAME.Data();
132            //
133            printf("\n Using parameter file: \n %s \n",aligfile.str().c_str());
134            f = fopen(aligfile.str().c_str(),"rb");
135            if ( f ){
136              //
137              fread(&UXal,sizeof(UXal),1,f);
138              fread(&UYal,sizeof(UYal),1,f);
139              fread(&UZal,sizeof(UZal),1,f);
140              //
141              fclose(f);
142            };
143            //
144          };
145          dbc->Close();
146        };
147        if ( !UXal ){
148          //
149          printf(" No able to query DB for calorimeter parameters files\n Using hard-coded parameters \n");
150          UXal = CTX;
151          UYal = CTY;
152          UZal = CTZ;
153        };
154        //  
155      };
156      //
157    };
158    
159    /**
160   * Given a strip returns its position in the PAMELA reference system   * Given a strip returns its position in the PAMELA reference system
161  **/  **/
162  void CaloStrip::Set(Int_t view, Int_t plane, Int_t strip) {  void CaloStrip::Set(Int_t view, Int_t plane, Int_t strip) {
# Line 70  void CaloStrip::Set(Int_t view, Int_t pl Line 187  void CaloStrip::Set(Int_t view, Int_t pl
187    fView = view + 1;    fView = view + 1;
188    fPlane = plane + 1;    fPlane = plane + 1;
189    fStrip = strip + 1;    fStrip = strip + 1;
190      //
191    if ( fPlane%2 ){    if ( fPlane%2 ){
192      lShift = -0.5;      lShift = +0.5;
193    } else {    } else {
194      lShift = 0.5;      lShift = -0.5;
195    };    };
196    //    //
197    shift_.shift = lShift;    shift_.shift = lShift;
# Line 96  void CaloStrip::Set(Int_t view, Int_t pl Line 214  void CaloStrip::Set(Int_t view, Int_t pl
214      //      //
215      // X view      // X view
216      //      //
217      fX = (lPos - CTX)/10.;      fX = (lPos - UXal)/10.;
218      fY = 0.;      fY = 0.;
219      fZ = (zplane[fPlane-1] - 5.81 + CTZ)/10.;          fZ = (zplane[fPlane-1] - 5.81 + UZal)/10.;    
220    } else {      //
221       } else {
222      //      //
223      // Y view      // Y view
224      //      //
225      fX = 0;      fX = 0;
226      fY = (lPos - CTY)/10.;      fY = (lPos - UYal)/10.;
227      fZ = (zplane[fPlane-1] + CTZ)/10.;      fZ = (zplane[fPlane-1] + UZal)/10.;
228    };    };
229    //      //  
230  };  };
# Line 134  void CaloStrip::Set(Float_t X, Float_t Y Line 253  void CaloStrip::Set(Float_t X, Float_t Y
253    Float_t dzx[22];    Float_t dzx[22];
254    Float_t dzy[22];    Float_t dzy[22];
255    for ( Int_t i=0; i < 22; i++){    for ( Int_t i=0; i < 22; i++){
256      dzx[i] = fabs(fZ*10. - (zplane[i] - 5.81 + CTZ));      dzx[i] = fabs(fZ*10. - (zplane[i] - 5.81 + UZal));
257      dzy[i] = fabs(fZ*10. - (zplane[i] + CTZ));          dzy[i] = fabs(fZ*10. - (zplane[i] + UZal));    
258    };    };
259    //    //
260    Float_t minx = TMath::MinElement(22,dzx);    Float_t minx = TMath::MinElement(22,dzx);
# Line 157  void CaloStrip::Set(Float_t X, Float_t Y Line 276  void CaloStrip::Set(Float_t X, Float_t Y
276      if ( fView == 1 ){      if ( fView == 1 ){
277        if ( dzx[i] == minx ){        if ( dzx[i] == minx ){
278          fPlane = i+1;          fPlane = i+1;
279          pos = fX*10. + CTX;          pos = fX*10. + UXal;
280        };        };
281      } else {      } else {
282        if ( dzy[i] == miny ){        if ( dzy[i] == miny ){
283          fPlane = i+1;          fPlane = i+1;
284          pos = fY*10. + CTY;          pos = fY*10. + UYal;
285      };      };
286      };      };
287    };    };
# Line 177  void CaloStrip::Set(Float_t X, Float_t Y Line 296  void CaloStrip::Set(Float_t X, Float_t Y
296    for ( Int_t i=0; i < 96; i++){    for ( Int_t i=0; i < 96; i++){
297      ca->Set(fView-1,fPlane-1,i);      ca->Set(fView-1,fPlane-1,i);
298      if ( fView == 1 ){      if ( fView == 1 ){
299        stpos = ca->GetX()*10. + CTX;        stpos = ca->GetX()*10. + UXal;
300      } else {      } else {
301        stpos = ca->GetY()*10. + CTY;        stpos = ca->GetY()*10. + UYal;
302      };      };
303      dxy[i] = fabs(pos - stpos);      dxy[i] = fabs(pos - stpos);
304    };    };

Legend:
Removed from v.1.3  
changed lines
  Added in v.1.8

  ViewVC Help
Powered by ViewVC 1.1.23