/[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.12 by mocchiut, Tue Nov 27 10:15:47 2007 UTC revision 1.16 by mocchiut, Fri Jun 6 14:18:16 2014 UTC
# Line 18  Bool_t CaloStrip::paramload  = false; Line 18  Bool_t CaloStrip::paramload  = false;
18  **/  **/
19  CaloStrip::CaloStrip() {  CaloStrip::CaloStrip() {
20    c1 = 0;    c1 = 0;
21      debug = false;
22    this->Clear();    this->Clear();
23  };  };
24    
# Line 26  CaloStrip::CaloStrip() { Line 27  CaloStrip::CaloStrip() {
27  **/  **/
28  CaloStrip::CaloStrip(Bool_t mechalig) {  CaloStrip::CaloStrip(Bool_t mechalig) {
29    c1 = 0;    c1 = 0;
30      debug = false;
31    this->Clear();    this->Clear();
32    if ( mechalig ){    if ( mechalig ){
33      ismech = true;      ismech = true;
# Line 44  CaloStrip::CaloStrip(Bool_t mechalig) { Line 46  CaloStrip::CaloStrip(Bool_t mechalig) {
46  **/  **/
47  CaloStrip::CaloStrip(CaloLevel1 *calo) {  CaloStrip::CaloStrip(CaloLevel1 *calo) {
48    c1 = calo->GetCaloLevel1();    c1 = calo->GetCaloLevel1();
49      debug = false;
50    this->Clear();    this->Clear();
51    ismech = false;    ismech = false;
52    UseStandardAlig();    UseStandardAlig();
# Line 54  CaloStrip::CaloStrip(CaloLevel1 *calo) { Line 57  CaloStrip::CaloStrip(CaloLevel1 *calo) {
57  **/  **/
58  CaloStrip::CaloStrip(CaloLevel1 *calo, Bool_t mechalig) {  CaloStrip::CaloStrip(CaloLevel1 *calo, Bool_t mechalig) {
59    c1 = calo->GetCaloLevel1();    c1 = calo->GetCaloLevel1();
60      debug = false;
61    this->Clear();    this->Clear();
62    if ( mechalig ){    if ( mechalig ){
63      ismech = true;      ismech = true;
# Line 118  void CaloStrip::UseStandardAlig(){ Line 122  void CaloStrip::UseStandardAlig(){
122        //        //
123        // determine where I can find calorimeter ADC to MIP conversion file          // determine where I can find calorimeter ADC to MIP conversion file  
124        //        //
125        printf(" Querying DB for calorimeter parameters files...\n");        if ( debug ) printf(" Querying DB for calorimeter parameters files...\n");
126        //        //
127        //        //
128        //        //
# Line 130  void CaloStrip::UseStandardAlig(){ Line 134  void CaloStrip::UseStandardAlig(){
134          aligfile << glparam->PATH.Data() << "/";          aligfile << glparam->PATH.Data() << "/";
135          aligfile << glparam->NAME.Data();          aligfile << glparam->NAME.Data();
136          //          //
137          printf("\n Using parameter file: \n %s \n",aligfile.str().c_str());          if (debug) printf("\n Using parameter file: \n %s \n",aligfile.str().c_str());
138          f = fopen(aligfile.str().c_str(),"rb");          f = fopen(aligfile.str().c_str(),"rb");
139          if ( f ){          if ( f ){
140            //            //
# Line 143  void CaloStrip::UseStandardAlig(){ Line 147  void CaloStrip::UseStandardAlig(){
147          //          //
148        };        };
149        dbc->Close();        dbc->Close();
150          delete dbc;
151          dbc = 0;
152      };      };
153      if ( !UXal ){      if ( !UXal ){
154        //        //
# Line 313  void CaloStrip::Set(Float_t X, Float_t Y Line 319  void CaloStrip::Set(Float_t X, Float_t Y
319  };  };
320    
321  /**  /**
322     * Given a point in the space or a strip it returns the Silicon sensor number. Numbering goes like this:
323     *
324     * y ^
325     *   |
326     *   |    6 7 8
327     *   |    3 4 5  
328     *   |    0 1 2
329     *   | -----------> x
330     *
331    **/
332    Int_t CaloStrip::GetSiSensor() {
333      //
334      // fX fY fZ // fView fPlane
335      //
336      Float_t deadsi = 0.096;
337      Float_t dead = 0.05;
338      Float_t sidim = 8.00;
339      //  Float_t stripdim = 0.244;
340      Float_t sensitarea = 7.808;
341      //
342      Float_t xoffset = 0.;
343      Float_t yoffset = 0.;
344      //
345      if ( (fView-1) == 0 && !((fPlane-1)%2) ){
346        xoffset = +0.05;
347        yoffset = 0.0;
348      };
349      if ( (fView-1) == 0 && ((fPlane-1)%2) ){
350        xoffset = -0.05;
351        yoffset = -0.20;
352      };
353      if ( (fView-1) == 1 && !((fPlane-1)%2) ){
354        xoffset = +0.10;
355        yoffset = -0.05;
356      };
357      if ( (fView-1) == 1 && ((fPlane-1)%2) ){
358        xoffset = -0.10;
359        yoffset = -0.15;
360      };
361      //
362      Int_t iind = -1;
363      Int_t jind = -1;
364      //
365      for (Int_t i = 0; i < 3; i++){
366        if ( (fX+xoffset+12.1) >= (deadsi+(sidim+dead)*i) && (fX+xoffset+12.1) <= (sensitarea+deadsi+(sidim+dead)*i) ){
367          iind = i;
368          break;
369        };
370      };
371      //
372      for (Int_t j = 0; j < 3; j++){
373        if ( (fY+yoffset+12.1) >= (deadsi+(sidim+dead)*j) && (fY+yoffset+12.1) <= (sensitarea+deadsi+(sidim+dead)*j) ){
374          jind = j;
375          break;
376        };
377      };
378      //
379      Int_t sensor = -1;
380      if ( iind != -1 &&  jind != -1 ){
381        sensor = iind + jind * 3;
382      };
383      //
384      //  printf(" View %i Plane %i x %f y %f z %f xoffset %f yoffset %f iind %i jind %i \n",fView,fPlane,fX,fY,fZ,xoffset,yoffset,iind,jind);
385      //
386      return(sensor);
387      //
388    };
389    
390    /**
391   * CaloLevel1 constructor   * CaloLevel1 constructor
392  **/  **/
393  CaloLevel1::CaloLevel1() {      CaloLevel1::CaloLevel1() {    
# Line 421  Float_t CaloLevel1::DecodeEstrip(Int_t e Line 496  Float_t CaloLevel1::DecodeEstrip(Int_t e
496    //    //
497    strip = (Int_t)truncf((Float_t)((eval - fbi*1000000000 -plom*10000000)/100000));    strip = (Int_t)truncf((Float_t)((eval - fbi*1000000000 -plom*10000000)/100000));
498    //    //
499    Float_t mip = ((Float_t)(eval - fbi*1000000000 -plom*10000000 -strip*100000))/tim;    Double_t mip = (Double_t)(((Float_t)(eval - fbi*1000000000 -plom*10000000 -strip*100000))/tim);
500    //    //
501    saturated = false;    saturated = false;
502    if ( mip > 5000. ){    if ( mip > 5000. ){
503      mip -= 5000.;      mip -= 5000.;
504      saturated = true;      saturated = true;
505    };    };
506    if ( mip > 0. && mip < 99999. ) return(mip);    if ( mip > 0. && mip < 99999. ) return((Float_t)mip);
507    //    //
508    printf(" ERROR: problems decoding value %i at entry %i \n",estrip.At(entry),entry);    printf(" ERROR: problems decoding value %i at entry %i \n",estrip.At(entry),entry);
509    //    //
# Line 497  Float_t CaloLevel1::qtotpl(Int_t sview, Line 572  Float_t CaloLevel1::qtotpl(Int_t sview,
572      if ( view == sview && splane == plane ){      if ( view == sview && splane == plane ){
573        if ( lsat ) sat = true;        if ( lsat ) sat = true;
574        totmip += mip;        totmip += mip;
575          //printf(" totmip %f mip %f \n",totmip,mip);
576      };      };
577      //      //
578      // entry are ordered by strip, plane and view number. Go out if you pass the input strip      // entry are ordered by strip, plane and view number. Go out if you pass the input strip

Legend:
Removed from v.1.12  
changed lines
  Added in v.1.16

  ViewVC Help
Powered by ViewVC 1.1.23