CMS 3D CMS Logo

Public Member Functions | Protected Member Functions | Private Attributes

TEcnaNumbering Class Reference

#include <TEcnaNumbering.h>

List of all members.

Public Member Functions

void BuildBarrelCrysTable ()
void BuildEndcapCrysTable ()
void BuildEndcapSCTable ()
Int_t Get0SMEchaFrom1SMTowAnd0TowEcha (const Int_t &, const Int_t &)
Int_t Get0StexEchaFrom1StexStinAnd0StinEcha (const Int_t &, const Int_t &)
Int_t Get0TowEchaFrom0SMEcha (const Int_t &)
Int_t Get0TowEchaFrom1SMCrys (const Int_t &)
Int_t Get1DeeCrysFrom1DeeSCEcnaAnd0SCEcha (const Int_t &, const Int_t &, const TString)
Int_t Get1DeeSCEcnaFrom0DeeEcha (const Int_t &)
Int_t Get1DeeSCEcnaFrom1DeeCrys (const Int_t &, const TString)
Int_t Get1DeeSCEcnaFromDeeSCCons (const Int_t &, const Int_t &)
Int_t Get1SCEchaFrom0DeeEcha (const Int_t &)
Int_t Get1SCEchaFrom1DeeCrys (const Int_t &, const TString)
Int_t Get1SMCrysFrom1SMTowAnd0TowEcha (const Int_t &, const Int_t &)
Int_t Get1SMTowFrom0SMEcha (const Int_t &)
Int_t Get1SMTowFrom1SMCrys (const Int_t &)
Int_t Get1StexCrysFrom1StexStinAnd0StinEcha (const Int_t &, const Int_t &, const Int_t &)
Int_t Get1StexStinFrom0StexEcha (const Int_t &)
Int_t GetDeeDirIndex (const TString)
TString GetDeeDirViewedFromIP (const Int_t &)
TString GetDeeHalfEndcap (const Int_t &)
Int_t GetDeeSCConsFrom1DeeSCEcna (const Int_t &, const Int_t &, const Int_t &)
Int_t GetDeeSCConsFrom1DeeSCEcna (const Int_t &, const Int_t &)
Int_t GetDSFrom1DeeSCEcna (const Int_t &, const Int_t &)
Int_t GetDSFromFED (const Int_t &)
Int_t GetDSSCFrom1DeeSCEcna (const Int_t &, const Int_t &, const Int_t &)
Int_t GetDSSCFrom1DeeSCEcna (const Int_t &, const Int_t &)
TString GetEEDeeEndcap (const Int_t &)
TString GetEEDeeType (const Int_t &)
Double_t GetEta (const Int_t &, const Int_t &, const Int_t &)
Double_t GetEtaMax (const Int_t &, const Int_t &)
Double_t GetEtaMin (const Int_t &, const Int_t &)
Int_t GetHashedNumberFromIEtaAndIPhi (const Int_t &, const Int_t &)
Int_t GetIEtaFromHashed (const Int_t &, const Int_t &)
Double_t GetIEtaMax (const Int_t &)
Double_t GetIEtaMax (const Int_t &, const Int_t &)
Double_t GetIEtaMin (const Int_t &, const Int_t &)
Double_t GetIEtaMin (const Int_t &)
Double_t GetIHocoMax (const Int_t &, const Int_t &)
Double_t GetIHocoMin (const Int_t &, const Int_t &)
Double_t GetIIXMax ()
Double_t GetIIXMax (const Int_t &)
Double_t GetIIXMin ()
Double_t GetIIXMin (const Int_t &)
Int_t GetIPhiFromHashed (const Int_t &)
Int_t GetIXCrysInDee (const Int_t &, const Int_t &, const Int_t &)
Int_t GetIXCrysInSC (const Int_t &, const Int_t &, const Int_t &)
Int_t GetIXSCInDee (const Int_t &)
Double_t GetJIYMax (const Int_t &, const Int_t &)
Double_t GetJIYMax (const Int_t &)
Double_t GetJIYMin (const Int_t &, const Int_t &)
Double_t GetJIYMin (const Int_t &)
Double_t GetJPhiMax (const Int_t &)
Double_t GetJPhiMax (const Int_t &, const Int_t &)
Double_t GetJPhiMin (const Int_t &, const Int_t &)
Double_t GetJPhiMin (const Int_t &)
Double_t GetJVecoMax (const Int_t &, const Int_t &)
Double_t GetJVecoMin (const Int_t &, const Int_t &)
Int_t GetJYCrysInDee (const Int_t &, const Int_t &, const Int_t &)
Int_t GetJYCrysInSC (const Int_t &, const Int_t &, const Int_t &)
TString GetJYDirectionEB (const Int_t &)
TString GetJYDirectionEE (const Int_t &)
Int_t GetJYSCInDee (const Int_t &)
Int_t GetMaxSCInDS (const Int_t &)
Double_t GetPhi (const Int_t &, const Int_t &, const Int_t &)
Double_t GetPhiInSM (const Int_t &, const Int_t &, const Int_t &)
Double_t GetPhiMax (const Int_t &)
Double_t GetPhiMax (const Int_t &, const Int_t &)
Double_t GetPhiMin (const Int_t &)
Double_t GetPhiMin (const Int_t &, const Int_t &)
TString GetSCQuadFrom1DeeSCEcna (const Int_t &)
Int_t GetSCQuadTypeIndex (const TString, const TString)
TString GetSCType (const Int_t &)
Double_t GetSMCentralPhi (const Int_t &)
Int_t GetSMFromFED (const Int_t &)
TString GetSMHalfBarrel (const Int_t &)
TString GetStexHalfStas (const Int_t &)
TString GetStinLvrbType (const Int_t &)
TString GetTowerLvrbType (const Int_t &)
Double_t GetVecoMax (const Int_t &, const Int_t &)
Double_t GetVecoMin (const Int_t &, const Int_t &)
TString GetXDirectionEB (const Int_t &)
TString GetXDirectionEE (const Int_t &)
TString GetYDirectionEB (const Int_t &)
TString GetYDirectionEE (const Int_t &)
Int_t MaxCrysInStinEcna (const Int_t &, const Int_t &, const TString)
Int_t PlusMinusSMNumber (const Int_t &)
void SetEcalSubDetector (const TString, const TEcnaParEcal *)
void SetEcalSubDetector (const TString)
Int_t StexEchaForCons (const Int_t &, const Int_t &)
 TEcnaNumbering ()
 TEcnaNumbering (TEcnaObject *, const TString)
 TEcnaNumbering (const TString, const TEcnaParEcal *)
 ~TEcnaNumbering ()

Protected Member Functions

void Init ()

Private Attributes

Int_t fCdelete
Int_t fCnew
TString fCodeChNumberingITP1Bot
TString fCodeChNumberingITP2Top
TString fCodeChNumberingLvrbBot
TString fCodeChNumberingLvrbTop
TEcnaParEcalfEcal
Int_t fFlagPrint
TString fFlagSubDet
Int_t fgMaxCar
Int_t * fT1d_DeeSCCons
Int_t * fT1d_DS
Int_t * fT1d_DSSC
Int_t * fT1d_ich_IX
Int_t * fT1d_jch_JY
Int_t * fT1d_RecovDeeSC
Int_t * fT1dDeeCrys
Int_t * fT1dDeeSC
Int_t * fT1dSCEcha
Int_t * fT1dSMCrys
Int_t * fT1dSMTow
Int_t * fT1dTowEcha
Int_t ** fT2d_DeeSCCons
Int_t ** fT2d_DS
Int_t ** fT2d_DSSC
Int_t ** fT2d_ich_IX
Int_t ** fT2d_jch_JY
Int_t ** fT2d_RecovDeeSC
Int_t ** fT2dDeeCrys
Int_t ** fT2dDeeSC
Int_t ** fT2dSCEcha
Int_t ** fT2dSMCrys
Int_t *** fT3dDeeCrys
TString fTTBELL

Detailed Description

----------------------------------------------------------- TEcnaNumbering.h Update: 30/06/2011 Author: B.Fabbro (bernard.fabbro@cea.fr) DSM/IRFU/SPP CEA-Saclay Copyright: Those valid for CEA sofware

ECNA web page: http://cms-fabbro.web.cern.ch/cms-fabbro/ cna_new/Correlated_Noise_Analysis/ECNA_cna_1.htm -----------------------------------------------------------

Definition at line 23 of file TEcnaNumbering.h.


Constructor & Destructor Documentation

TEcnaNumbering::TEcnaNumbering ( )
TEcnaNumbering::TEcnaNumbering ( TEcnaObject pObjectManager,
const TString  SubDet 
)

Definition at line 42 of file TEcnaNumbering.cc.

References fEcal, TEcnaObject::GetPointerValue(), Init(), TEcnaObject::RegisterPointer(), and SetEcalSubDetector().

                                                                                {
// Constructor with argument: call to methods Init() and SetEcalSubDetector(const TString)

 // cout << "[Info Management] CLASS: TEcnaNumbering.    CREATE OBJECT: this = " << this << endl;

  Init();
  Long_t i_this = (Long_t)this;
  pObjectManager->RegisterPointer("TEcnaNumbering", i_this);

  //............................ fEcal  => to be changed in fParEcal
  fEcal = 0;
  Long_t iParEcal = pObjectManager->GetPointerValue("TEcnaParEcal");
  if( iParEcal == 0 )
    {fEcal = new TEcnaParEcal(pObjectManager, SubDet.Data()); /*fCnew++*/}
  else
    {fEcal = (TEcnaParEcal*)iParEcal;}

  SetEcalSubDetector(SubDet.Data());
}
TEcnaNumbering::TEcnaNumbering ( const TString  SubDet,
const TEcnaParEcal pEcal 
)

Definition at line 63 of file TEcnaNumbering.cc.

References Init(), and SetEcalSubDetector().

                                                                              {
// Constructor with argument: call to methods Init() and SetEcalSubDetector(const TString)

 // cout << "[Info Management] CLASS: TEcnaNumbering.    CREATE OBJECT: this = " << this << endl;

  Init();
  SetEcalSubDetector(SubDet.Data(), pEcal);
}
TEcnaNumbering::~TEcnaNumbering ( )

Definition at line 73 of file TEcnaNumbering.cc.

References fCdelete, fT1d_DeeSCCons, fT1d_DS, fT1d_DSSC, fT1d_ich_IX, fT1d_jch_JY, fT1d_RecovDeeSC, fT1dDeeCrys, fT1dDeeSC, fT1dSCEcha, fT1dSMCrys, fT1dSMTow, fT1dTowEcha, fT2d_DeeSCCons, fT2d_DS, fT2d_DSSC, fT2d_ich_IX, fT2d_jch_JY, fT2d_RecovDeeSC, fT2dDeeCrys, fT2dDeeSC, fT2dSCEcha, fT2dSMCrys, and fT3dDeeCrys.

                                {
//destructor

  //if (fEcal   != 0){delete fEcal;   fCdelete++;}

  //....................... Barrel
  if (fT2dSMCrys  != 0){delete [] fT2dSMCrys;  fCdelete++;}
  if (fT1dSMCrys  != 0){delete [] fT1dSMCrys;  fCdelete++;}
  if (fT1dSMTow   != 0){delete [] fT1dSMTow;   fCdelete++;}
  if (fT1dTowEcha != 0){delete [] fT1dTowEcha; fCdelete++;}

  //....................... Endcap
  if (fT3dDeeCrys     != 0){delete [] fT3dDeeCrys;     fCdelete++;}
  if (fT2dDeeCrys     != 0){delete [] fT2dDeeCrys;     fCdelete++;}
  if (fT1dDeeCrys     != 0){delete [] fT1dDeeCrys;     fCdelete++;}
  if (fT2dDeeSC       != 0){delete [] fT2dDeeSC;       fCdelete++;}
  if (fT1dDeeSC       != 0){delete [] fT1dDeeSC;       fCdelete++;}
  if (fT2dSCEcha      != 0){delete [] fT2dSCEcha;      fCdelete++;}
  if (fT1dSCEcha      != 0){delete [] fT1dSCEcha;      fCdelete++;}
  if (fT2d_jch_JY     != 0){delete [] fT2d_jch_JY;     fCdelete++;}
  if (fT1d_jch_JY     != 0){delete [] fT1d_jch_JY;     fCdelete++;}
  if (fT2d_ich_IX     != 0){delete [] fT2d_ich_IX;     fCdelete++;}
  if (fT1d_ich_IX     != 0){delete [] fT1d_ich_IX;     fCdelete++;}
  if (fT2d_DS         != 0){delete [] fT2d_DS;         fCdelete++;}
  if (fT1d_DS         != 0){delete [] fT1d_DS;         fCdelete++;}
  if (fT2d_DSSC       != 0){delete [] fT2d_DSSC;       fCdelete++;}
  if (fT1d_DSSC       != 0){delete [] fT1d_DSSC;       fCdelete++;}
  if (fT2d_DeeSCCons  != 0){delete [] fT2d_DeeSCCons;  fCdelete++;}
  if (fT1d_DeeSCCons  != 0){delete [] fT1d_DeeSCCons;  fCdelete++;}
  if (fT2d_RecovDeeSC != 0){delete [] fT2d_RecovDeeSC; fCdelete++;}
  if (fT1d_RecovDeeSC != 0){delete [] fT1d_RecovDeeSC; fCdelete++;}

 // cout << "[Info Management] CLASS: TEcnaNumbering.    DESTROY OBJECT: this = " << this << endl;

}

Member Function Documentation

void TEcnaNumbering::BuildBarrelCrysTable ( )

Definition at line 194 of file TEcnaNumbering.cc.

References fCdelete, fCnew, fEcal, fT1dSMCrys, fT1dSMTow, fT1dTowEcha, fT2dSMCrys, i, j, gen::k, TEcnaParEcal::MaxCrysInSM(), TEcnaParEcal::MaxCrysInTow(), and TEcnaParEcal::MaxTowInSM().

Referenced by Get1SMCrysFrom1SMTowAnd0TowEcha(), and SetEcalSubDetector().

{
// Build the correspondance table: SMCrys <-> (SMTow, TowEcha) for the ECAL BARREL
//
//  From CMS Internal Note  "CMS ECAL Barrel channel numbering"
//
//       Name      Number                     Reference set   Range        Comment
//
//       SMTow  : Tower number               in SuperModule  [1,68]      (phi,eta) progression
//       SMCrys : Crystal number             in SuperModule  [1,1700]    (phi,eta) progression
//       SMEcha : Electronic channel number  in SuperModule  [0,1699]    S shape data reading order 
//   
//       TowEcha: Electronic channel number  in Tower        [0,24]      S shape data reading order  
//
//
//   fill the 2D array:  fT2dSMCrys[n_SMTow][n_TowEcha]
//
//   and the 1d arrays:  fT1dSMTow[i_SMCrys] and fT1dTowEcha[i_SMCrys]
//
//-----------------------------------------------------------------------------------------------------

  if ( fT2dSMCrys == 0 )
    {
      Int_t MaxSMTow   = fEcal->MaxTowInSM();
      Int_t MaxTowEcha = fEcal->MaxCrysInTow();
      Int_t MaxSMCrys  = fEcal->MaxCrysInSM();
      
      //................... Allocation and Init CrysNumbersTable
      
      fT2dSMCrys = new Int_t*[MaxSMTow];                         fCnew++;  
      fT1dSMCrys = new  Int_t[MaxSMTow*MaxTowEcha];              fCnew++;   
      for(Int_t i_SMTow = 0 ; i_SMTow < MaxSMTow ; i_SMTow++){
        fT2dSMCrys[i_SMTow] = &fT1dSMCrys[0] + i_SMTow*MaxTowEcha;}
      for(Int_t i=0; i<MaxSMTow; i++)
        {for(Int_t j=0; j<MaxTowEcha; j++){fT2dSMCrys[i][j]=0;}}      

      fT1dSMTow   = new Int_t[MaxSMCrys];                        fCnew++;
      for(Int_t i=0; i<MaxSMCrys; i++){fT1dSMTow[i]=0;}

      fT1dTowEcha = new Int_t[MaxSMCrys];                        fCnew++;
      for(Int_t i=0; i<MaxSMCrys; i++){fT1dTowEcha[i]=0;}

      //........................ Build table      
      Int_t m2  = (Int_t)2;
      Int_t m26 = (Int_t)26;

      //      Int_t jch_type[2][26];
      Int_t** jch_type    = new Int_t*[m2];                      fCnew++;  
      Int_t*  jch_type_d1 = new Int_t[m2*m26];                   fCnew++;
      for(Int_t i_m2 = 0 ; i_m2 < m2 ; i_m2++){
        jch_type[i_m2] = &jch_type_d1[0] + i_m2*m26;}

      for(Int_t k=25;k>=21;k--){jch_type[0][k] = 25-k;}  //  k = 25,24,23,22,21 -> jch_type[0][k] = 0,1,2,3,4
      for(Int_t k=16;k<=20;k++){jch_type[0][k] = k-16;}  //  k = 16,17,18,19,20 -> jch_type[0][k] = 0,1,2,3,4
      for(Int_t k=15;k>=11;k--){jch_type[0][k] = 15-k;}  //  k = 15,14,12,13,11 -> jch_type[0][k] = 0,1,2,3,4
      for(Int_t k=6; k<=10;k++){jch_type[0][k] = k-6;}   //  k =  6, 7, 8, 9,10 -> jch_type[0][k] = 0,1,2,3,4
      for(Int_t k=5; k>=1; k--){jch_type[0][k] = 5-k;}   //  k =  5, 4, 3, 2, 1 -> jch_type[0][k] = 0,1,2,3,4
      
      for(Int_t k=1; k<=5; k++){jch_type[1][k] = k-1;}   //  k =  1, 2, 3, 4, 5 -> jch_type[1][k] = 0,1,2,3,4
      for(Int_t k=10;k>=6; k--){jch_type[1][k] = 10-k;}  //  k = 10, 9, 8, 7, 6 -> jch_type[1][k] = 0,1,2,3,4
      for(Int_t k=11;k<=15;k++){jch_type[1][k] = k-11;}  //  k = 11,12,13,14,15 -> jch_type[1][k] = 0,1,2,3,4
      for(Int_t k=20;k>=16;k--){jch_type[1][k] = 20-k;}  //  k = 20,19,18,17,16 -> jch_type[1][k] = 0,1,2,3,4
      for(Int_t k=21;k<=25;k++){jch_type[1][k] = k-21;}  //  k = 21,22,23,24,25 -> jch_type[1][k] = 0,1,2,3,4

      //      Int_t ich_type[2][26]; 
      Int_t** ich_type    = new Int_t*[m2];                      fCnew++;  
      Int_t*  ich_type_d1 = new Int_t[m2*m26];                   fCnew++;
      for(Int_t i_m2 = 0 ; i_m2 < m2 ; i_m2++){
        ich_type[i_m2] = &ich_type_d1[0] + i_m2*m26;}
     
      for(Int_t k=25;k>=21;k--){ich_type[0][k] = 0;}     //  k = 25,24,23,22,21 -> ich_type[0][k] = 0
      for(Int_t k=16;k<=20;k++){ich_type[0][k] = 1;}     //  k = 16,17,18,19,20 -> ich_type[0][k] = 1
      for(Int_t k=15;k>=11;k--){ich_type[0][k] = 2;}     //  k = 15,14,12,13,11 -> ich_type[0][k] = 2
      for(Int_t k=6; k<=10;k++){ich_type[0][k] = 3;}     //  k =  6, 7, 8, 9,10 -> ich_type[0][k] = 3
      for(Int_t k=5; k>=1; k--){ich_type[0][k] = 4;}     //  k =  5, 4, 3, 2, 1 -> ich_type[0][k] = 4
      
      for(Int_t k=1; k<=5; k++){ich_type[1][k] = 0;}     //  k =  1, 2, 3, 4, 5 -> ich_type[1][k] = 0
      for(Int_t k=10;k>=6; k--){ich_type[1][k] = 1;}     //  k = 10, 9, 8, 7, 6 -> ich_type[1][k] = 1
      for(Int_t k=11;k<=15;k++){ich_type[1][k] = 2;}     //  k = 11,12,13,14,15 -> ich_type[1][k] = 2
      for(Int_t k=20;k>=16;k--){ich_type[1][k] = 3;}     //  k = 20,19,18,17,16 -> ich_type[1][k] = 3
      for(Int_t k=21;k<=25;k++){ich_type[1][k] = 4;}     //  k = 21,22,23,24,25 -> ich_type[1][k] = 4
      
      //     Int_t type[17]={0,0,0,1,1, 0,0,1,1, 0,0,1,1, 0,0,1,1};
      Int_t m17 =17;
      Int_t* type = new Int_t[m17];                             fCnew++; 

      //  0 -> LVRB at the bottom, 1 -> LVRB at the top
      type[0] = 0;                   // M1
      type[1] = 0;
      type[2] = 0;
      type[3] = 1;
      type[4] = 1;

      type[5] = 0;                   // M2
      type[6] = 0;
      type[7] = 1;
      type[8] = 1;

      type[9]  = 0;                  // M3
      type[10] = 0;
      type[11] = 1;
      type[12] = 1;

      type[13] = 0;                  // M4
      type[14] = 0;
      type[15] = 1;
      type[16] = 1;

      for(Int_t tow=0; tow<MaxSMTow; tow++)                    //  tow  = 0 to 67   (MaxSMTow = 68)
        {
          for(Int_t ic=1; ic<=MaxTowEcha; ic++)                //  ic   = 1 to 25   (MaxTowEcha = 25) 
            {
              Int_t jtow = tow % 4;                            //  jtow = 0,1,2,3 
              Int_t itow = tow / 4;                            //  itow = 0 to 16

              Int_t icrys = itow*5 + ich_type[type[itow]][ic]; //  type[0->16] = 0,1 ,
                                                               //  ich_type[0->1][1->25] = 0,1,2,3,4
                                                               //  icrys = 0 to 84  (=> eta)

              Int_t jcrys = jtow*5 + jch_type[type[itow]][ic]; //  type[0->16] = 0,1 ,
                                                               //  jch_type[0->1][1->25] = 0,1,2,3,4
                                                               //  jcrys = 0 to 19  (=> phi)

              Int_t n1SMCrys = icrys*20+jcrys+1;               //  n1SMCrys = 1 to 1700

              fT2dSMCrys[tow][ic-1]   = n1SMCrys;      // fT2dSMCrys[]  : range = [1,1700]
              fT1dSMTow[n1SMCrys-1]   = tow+1;         // fT1dSMTow[]   : range = [1,68]
              fT1dTowEcha[n1SMCrys-1] = ic-1;          // fT1dTowEcha[] : range = [0,24]
            }
        }
      // cout << "#TEcnaNumbering::TBuildBarrelCrysTable()> Crys Table Building done" << endl;

      delete [] jch_type;                       fCdelete++;
      delete [] jch_type_d1;                    fCdelete++;
      delete [] ich_type;                       fCdelete++;
      delete [] ich_type_d1;                    fCdelete++;
      delete [] type;                           fCdelete++;
    }
  else
    {
      // cout << "#TEcnaNumbering::TBuildBarrelCrysTable()> No Building of Crys Table since it is already done." << endl;
    }
}
void TEcnaNumbering::BuildEndcapCrysTable ( )

Definition at line 969 of file TEcnaNumbering.cc.

References fCdelete, fCnew, fEcal, fT1d_ich_IX, fT1d_jch_JY, fT1dDeeCrys, fT1dDeeSC, fT1dSCEcha, fT2d_ich_IX, fT2d_jch_JY, fT2dDeeCrys, fT2dDeeSC, fT2dSCEcha, fT3dDeeCrys, i, j, gen::k, TEcnaParEcal::MaxCrysEcnaInDee(), TEcnaParEcal::MaxCrysInSC(), TEcnaParEcal::MaxCrysIXInSC(), TEcnaParEcal::MaxCrysIYInSC(), TEcnaParEcal::MaxSCEcnaInDee(), and TEcnaParEcal::MaxSCIYInDee().

Referenced by Get1DeeCrysFrom1DeeSCEcnaAnd0SCEcha(), and SetEcalSubDetector().

{
// Build the correspondance table: DeeCrys <-> (DeeSC, SCEcha) for the ECAL ENDCAP
//
//  From CMS Internal Note  "CMS ECAL Endcap channel numbering"
//
//       Name      Number                     Reference set  Range          Comment
//
//       DeeSC   : Super-Crystal (SC) number    in Dee      [1,200]   (IY,IX) progression
//       DeeCrys : Crystal number               in Dee      [1,5000]  (IY,IX) progression
//       DeeEcha : Electronic channel number    in Dee      [0,4999]  Crystal numbering for construction 
//   
//       SCEcha  : Electronic channel number    in SC       [1,25]    Crystal numbering for construction  
//
//
//   fill the 3D array:  fT3dDeeCrys[n_DeeSC][n_SCEcha][2]
//
//   and the 2d arrays:  fT2dDeeSC[n_DeeCrys][2] and fT2dSCEcha[n_DeeCrys][2]
//
//------------------------------------------------------------------------------------------------------

  if ( fT3dDeeCrys == 0 )
    {
      Int_t MaxDeeSC   = fEcal->MaxSCEcnaInDee();    // fEcal->MaxSCEcnaInDee() = 200
      Int_t MaxSCEcha  = fEcal->MaxCrysInSC();
      Int_t MaxDeeCrys = fEcal->MaxCrysEcnaInDee();

      Int_t MaxDirections = 2;    //  (2 directions: left and right)

      //................... Allocation and Init CrysNumbersTable
      fT3dDeeCrys = new Int_t**[MaxDeeSC];                         fCnew++;       
      fT2dDeeCrys = new  Int_t*[MaxDeeSC*MaxSCEcha];               fCnew++;  
      fT1dDeeCrys = new   Int_t[MaxDeeSC*MaxSCEcha*MaxDirections]; fCnew++;
      
      for(Int_t i_DeeSC = 0; i_DeeSC < MaxDeeSC; i_DeeSC++){
        fT3dDeeCrys[i_DeeSC] = &fT2dDeeCrys[0] + i_DeeSC*MaxSCEcha;
        for(Int_t i_SCEcha = 0; i_SCEcha < MaxSCEcha; i_SCEcha++){
          fT2dDeeCrys[i_DeeSC*MaxSCEcha + i_SCEcha] = &fT1dDeeCrys[0]
            + (i_DeeSC*MaxSCEcha + i_SCEcha)*MaxDirections;}}
      for(Int_t i=0; i<MaxDeeSC; i++)
        {for(Int_t j=0; j<MaxSCEcha; j++)
          {for(Int_t k=0; k<MaxDirections; k++){fT3dDeeCrys[i][j][k]=0;}}}      

      fT2dDeeSC  = new Int_t*[MaxDeeCrys];                         fCnew++;
      fT1dDeeSC  = new  Int_t[MaxDeeCrys*MaxDirections];           fCnew++;
      for(Int_t i_DeeCrys = 0 ; i_DeeCrys < MaxDeeCrys ; i_DeeCrys++){
        fT2dDeeSC[i_DeeCrys] = &fT1dDeeSC[0] + i_DeeCrys*MaxDirections;}
      for(Int_t i=0; i<MaxDeeCrys; i++)
        {for(Int_t j=0; j<MaxDirections; j++){fT2dDeeSC[i][j]=0;}}

      fT2dSCEcha = new Int_t*[MaxDeeCrys];                       fCnew++;
      fT1dSCEcha = new  Int_t[MaxDeeCrys*MaxDirections];                    fCnew++;   
      for(Int_t i_DeeCrys = 0 ; i_DeeCrys < MaxDeeCrys ; i_DeeCrys++){
        fT2dSCEcha[i_DeeCrys] = &fT1dSCEcha[0] + i_DeeCrys*MaxDirections;}
      for(Int_t i=0; i<MaxDeeCrys; i++)
        {for(Int_t j=0; j<MaxDirections; j++){fT2dSCEcha[i][j]=0;}}      

      //................................ Build table
      Int_t MaxTyp    = (Int_t)4;
      Int_t MaxCrysP1 = (Int_t)(fEcal->MaxCrysInSC()+1);

      //      Int_t fT2d_jch_JY[type][Echa+1]:  JY in the SC as a function of type and Echa+1
      fT2d_jch_JY    = new Int_t*[MaxTyp];                      fCnew++;  
      fT1d_jch_JY = new Int_t[MaxTyp*MaxCrysP1];             fCnew++;
      for(Int_t i_MaxTyp = 0 ; i_MaxTyp < MaxTyp ; i_MaxTyp++){
        fT2d_jch_JY[i_MaxTyp] = &fT1d_jch_JY[0] + i_MaxTyp*MaxCrysP1;}

      // type: 0=(top/right), 1=(top/left), 2=(bottom/left), 3=(bottom/right),  

      //................. top/right
      for(Int_t k= 5;k>= 1;k--){fT2d_jch_JY[0][k] = 4;}     //  k =  5, 4, 3, 2, 1 -> fT2d_jch_JY[0][k] = 4
      for(Int_t k=10;k>= 6;k--){fT2d_jch_JY[0][k] = 3;}     //  k = 10, 9, 8, 7, 6 -> fT2d_jch_JY[0][k] = 3
      for(Int_t k=15;k>=11;k--){fT2d_jch_JY[0][k] = 2;}     //  k = 15,14,13,12,11 -> fT2d_jch_JY[0][k] = 2
      for(Int_t k=20;k>=16;k--){fT2d_jch_JY[0][k] = 1;}     //  k = 20,19,18,17,16 -> fT2d_jch_JY[0][k] = 1
      for(Int_t k=25;k>=21;k--){fT2d_jch_JY[0][k] = 0;}     //  k = 25,24,23,22,21 -> fT2d_jch_JY[0][k] = 0
      //................. top/left
      for(Int_t k= 5;k>= 1;k--){fT2d_jch_JY[1][k] =  5-k;}  //  k =  5, 4, 3, 2, 1 -> fT2d_jch_JY[1][k] = 0,1,2,3,4
      for(Int_t k=10;k>= 6;k--){fT2d_jch_JY[1][k] = 10-k;}  //  k = 10, 9, 8, 7, 6 -> fT2d_jch_JY[1][k] = 0,1,2,3,4
      for(Int_t k=15;k>=11;k--){fT2d_jch_JY[1][k] = 15-k;}  //  k = 15,14,13,12,11 -> fT2d_jch_JY[1][k] = 0,1,2,3,4
      for(Int_t k=20;k>=16;k--){fT2d_jch_JY[1][k] = 20-k;}  //  k = 20,19,18,17,16 -> fT2d_jch_JY[1][k] = 0,1,2,3,4
      for(Int_t k=25;k>=21;k--){fT2d_jch_JY[1][k] = 25-k;}  //  k = 25,24,23,22,21 -> fT2d_jch_JY[1][k] = 0,1,2,3,4
      //................. bottom/left
      for(Int_t k= 1;k<=5; k++){fT2d_jch_JY[2][k] = 0;}     //  k =  1, 2, 3, 4, 5 -> fT2d_jch_JY[2][k] = 0
      for(Int_t k= 6;k<=10;k++){fT2d_jch_JY[2][k] = 1;}     //  k =  6, 7, 8, 9,10 -> fT2d_jch_JY[2][k] = 1
      for(Int_t k=11;k<=15;k++){fT2d_jch_JY[2][k] = 2;}     //  k = 11,12,13,14,15 -> fT2d_jch_JY[2][k] = 2
      for(Int_t k=16;k<=20;k++){fT2d_jch_JY[2][k] = 3;}     //  k = 16,17,18,19,20 -> fT2d_jch_JY[2][k] = 3
      for(Int_t k=21;k<=25;k++){fT2d_jch_JY[2][k] = 4;}     //  k = 21,22,23,24,25 -> fT2d_jch_JY[2][k] = 4
      //................. bottom/right
      for(Int_t k= 1;k<=5; k++){fT2d_jch_JY[3][k] = k-1;}   //  k =  1, 2, 3, 4, 5 -> fT2d_jch_JY[3][k] = 0,1,2,3,4
      for(Int_t k= 6;k<=10;k++){fT2d_jch_JY[3][k] = k-6;}   //  k =  6, 7, 8, 9,10 -> fT2d_jch_JY[3][k] = 0,1,2,3,4
      for(Int_t k=11;k<=15;k++){fT2d_jch_JY[3][k] = k-11;}  //  k = 11,12,13,14,15 -> fT2d_jch_JY[3][k] = 0,1,2,3,4
      for(Int_t k=16;k<=20;k++){fT2d_jch_JY[3][k] = k-16;}  //  k = 16,17,18,19,20 -> fT2d_jch_JY[3][k] = 0,1,2,3,4
      for(Int_t k=21;k<=25;k++){fT2d_jch_JY[3][k] = k-21;}  //  k = 21,22,23,24,25 -> fT2d_jch_JY[3][k] = 0,1,2,3,4

      //      Int_t fT2d_ich_IX[type][Echa+1]:  IX in the SC as a function of type and Echa+1
      fT2d_ich_IX = new Int_t*[MaxTyp];                      fCnew++;  
      fT1d_ich_IX = new Int_t[MaxTyp*MaxCrysP1];             fCnew++;
      for(Int_t i_MaxTyp = 0 ; i_MaxTyp < MaxTyp ; i_MaxTyp++){
        fT2d_ich_IX[i_MaxTyp] = &fT1d_ich_IX[0] + i_MaxTyp*MaxCrysP1;}

      //................. top/right
      for(Int_t k= 5;k>= 1;k--){fT2d_ich_IX[0][k] =  5-k;}  //  k =  5, 4, 3, 2, 1 -> fT2d_ich_IX[0][k] = 0,1,2,3,4
      for(Int_t k=10;k>= 6;k--){fT2d_ich_IX[0][k] = 10-k;}  //  k = 10, 9, 8, 7, 6 -> fT2d_ich_IX[0][k] = 0,1,2,3,4
      for(Int_t k=15;k>=11;k--){fT2d_ich_IX[0][k] = 15-k;}  //  k = 15,14,13,12,11 -> fT2d_ich_IX[0][k] = 0,1,2,3,4
      for(Int_t k=20;k>=16;k--){fT2d_ich_IX[0][k] = 20-k;}  //  k = 20,19,18,17,16 -> fT2d_ich_IX[0][k] = 0,1,2,3,4
      for(Int_t k=25;k>=21;k--){fT2d_ich_IX[0][k] = 25-k;}  //  k = 25,24,23,22,21 -> fT2d_ich_IX[0][k] = 0,1,2,3,4
      //................. top/left      
      for(Int_t k= 5;k>= 1;k--){fT2d_ich_IX[1][k] = 4;}     //  k =  5, 4, 3, 2, 1 -> fT2d_ich_IX[1][k] = 4
      for(Int_t k=10;k>= 6;k--){fT2d_ich_IX[1][k] = 3;}     //  k = 10, 9, 8, 7, 6 -> fT2d_ich_IX[1][k] = 3
      for(Int_t k=15;k>=11;k--){fT2d_ich_IX[1][k] = 2;}     //  k = 15,14,13,12,11 -> fT2d_ich_IX[1][k] = 2
      for(Int_t k=20;k>=16;k--){fT2d_ich_IX[1][k] = 1;}     //  k = 20,19,18,17,16 -> fT2d_ich_IX[1][k] = 1
      for(Int_t k=25;k>=21;k--){fT2d_ich_IX[1][k] = 0;}     //  k = 25,24,23,22,21 -> fT2d_ich_IX[1][k] = 0
      //................. bottom/left
      for(Int_t k=1; k<=5; k++){fT2d_ich_IX[2][k] =  5-k;}  //  k =  1, 2, 3, 4, 5 -> fT2d_ich_IX[2][k] = 0,1,2,3,4
      for(Int_t k=6; k<=10;k++){fT2d_ich_IX[2][k] = 10-k;}  //  k =  6, 7, 8, 9,10 -> fT2d_ich_IX[2][k] = 0,1,2,3,4
      for(Int_t k=11;k<=15;k++){fT2d_ich_IX[2][k] = 15-k;}  //  k = 11,12,13,14,15 -> fT2d_ich_IX[2][k] = 0,1,2,3,4
      for(Int_t k=16;k<=20;k++){fT2d_ich_IX[2][k] = 20-k;}  //  k = 16,17,18,19,20 -> fT2d_ich_IX[2][k] = 0,1,2,3,4
      for(Int_t k=21;k<=25;k++){fT2d_ich_IX[2][k] = 25-k;}  //  k = 21,22,23,24,25 -> fT2d_ich_IX[2][k] = 0,1,2,3,4
      //................. bottom/right      
      for(Int_t k= 1;k<= 5;k++){fT2d_ich_IX[3][k] = 4;}     //  k =  1, 2, 3, 4, 5 -> fT2d_ich_IX[3][k] = 4
      for(Int_t k= 6;k<=10;k++){fT2d_ich_IX[3][k] = 3;}     //  k =  6, 7, 8, 9,10 -> fT2d_ich_IX[3][k] = 3
      for(Int_t k=11;k<=15;k++){fT2d_ich_IX[3][k] = 2;}     //  k = 11,12,13,14,15 -> fT2d_ich_IX[3][k] = 2
      for(Int_t k=16;k<=20;k++){fT2d_ich_IX[3][k] = 1;}     //  k = 16,17,18,19,20 -> fT2d_ich_IX[3][k] = 1
      for(Int_t k=21;k<=25;k++){fT2d_ich_IX[3][k] = 0;}     //  k = 21,22,23,24,25 -> fT2d_ich_IX[3][k] = 0

      //............................................ type
      Int_t  Nb_DeeSC_JY  = fEcal->MaxSCIYInDee();      
      Int_t** type    = new Int_t*[Nb_DeeSC_JY];                   fCnew++; 
      Int_t*  type_d1 = new Int_t[Nb_DeeSC_JY*MaxDirections];      fCnew++;  
      for(Int_t i_DeeSC_JY = 0 ; i_DeeSC_JY < Nb_DeeSC_JY ; i_DeeSC_JY++){
        type[i_DeeSC_JY] = &type_d1[0] + i_DeeSC_JY*MaxDirections;}

      //  bottom = (0,9), top  = (10,19)
      //  right  = 0    , left = 1
      //  type = Quadrant number - 1

      type[10][0] = 0;                   // Q1 top right
      type[11][0] = 0;
      type[12][0] = 0;
      type[13][0] = 0;
      type[14][0] = 0;
      type[15][0] = 0;
      type[16][0] = 0;
      type[17][0] = 0;
      type[18][0] = 0;
      type[19][0] = 0;
 
      type[10][1] = 1;                   // Q2 top left    
      type[11][1] = 1;
      type[12][1] = 1;
      type[13][1] = 1;
      type[14][1] = 1;
      type[15][1] = 1;
      type[16][1] = 1;
      type[17][1] = 1;
      type[18][1] = 1;
      type[19][1] = 1;

      type[ 0][1] = 2;                   // Q3 : bottom left 
      type[ 1][1] = 2;
      type[ 2][1] = 2;
      type[ 3][1] = 2;
      type[ 4][1] = 2;
      type[ 5][1] = 2;
      type[ 6][1] = 2;
      type[ 7][1] = 2;
      type[ 8][1] = 2;
      type[ 9][1] = 2;
 
      type[ 0][0] = 3;                   // Q4 : bottom right 
      type[ 1][0] = 3;
      type[ 2][0] = 3;
      type[ 3][0] = 3;
      type[ 4][0] = 3;
      type[ 5][0] = 3;
      type[ 6][0] = 3;
      type[ 7][0] = 3;
      type[ 8][0] = 3;
      type[ 9][0] = 3;

      Int_t Nb_SCCrys_IX = fEcal->MaxCrysIXInSC();
      Int_t Nb_SCCrys_JY = fEcal->MaxCrysIYInSC();

      for(Int_t kSC=0; kSC<MaxDeeSC; kSC++)                   //  kSC  = 0 to 199   (MaxDeeSC = 200)
        {
          for(Int_t n_Echa=1; n_Echa<=MaxSCEcha; n_Echa++)       //  n_Echa   = 1 to 25    (MaxSCEcha = 25) 
            {
              for(Int_t idir=0; idir<2; idir++)
                {
                  Int_t ikSC = kSC / Nb_DeeSC_JY;                 //  ikSC = 0 to 9
                  Int_t jkSC = kSC % Nb_DeeSC_JY;                 //  jkSC = 0,1,2,..,19 
                  
                  Int_t icrys = ikSC*Nb_SCCrys_IX + fT2d_ich_IX[type[jkSC][idir]][n_Echa];
                  //  type[0->9][1->2] = 0,1,2,3
                  //  fT2d_ich_IX[0->3][1->25] = 0,1,2,3,4
                  //  icrys = 0 to 49  (=> IX)
                  
                  Int_t jcrys = jkSC*Nb_SCCrys_JY + fT2d_jch_JY[type[jkSC][idir]][n_Echa];
                  //  type[0->9][1->2] = 0,1,2,3
                  //  fT2d_jch_JY[0->3][1->25] = 0,1,2,3,4
                  //  jcrys = 0 to 99  (=> IY)
                  
                  Int_t n_DeeCrys = icrys*Nb_DeeSC_JY*Nb_SCCrys_JY+jcrys+1;    //  n_DeeCrys = 1 to 5000
                  
                  fT3dDeeCrys[kSC][n_Echa-1][idir] = n_DeeCrys;   // fT3dDeeCrys[][][] : range = [1,5000]
                  fT2dDeeSC[n_DeeCrys-1][idir]     = kSC+1;       // fT2dDeeSC[][]     : range = [1,200]
                  fT2dSCEcha[n_DeeCrys-1][idir]    = n_Echa;      // fT2dSCEcha[][]    : range = [1,25]
                }
            }
        }
      // cout << "#TEcnaNumbering::TBuildEndcapCrysTable()> Crys Table Building done" << endl;

      delete [] type;                           fCdelete++;
      delete [] type_d1;                        fCdelete++;
    }
  else
    {
      // cout << "#TEcnaNumbering::TBuildEndcapCrysTable()> No Building of Crys Table since it is already done " << endl;
    }
}
void TEcnaNumbering::BuildEndcapSCTable ( )

Definition at line 1190 of file TEcnaNumbering.cc.

References fCnew, fEcal, fT1d_DeeSCCons, fT1d_DS, fT1d_DSSC, fT1d_RecovDeeSC, fT2d_DeeSCCons, fT2d_DS, fT2d_DSSC, fT2d_RecovDeeSC, i, j, TEcnaParEcal::MaxDeeInEE(), TEcnaParEcal::MaxSCEcnaInDee(), and TEcnaParEcal::MaxSCForConsInDee().

Referenced by SetEcalSubDetector().

{
// Build the correspondance table: (Dee, DeeSC) <-> (DS , DSSC) for the ECAL ENDCAP
//
//  From CMS Internal Note  "CMS ECAL Endcap channel numbering"
//
//       Name       Number                     Reference set    Range     Comment
//
//       Dee      : Dee number                                  [1,4]
//       DeeSC    : Super-Crystal (SC) number  in Dee           [1,200]   (IY,IX) progression
//       DS       : Data Sector number         in EE + or -     [1,9]     (IY,IX) progression
//       DSSC     : Super-Crystal (SC) number  in Data Sector   [1,32]    Crystal numbering in data sector
//       DeeSCCons: Super-Crystal (SC) number  for construction [1,297]                      
// 
//   fill the 2d arrays:  fT2d_DS[4][200], fT2d_DSSC[4][200] and fT2d_DeeSCCons[4][200]
//
//------------------------------------------------------------------------------------------------------

//.................. Allocations and Init
  Int_t MaxEEDee       = fEcal->MaxDeeInEE();
  Int_t MaxDeeSC       = fEcal->MaxSCEcnaInDee();
  Int_t MaxEESCForCons = 2*fEcal->MaxSCForConsInDee();

  fT2d_DS = new Int_t*[MaxEEDee];                       fCnew++;    // = DS[Dee - 1, CNA_SCInDee - 1]
  fT1d_DS = new  Int_t[MaxEEDee*MaxDeeSC];              fCnew++;
  for(Int_t i_DeeCrys = 0 ; i_DeeCrys < MaxEEDee ; i_DeeCrys++){
    fT2d_DS[i_DeeCrys] = &fT1d_DS[0] + i_DeeCrys*MaxDeeSC;}
  for(Int_t i=0; i<MaxEEDee; i++)
    {for(Int_t j=0; j<MaxDeeSC; j++){fT2d_DS[i][j]=0;}}

  fT2d_DSSC = new Int_t*[MaxEEDee];                     fCnew++;    // = SCInDS[Dee - 1, CNA_SCInDee - 1]  
  fT1d_DSSC = new  Int_t[MaxEEDee*MaxDeeSC];            fCnew++;
  for(Int_t i_DeeCrys = 0 ; i_DeeCrys < MaxEEDee ; i_DeeCrys++){
    fT2d_DSSC[i_DeeCrys] = &fT1d_DSSC[0] + i_DeeCrys*MaxDeeSC;}
  for(Int_t i=0; i<MaxEEDee; i++)
    {for(Int_t j=0; j<MaxDeeSC; j++){fT2d_DSSC[i][j]=0;}}

  fT2d_DeeSCCons = new Int_t*[MaxEEDee];                fCnew++;    // = SCConsInDee[Dee - 1, CNA_SCInDee - 1]
  fT1d_DeeSCCons = new  Int_t[MaxEEDee*MaxDeeSC];       fCnew++;
  for(Int_t i_DeeCrys = 0 ; i_DeeCrys < MaxEEDee ; i_DeeCrys++){
    fT2d_DeeSCCons[i_DeeCrys] = &fT1d_DeeSCCons[0] + i_DeeCrys*MaxDeeSC;}
  for(Int_t i=0; i<MaxEEDee; i++)
    {for(Int_t j=0; j<MaxDeeSC; j++){fT2d_DeeSCCons[i][j]=0;}}

  fT2d_RecovDeeSC = new Int_t*[MaxEEDee];               fCnew++;    // = CNA_SCInDee[Dee - 1, SCConsInDee - 1]
  fT1d_RecovDeeSC = new  Int_t[MaxEEDee*MaxEESCForCons];  fCnew++;
  for(Int_t i_DeeCrys = 0 ; i_DeeCrys < MaxEEDee ; i_DeeCrys++){
    fT2d_RecovDeeSC[i_DeeCrys] = &fT1d_RecovDeeSC[0] + i_DeeCrys*MaxEESCForCons;}
  for(Int_t i=0; i<MaxEEDee; i++)
    {for(Int_t j=0; j<MaxEESCForCons; j++){fT2d_RecovDeeSC[i][j]=0;}}

  //.............................. Data sector (DS) numbers: fT2d_DS[][]
  //                               isc = ECNA numbers

  Int_t ids = 0;

  //........... (D1,S1)=(D2,S9)=(D3,S9)=(D4,S1)
  for(Int_t dee = 1; dee<=4; dee++)
    {
      if( dee == 1 || dee == 4 ){ids = 1;}
      if( dee == 2 || dee == 3 ){ids = 9;}
      for(Int_t isc= 13; isc<= 20; isc++)fT2d_DS[dee-1][isc-1] = ids;
      for(Int_t isc= 33; isc<= 40; isc++)fT2d_DS[dee-1][isc-1] = ids;
      for(Int_t isc= 54; isc<= 60; isc++)fT2d_DS[dee-1][isc-1] = ids;
      for(Int_t isc= 75; isc<= 79; isc++)fT2d_DS[dee-1][isc-1] = ids;
      for(Int_t isc= 96; isc<= 99; isc++)fT2d_DS[dee-1][isc-1] = ids;
      for(Int_t isc=118; isc<=119; isc++)fT2d_DS[dee-1][isc-1] = ids;
    }
  //........... (D1,S2)=(D2,S8)=(D3,S8)=(D4,S2)
  for(Int_t dee = 1; dee<=4; dee++)
    {
      if( dee == 1 || dee == 4 ){ids = 2;}
      if( dee == 2 || dee == 3 ){ids = 8;}
      for(Int_t isc= 32; isc<= 32; isc++)fT2d_DS[dee-1][isc-1] = ids;
      for(Int_t isc= 51; isc<= 53; isc++)fT2d_DS[dee-1][isc-1] = ids;
      for(Int_t isc= 72; isc<= 74; isc++)fT2d_DS[dee-1][isc-1] = ids;
      for(Int_t isc= 92; isc<= 95; isc++)fT2d_DS[dee-1][isc-1] = ids;
      for(Int_t isc=112; isc<=117; isc++)fT2d_DS[dee-1][isc-1] = ids;
      for(Int_t isc=132; isc<=138; isc++)fT2d_DS[dee-1][isc-1] = ids;
      for(Int_t isc=152; isc<=157; isc++)fT2d_DS[dee-1][isc-1] = ids;
      for(Int_t isc=173; isc<=176; isc++)fT2d_DS[dee-1][isc-1] = ids;
      for(Int_t isc=193; isc<=193; isc++)fT2d_DS[dee-1][isc-1] = ids;
    }
  //........... (D1,S3)=(D2,S7)=(D3,S7)=(D4,S3)
  for(Int_t dee = 1; dee<=4; dee++)
    {
      if( dee == 1 || dee == 4 ){ids = 3;}
      if( dee == 2 || dee == 3 ){ids = 7;}
      for(Int_t isc= 50; isc<= 50; isc++)fT2d_DS[dee-1][isc-1] = ids;
      for(Int_t isc= 69; isc<= 71; isc++)fT2d_DS[dee-1][isc-1] = ids;
      for(Int_t isc= 88; isc<= 91; isc++)fT2d_DS[dee-1][isc-1] = ids;
      for(Int_t isc=108; isc<=111; isc++)fT2d_DS[dee-1][isc-1] = ids;
      for(Int_t isc=127; isc<=131; isc++)fT2d_DS[dee-1][isc-1] = ids;
      for(Int_t isc=147; isc<=151; isc++)fT2d_DS[dee-1][isc-1] = ids;
      for(Int_t isc=166; isc<=172; isc++)fT2d_DS[dee-1][isc-1] = ids;
      for(Int_t isc=188; isc<=192; isc++)fT2d_DS[dee-1][isc-1] = ids;
    }
  //........... (D1,S4)=(D2,S6)=(D3,S6)=(D4,S4)
  for(Int_t dee = 1; dee<=4; dee++)
    {
      if( dee == 1 || dee == 4 ){ids = 4;}
      if( dee == 2 || dee == 3 ){ids = 6;}
      for(Int_t isc= 27; isc<= 29; isc++)fT2d_DS[dee-1][isc-1] = ids;
      for(Int_t isc= 44; isc<= 49; isc++)fT2d_DS[dee-1][isc-1] = ids;
      for(Int_t isc= 62; isc<= 68; isc++)fT2d_DS[dee-1][isc-1] = ids;
      for(Int_t isc= 82; isc<= 87; isc++)fT2d_DS[dee-1][isc-1] = ids;
      for(Int_t isc=102; isc<=107; isc++)fT2d_DS[dee-1][isc-1] = ids;
      for(Int_t isc=123; isc<=126; isc++)fT2d_DS[dee-1][isc-1] = ids;
      for(Int_t isc=144; isc<=146; isc++)fT2d_DS[dee-1][isc-1] = ids;
      for(Int_t isc=165; isc<=165; isc++)fT2d_DS[dee-1][isc-1] = ids;
    }
  //........... (D1,S5)=(D2,S5)=(D3,S5)=(D4,S5)
  for(Int_t dee = 1; dee<=4; dee++)
    {
      for(Int_t isc=  1; isc<=  8; isc++)fT2d_DS[dee-1][isc-1] = 5;
      for(Int_t isc= 21; isc<= 26; isc++)fT2d_DS[dee-1][isc-1] = 5;
      for(Int_t isc= 41; isc<= 43; isc++)fT2d_DS[dee-1][isc-1] = 5;
    }
  
  //............................................ SC numbers in Data Sectors: fT2d_DSSC[][]
  //                                             fT2d_DSSC[dee-1][SC ECNA number - 1] = SC number in DS;
  for(Int_t dee=1; dee<=4; dee++)
    {
      for(Int_t isc=1; isc<=MaxDeeSC; isc++)
        {fT2d_DSSC[dee-1][isc-1] = -1;}
      //.......................................... S1 (D1,D4), S9 (D2,D3) ; 33 SC's
      fT2d_DSSC[dee-1][13-1] = 12;
      fT2d_DSSC[dee-1][14-1] = 11;
      fT2d_DSSC[dee-1][15-1] = 10;
      fT2d_DSSC[dee-1][16-1] =  9;
      fT2d_DSSC[dee-1][17-1] =  4;
      fT2d_DSSC[dee-1][18-1] =  3;
      fT2d_DSSC[dee-1][19-1] =  2;
      fT2d_DSSC[dee-1][20-1] =  1;

      fT2d_DSSC[dee-1][33-1] = 16;
      fT2d_DSSC[dee-1][34-1] = 15;
      fT2d_DSSC[dee-1][35-1] = 14;
      fT2d_DSSC[dee-1][36-1] = 13;
      fT2d_DSSC[dee-1][37-1] =  8;
      fT2d_DSSC[dee-1][38-1] =  7;
      fT2d_DSSC[dee-1][39-1] =  6;
      fT2d_DSSC[dee-1][40-1] =  5;

      fT2d_DSSC[dee-1][54-1] = 33;
      fT2d_DSSC[dee-1][55-1] = 31;
      fT2d_DSSC[dee-1][56-1] = 27;
      fT2d_DSSC[dee-1][57-1] = 24;
      fT2d_DSSC[dee-1][58-1] = 20;
      fT2d_DSSC[dee-1][59-1] = 17;
      fT2d_DSSC[dee-1][60-1] = 30;  //  (182a, 33a for construction)
      
      fT2d_DSSC[dee-1][75-1] = 32;
      fT2d_DSSC[dee-1][76-1] = 28;
      fT2d_DSSC[dee-1][77-1] = 25;
      fT2d_DSSC[dee-1][78-1] = 21;
      fT2d_DSSC[dee-1][79-1] = 18;
      
      fT2d_DSSC[dee-1][96-1] = 29;
      fT2d_DSSC[dee-1][97-1] = 26;
      fT2d_DSSC[dee-1][98-1] = 22;
      fT2d_DSSC[dee-1][99-1] = 19;

      fT2d_DSSC[dee-1][118-1] = 23;
      fT2d_DSSC[dee-1][119-1] = 30;  //  (182b, 33b for construction)

      //.......................................... S2 (D1,D4), S8(D2,D3) ; 32 SC's
      fT2d_DSSC[dee-1][32-1] = 25;  // also 3;  // ( (207c, 58c) also (178c, 29c) for construction)

      fT2d_DSSC[dee-1][51-1] = 32;
      fT2d_DSSC[dee-1][52-1] = 26;
      fT2d_DSSC[dee-1][53-1] = 18;

      fT2d_DSSC[dee-1][72-1] = 27;
      fT2d_DSSC[dee-1][73-1] = 19;
      fT2d_DSSC[dee-1][74-1] = 12;
      
      fT2d_DSSC[dee-1][92-1] = 28;
      fT2d_DSSC[dee-1][93-1] = 20;
      fT2d_DSSC[dee-1][94-1] = 13;
      fT2d_DSSC[dee-1][95-1] =  7;

      fT2d_DSSC[dee-1][112-1] = 29;
      fT2d_DSSC[dee-1][113-1] = 21;
      fT2d_DSSC[dee-1][114-1] = 14;
      fT2d_DSSC[dee-1][115-1] =  8;
      fT2d_DSSC[dee-1][116-1] =  4;
      fT2d_DSSC[dee-1][117-1] =  1;

      fT2d_DSSC[dee-1][132-1] = 30;
      fT2d_DSSC[dee-1][133-1] = 22;
      fT2d_DSSC[dee-1][134-1] = 15;
      fT2d_DSSC[dee-1][135-1] =  9;
      fT2d_DSSC[dee-1][136-1] =  5;
      fT2d_DSSC[dee-1][137-1] =  2;
      fT2d_DSSC[dee-1][138-1] =  3;  // (178a, 29a for construction)

      fT2d_DSSC[dee-1][152-1] = 31;
      fT2d_DSSC[dee-1][153-1] = 23;
      fT2d_DSSC[dee-1][154-1] = 16;
      fT2d_DSSC[dee-1][155-1] = 10;
      fT2d_DSSC[dee-1][156-1] =  6;
      fT2d_DSSC[dee-1][157-1] =  3;  // (178b, 29b for construction)

      fT2d_DSSC[dee-1][173-1] = 24;
      fT2d_DSSC[dee-1][174-1] = 17;
      fT2d_DSSC[dee-1][175-1] = 11;
      fT2d_DSSC[dee-1][176-1] = 25;  // (207a, 58a for construction)

      fT2d_DSSC[dee-1][193-1] = 25;  // (207b, 58b for construction)

      //.......................................... S3 (D1,D4), S7 (D2,D3)  ; 34 SC's
      fT2d_DSSC[dee-1][50-1] = 10;

      fT2d_DSSC[dee-1][69-1] = 18;
      fT2d_DSSC[dee-1][70-1] = 11;
      fT2d_DSSC[dee-1][71-1] =  3;

      fT2d_DSSC[dee-1][88-1] = 25;
      fT2d_DSSC[dee-1][89-1] = 19;
      fT2d_DSSC[dee-1][90-1] = 12;
      fT2d_DSSC[dee-1][91-1] =  4;

      fT2d_DSSC[dee-1][108-1] = 26;
      fT2d_DSSC[dee-1][109-1] = 20;
      fT2d_DSSC[dee-1][110-1] = 13;
      fT2d_DSSC[dee-1][111-1] =  5;

      fT2d_DSSC[dee-1][127-1] = 31;
      fT2d_DSSC[dee-1][128-1] = 27;
      fT2d_DSSC[dee-1][129-1] = 21;
      fT2d_DSSC[dee-1][130-1] = 14;
      fT2d_DSSC[dee-1][131-1] =  6;

      fT2d_DSSC[dee-1][147-1] = 32;
      fT2d_DSSC[dee-1][148-1] = 28;
      fT2d_DSSC[dee-1][149-1] = 22;
      fT2d_DSSC[dee-1][150-1] = 15;
      fT2d_DSSC[dee-1][151-1] =  7;

      fT2d_DSSC[dee-1][166-1] = 33;
      fT2d_DSSC[dee-1][167-1] = 30;
      fT2d_DSSC[dee-1][168-1] = 29;
      fT2d_DSSC[dee-1][169-1] = 23;
      fT2d_DSSC[dee-1][170-1] = 16;
      fT2d_DSSC[dee-1][171-1] =  8;
      fT2d_DSSC[dee-1][172-1] =  1;

      fT2d_DSSC[dee-1][188-1] = 34; // (298a, 149a for construction)
      fT2d_DSSC[dee-1][189-1] = 24;
      fT2d_DSSC[dee-1][190-1] = 17;
      fT2d_DSSC[dee-1][191-1] =  9;
      fT2d_DSSC[dee-1][192-1] =  2;

      //.......................................... S4 (D1,D4), S6 (D2,D3) ; 33 SC's
      fT2d_DSSC[dee-1][27-1] = 33;
      fT2d_DSSC[dee-1][28-1] = 32;
      fT2d_DSSC[dee-1][29-1] = 14; // also 21;  //  ( (261a, 112a) also (268a, 119a) for construction)

      fT2d_DSSC[dee-1][44-1] = 22;
      fT2d_DSSC[dee-1][45-1] = 15;
      fT2d_DSSC[dee-1][46-1] =  8;
      fT2d_DSSC[dee-1][47-1] =  4;
      fT2d_DSSC[dee-1][48-1] =  2;
      fT2d_DSSC[dee-1][49-1] =  1;

      fT2d_DSSC[dee-1][62-1] = 29;
      fT2d_DSSC[dee-1][63-1] = 28;
      fT2d_DSSC[dee-1][64-1] = 23;
      fT2d_DSSC[dee-1][65-1] = 16;
      fT2d_DSSC[dee-1][66-1] =  9;
      fT2d_DSSC[dee-1][67-1] =  5;
      fT2d_DSSC[dee-1][68-1] =  3;

      fT2d_DSSC[dee-1][82-1] = 31;
      fT2d_DSSC[dee-1][83-1] = 30;
      fT2d_DSSC[dee-1][84-1] = 24;
      fT2d_DSSC[dee-1][85-1] = 17;
      fT2d_DSSC[dee-1][86-1] = 10;
      fT2d_DSSC[dee-1][87-1] =  6;

      fT2d_DSSC[dee-1][102-1] = 21;  //   (268c, 119c for construction)
      fT2d_DSSC[dee-1][103-1] = 27;
      fT2d_DSSC[dee-1][104-1] = 25;
      fT2d_DSSC[dee-1][105-1] = 18;
      fT2d_DSSC[dee-1][106-1] = 11;
      fT2d_DSSC[dee-1][107-1] =  7;

      fT2d_DSSC[dee-1][123-1] = 21;  //   (268b, 119b for construction)
      fT2d_DSSC[dee-1][124-1] = 26;
      fT2d_DSSC[dee-1][125-1] = 19;
      fT2d_DSSC[dee-1][126-1] = 12;

      fT2d_DSSC[dee-1][144-1] = 14;  //   (261c, 112c for construction)
      fT2d_DSSC[dee-1][145-1] = 20;
      fT2d_DSSC[dee-1][146-1] = 13;

      fT2d_DSSC[dee-1][165-1] = 14;  //   (261b, 112b for construction)

      //.......................................... S5   (2*17 = 34 SC's)
      if(dee == 1 || dee == 3)
        {
          fT2d_DSSC[dee-1][1-1] = 34;
          fT2d_DSSC[dee-1][2-1] = 33;
          fT2d_DSSC[dee-1][3-1] = 32;
          fT2d_DSSC[dee-1][4-1] = 31;
          fT2d_DSSC[dee-1][5-1] = 26;
          fT2d_DSSC[dee-1][6-1] = 25;
          fT2d_DSSC[dee-1][7-1] = 24;
          fT2d_DSSC[dee-1][8-1] = 23;

          fT2d_DSSC[dee-1][21-1] = 30;
          fT2d_DSSC[dee-1][22-1] = 29;
          fT2d_DSSC[dee-1][23-1] = 28;
          fT2d_DSSC[dee-1][24-1] = 27;
          fT2d_DSSC[dee-1][25-1] = 22;
          fT2d_DSSC[dee-1][26-1] = 21;

          fT2d_DSSC[dee-1][41-1] = 20;  //   (281a for construction)
          fT2d_DSSC[dee-1][42-1] = 19;
          fT2d_DSSC[dee-1][43-1] = 18;
        }

      if(dee == 2 || dee == 4)
        {
          fT2d_DSSC[dee-1][1-1] = 17;
          fT2d_DSSC[dee-1][2-1] = 16;
          fT2d_DSSC[dee-1][3-1] = 15;
          fT2d_DSSC[dee-1][4-1] = 14;
          fT2d_DSSC[dee-1][5-1] =  9;
          fT2d_DSSC[dee-1][6-1] =  8;
          fT2d_DSSC[dee-1][7-1] =  7;
          fT2d_DSSC[dee-1][8-1] =  6;

          fT2d_DSSC[dee-1][21-1] = 13;
          fT2d_DSSC[dee-1][22-1] = 12;
          fT2d_DSSC[dee-1][23-1] = 11;
          fT2d_DSSC[dee-1][24-1] = 10;
          fT2d_DSSC[dee-1][25-1] =  5;
          fT2d_DSSC[dee-1][26-1] =  4;

          fT2d_DSSC[dee-1][41-1] = 3;  //   (132a for construction)
          fT2d_DSSC[dee-1][42-1] = 2;
          fT2d_DSSC[dee-1][43-1] = 1;
        }
    }
  //............................... Numbers for construction: fT2d_DeeSCCons[][]
  //                                fT2d_DeeSCCons[dee-1][SC ECNA number - 1] = SC number for construction;

  //............................... init to -1
  for(Int_t dee=1; dee<=4; dee++)
    {for(Int_t isc=1; isc<=MaxDeeSC; isc++)
        {fT2d_DeeSCCons[dee-1][isc-1] = -1;}}

  for(Int_t i_dee_type=1; i_dee_type<=2; i_dee_type++)
    {
      Int_t dee = -1;
      if( i_dee_type == 1 ){dee = 1;}
      if( i_dee_type == 2 ){dee = 3;}
      
      //.......................................... (D1,S1 or D3,S9) AND (D2,S9 or D4,S1)
      //  number in comment = fT2d_DSSC[dee-1][SC ECNA nb - 1] (= SC number in DS)
      fT2d_DeeSCCons[dee-1][13-1] = 161; fT2d_DeeSCCons[dee][13-1] = 12; // 12;
      fT2d_DeeSCCons[dee-1][14-1] = 160; fT2d_DeeSCCons[dee][14-1] = 11; // 11;
      fT2d_DeeSCCons[dee-1][15-1] = 159; fT2d_DeeSCCons[dee][15-1] = 10; // 10;
      fT2d_DeeSCCons[dee-1][16-1] = 158; fT2d_DeeSCCons[dee][16-1] =  9; //  9;
      fT2d_DeeSCCons[dee-1][17-1] = 153; fT2d_DeeSCCons[dee][17-1] =  4; //  4;
      fT2d_DeeSCCons[dee-1][18-1] = 152; fT2d_DeeSCCons[dee][18-1] =  3; //  3;
      fT2d_DeeSCCons[dee-1][19-1] = 151; fT2d_DeeSCCons[dee][19-1] =  2; //  2;
      fT2d_DeeSCCons[dee-1][20-1] = 150; fT2d_DeeSCCons[dee][20-1] =  1; //  1;
      
      fT2d_DeeSCCons[dee-1][33-1] = 165; fT2d_DeeSCCons[dee][33-1] = 16; // 16;
      fT2d_DeeSCCons[dee-1][34-1] = 164; fT2d_DeeSCCons[dee][34-1] = 15; // 15;
      fT2d_DeeSCCons[dee-1][35-1] = 163; fT2d_DeeSCCons[dee][35-1] = 14; // 14;
      fT2d_DeeSCCons[dee-1][36-1] = 162; fT2d_DeeSCCons[dee][36-1] = 13; // 13;
      fT2d_DeeSCCons[dee-1][37-1] = 157; fT2d_DeeSCCons[dee][37-1] =  8; //  8;
      fT2d_DeeSCCons[dee-1][38-1] = 156; fT2d_DeeSCCons[dee][38-1] =  7; //  7;
      fT2d_DeeSCCons[dee-1][39-1] = 155; fT2d_DeeSCCons[dee][39-1] =  6; //  6;
      fT2d_DeeSCCons[dee-1][40-1] = 154; fT2d_DeeSCCons[dee][40-1] =  5; //  5;
      
      fT2d_DeeSCCons[dee-1][54-1] = 193; fT2d_DeeSCCons[dee][54-1] = 44; // 33; 
      fT2d_DeeSCCons[dee-1][55-1] = 186; fT2d_DeeSCCons[dee][55-1] = 37; // 31;
      fT2d_DeeSCCons[dee-1][56-1] = 179; fT2d_DeeSCCons[dee][56-1] = 30; // 27;
      fT2d_DeeSCCons[dee-1][57-1] = 173; fT2d_DeeSCCons[dee][57-1] = 24; // 24;
      fT2d_DeeSCCons[dee-1][58-1] = 169; fT2d_DeeSCCons[dee][58-1] = 20; // 20;
      fT2d_DeeSCCons[dee-1][59-1] = 166; fT2d_DeeSCCons[dee][59-1] = 17; // 17;
      fT2d_DeeSCCons[dee-1][60-1] = 182; fT2d_DeeSCCons[dee][60-1] = 33; // 30;    // 182a ;  33a;

      fT2d_DeeSCCons[dee-1][75-1] = 187; fT2d_DeeSCCons[dee][75-1] = 38; // 32;
      fT2d_DeeSCCons[dee-1][76-1] = 180; fT2d_DeeSCCons[dee][76-1] = 31; // 28;
      fT2d_DeeSCCons[dee-1][77-1] = 174; fT2d_DeeSCCons[dee][77-1] = 25; // 25;
      fT2d_DeeSCCons[dee-1][78-1] = 170; fT2d_DeeSCCons[dee][78-1] = 21; // 21;
      fT2d_DeeSCCons[dee-1][79-1] = 167; fT2d_DeeSCCons[dee][79-1] = 18; // 18;
      
      fT2d_DeeSCCons[dee-1][96-1] = 181; fT2d_DeeSCCons[dee][96-1] = 32; // 29;
      fT2d_DeeSCCons[dee-1][97-1] = 175; fT2d_DeeSCCons[dee][97-1] = 26; // 26;
      fT2d_DeeSCCons[dee-1][98-1] = 171; fT2d_DeeSCCons[dee][98-1] = 22; // 22;
      fT2d_DeeSCCons[dee-1][99-1] = 168; fT2d_DeeSCCons[dee][99-1] = 19; // 19;
      
      fT2d_DeeSCCons[dee-1][118-1] = 172; fT2d_DeeSCCons[dee][118-1] = 23; // 23;
      fT2d_DeeSCCons[dee-1][119-1] = 182; fT2d_DeeSCCons[dee][119-1] = 33; // 30;    // 182b ;  33b;
     
      //.......................................... (D1,S2 or D3,S8) AND (D2,S8 or D4,S2)
      fT2d_DeeSCCons[dee-1][32-1] = 178; fT2d_DeeSCCons[dee][32-1] = 29; // 25-3;   // 178c-207c ; 29c-58c;

      fT2d_DeeSCCons[dee-1][51-1] = 216; fT2d_DeeSCCons[dee][51-1] = 67; // 32;
      fT2d_DeeSCCons[dee-1][52-1] = 208; fT2d_DeeSCCons[dee][52-1] = 59; // 26;
      fT2d_DeeSCCons[dee-1][53-1] = 200; fT2d_DeeSCCons[dee][53-1] = 51; // 18;
      
      fT2d_DeeSCCons[dee-1][72-1] = 209; fT2d_DeeSCCons[dee][72-1] = 60; // 27;
      fT2d_DeeSCCons[dee-1][73-1] = 201; fT2d_DeeSCCons[dee][73-1] = 52; // 19;
      fT2d_DeeSCCons[dee-1][74-1] = 194; fT2d_DeeSCCons[dee][74-1] = 45; // 12;
      
      fT2d_DeeSCCons[dee-1][92-1] = 210; fT2d_DeeSCCons[dee][92-1] = 61; // 28;
      fT2d_DeeSCCons[dee-1][93-1] = 202; fT2d_DeeSCCons[dee][93-1] = 53; // 20;
      fT2d_DeeSCCons[dee-1][94-1] = 195; fT2d_DeeSCCons[dee][94-1] = 46; // 13;
      fT2d_DeeSCCons[dee-1][95-1] = 188; fT2d_DeeSCCons[dee][95-1] = 39; //  7;
      
      fT2d_DeeSCCons[dee-1][112-1] = 211; fT2d_DeeSCCons[dee][112-1] = 62; // 29;
      fT2d_DeeSCCons[dee-1][113-1] = 203; fT2d_DeeSCCons[dee][113-1] = 54; // 21;
      fT2d_DeeSCCons[dee-1][114-1] = 196; fT2d_DeeSCCons[dee][114-1] = 47; // 14;
      fT2d_DeeSCCons[dee-1][115-1] = 189; fT2d_DeeSCCons[dee][115-1] = 40; //  8;
      fT2d_DeeSCCons[dee-1][116-1] = 183; fT2d_DeeSCCons[dee][116-1] = 34; //  4;
      fT2d_DeeSCCons[dee-1][117-1] = 176; fT2d_DeeSCCons[dee][117-1] = 27; //  1;
      
      fT2d_DeeSCCons[dee-1][132-1] = 212; fT2d_DeeSCCons[dee][132-1] = 63; // 30;
      fT2d_DeeSCCons[dee-1][133-1] = 204; fT2d_DeeSCCons[dee][133-1] = 55; // 22;
      fT2d_DeeSCCons[dee-1][134-1] = 197; fT2d_DeeSCCons[dee][134-1] = 48; // 15;
      fT2d_DeeSCCons[dee-1][135-1] = 190; fT2d_DeeSCCons[dee][135-1] = 41; //  9;
      fT2d_DeeSCCons[dee-1][136-1] = 184; fT2d_DeeSCCons[dee][136-1] = 35; //  5;
      fT2d_DeeSCCons[dee-1][137-1] = 177; fT2d_DeeSCCons[dee][137-1] = 28; //  2;
      fT2d_DeeSCCons[dee-1][138-1] = 178; fT2d_DeeSCCons[dee][138-1] = 29; //  3; //  178a ;  29a;
      
      fT2d_DeeSCCons[dee-1][152-1] = 213; fT2d_DeeSCCons[dee][152-1] = 64; // 31;
      fT2d_DeeSCCons[dee-1][153-1] = 205; fT2d_DeeSCCons[dee][153-1] = 56; // 23;
      fT2d_DeeSCCons[dee-1][154-1] = 198; fT2d_DeeSCCons[dee][154-1] = 49; // 16;
      fT2d_DeeSCCons[dee-1][155-1] = 191; fT2d_DeeSCCons[dee][155-1] = 42; // 10;
      fT2d_DeeSCCons[dee-1][156-1] = 185; fT2d_DeeSCCons[dee][156-1] = 36; //  6;
      fT2d_DeeSCCons[dee-1][157-1] = 178; fT2d_DeeSCCons[dee][157-1] = 29; //  3; //  178b ;  29b;
      
      fT2d_DeeSCCons[dee-1][173-1] = 206; fT2d_DeeSCCons[dee][173-1] = 57; // 24;
      fT2d_DeeSCCons[dee-1][174-1] = 199; fT2d_DeeSCCons[dee][174-1] = 50; // 17;
      fT2d_DeeSCCons[dee-1][175-1] = 192; fT2d_DeeSCCons[dee][175-1] = 43; // 11;
      fT2d_DeeSCCons[dee-1][176-1] = 207; fT2d_DeeSCCons[dee][176-1] = 58; // 25; //  58a ;  207a;
 
      fT2d_DeeSCCons[dee-1][193-1] = 207; fT2d_DeeSCCons[dee][193-1] = 58; // 25; //  58b ;  207b;
    
      //.......................................... (D1,S3 or D3,S7) AND  (D2,S7 or D4,S3) 
      fT2d_DeeSCCons[dee-1][50-1] = 224; fT2d_DeeSCCons[dee][50-1] = 75; // 10;
      
      fT2d_DeeSCCons[dee-1][69-1] = 233; fT2d_DeeSCCons[dee][69-1] = 84; // 18;
      fT2d_DeeSCCons[dee-1][70-1] = 225; fT2d_DeeSCCons[dee][70-1] = 76; // 11;
      fT2d_DeeSCCons[dee-1][71-1] = 217; fT2d_DeeSCCons[dee][71-1] = 68; //  3;
      
      fT2d_DeeSCCons[dee-1][88-1] = 242; fT2d_DeeSCCons[dee][88-1] = 93; // 25;
      fT2d_DeeSCCons[dee-1][89-1] = 234; fT2d_DeeSCCons[dee][89-1] = 85; // 19;
      fT2d_DeeSCCons[dee-1][90-1] = 226; fT2d_DeeSCCons[dee][90-1] = 77; // 12;
      fT2d_DeeSCCons[dee-1][91-1] = 218; fT2d_DeeSCCons[dee][91-1] = 69; //  4;
      
      fT2d_DeeSCCons[dee-1][108-1] = 243; fT2d_DeeSCCons[dee][108-1] = 94; // 26;
      fT2d_DeeSCCons[dee-1][109-1] = 235; fT2d_DeeSCCons[dee][109-1] = 86; // 20;
      fT2d_DeeSCCons[dee-1][110-1] = 227; fT2d_DeeSCCons[dee][110-1] = 78; // 13;
      fT2d_DeeSCCons[dee-1][111-1] = 219; fT2d_DeeSCCons[dee][111-1] = 70; //  5;
      
      fT2d_DeeSCCons[dee-1][127-1] = 252; fT2d_DeeSCCons[dee][127-1] = 103; // 31;
      fT2d_DeeSCCons[dee-1][128-1] = 244; fT2d_DeeSCCons[dee][128-1] =  95; // 27;
      fT2d_DeeSCCons[dee-1][129-1] = 236; fT2d_DeeSCCons[dee][129-1] =  87; // 21;
      fT2d_DeeSCCons[dee-1][130-1] = 228; fT2d_DeeSCCons[dee][130-1] =  79; // 14;
      fT2d_DeeSCCons[dee-1][131-1] = 220; fT2d_DeeSCCons[dee][131-1] =  71; //  6;
      
      fT2d_DeeSCCons[dee-1][147-1] = 253; fT2d_DeeSCCons[dee][147-1] = 104; // 32;
      fT2d_DeeSCCons[dee-1][148-1] = 245; fT2d_DeeSCCons[dee][148-1] =  96; // 28;
      fT2d_DeeSCCons[dee-1][149-1] = 237; fT2d_DeeSCCons[dee][149-1] =  88; // 22;
      fT2d_DeeSCCons[dee-1][150-1] = 229; fT2d_DeeSCCons[dee][150-1] =  80; // 15;
      fT2d_DeeSCCons[dee-1][151-1] = 221; fT2d_DeeSCCons[dee][151-1] =  72; //  7;
      
      fT2d_DeeSCCons[dee-1][166-1] = 254; fT2d_DeeSCCons[dee][166-1] = 105; // 33;
      fT2d_DeeSCCons[dee-1][167-1] = 247; fT2d_DeeSCCons[dee][167-1] =  98; // 30;
      fT2d_DeeSCCons[dee-1][168-1] = 246; fT2d_DeeSCCons[dee][168-1] =  97; // 29;
      fT2d_DeeSCCons[dee-1][169-1] = 238; fT2d_DeeSCCons[dee][169-1] =  89; // 23;
      fT2d_DeeSCCons[dee-1][170-1] = 230; fT2d_DeeSCCons[dee][170-1] =  81; // 16;
      fT2d_DeeSCCons[dee-1][171-1] = 222; fT2d_DeeSCCons[dee][171-1] =  73; //  8;
      fT2d_DeeSCCons[dee-1][172-1] = 214; fT2d_DeeSCCons[dee][172-1] =  65; //  1;
      
      fT2d_DeeSCCons[dee-1][188-1] = 298; fT2d_DeeSCCons[dee][188-1] = 149; // 24; //  298a ;  149a;
      fT2d_DeeSCCons[dee-1][189-1] = 239; fT2d_DeeSCCons[dee][189-1] =  90; // 24;
      fT2d_DeeSCCons[dee-1][190-1] = 231; fT2d_DeeSCCons[dee][190-1] =  82; // 17;
      fT2d_DeeSCCons[dee-1][191-1] = 223; fT2d_DeeSCCons[dee][191-1] =  74; //  9;
      fT2d_DeeSCCons[dee-1][192-1] = 215; fT2d_DeeSCCons[dee][192-1] =  66; //  2;
  
      //.......................................... (D1,S4 or D3,S6) AND  (D2,S6 or D4,S4)
      fT2d_DeeSCCons[dee-1][29-1] = 261; fT2d_DeeSCCons[dee][29-1] = 112; // 14-21;   // 261a-268a ; 112a-119a;
      fT2d_DeeSCCons[dee-1][27-1] = 283; fT2d_DeeSCCons[dee][27-1] = 134; // 33;
      fT2d_DeeSCCons[dee-1][28-1] = 282; fT2d_DeeSCCons[dee][28-1] = 133; // 32;
      
      fT2d_DeeSCCons[dee-1][44-1] = 269; fT2d_DeeSCCons[dee][44-1] = 120; // 22;
      fT2d_DeeSCCons[dee-1][45-1] = 262; fT2d_DeeSCCons[dee][45-1] = 113; // 15;
      fT2d_DeeSCCons[dee-1][46-1] = 255; fT2d_DeeSCCons[dee][46-1] = 106; //  8;
      fT2d_DeeSCCons[dee-1][47-1] = 248; fT2d_DeeSCCons[dee][47-1] =  99; //  4;
      fT2d_DeeSCCons[dee-1][48-1] = 240; fT2d_DeeSCCons[dee][48-1] =  91; //  2;
      fT2d_DeeSCCons[dee-1][49-1] = 232; fT2d_DeeSCCons[dee][49-1] =  83; //  1;
      
      fT2d_DeeSCCons[dee-1][62-1] = 276; fT2d_DeeSCCons[dee][62-1] = 127; // 29;
      fT2d_DeeSCCons[dee-1][63-1] = 275; fT2d_DeeSCCons[dee][63-1] = 126; // 28;
      fT2d_DeeSCCons[dee-1][64-1] = 270; fT2d_DeeSCCons[dee][64-1] = 121; // 23;
      fT2d_DeeSCCons[dee-1][65-1] = 263; fT2d_DeeSCCons[dee][65-1] = 114; // 16;
      fT2d_DeeSCCons[dee-1][66-1] = 256; fT2d_DeeSCCons[dee][66-1] = 107; //  9;
      fT2d_DeeSCCons[dee-1][67-1] = 249; fT2d_DeeSCCons[dee][67-1] = 100; //  5;
      fT2d_DeeSCCons[dee-1][68-1] = 241; fT2d_DeeSCCons[dee][68-1] =  92; //  3;
      
      fT2d_DeeSCCons[dee-1][82-1] = 278; fT2d_DeeSCCons[dee][82-1] = 129; // 31;
      fT2d_DeeSCCons[dee-1][83-1] = 277; fT2d_DeeSCCons[dee][83-1] = 128; // 30;
      fT2d_DeeSCCons[dee-1][84-1] = 271; fT2d_DeeSCCons[dee][84-1] = 122; // 24;
      fT2d_DeeSCCons[dee-1][85-1] = 264; fT2d_DeeSCCons[dee][85-1] = 115; // 17;
      fT2d_DeeSCCons[dee-1][86-1] = 257; fT2d_DeeSCCons[dee][86-1] = 108; // 10;
      fT2d_DeeSCCons[dee-1][87-1] = 250; fT2d_DeeSCCons[dee][87-1] = 101; //  6;
      
      fT2d_DeeSCCons[dee-1][102-1] = 268; fT2d_DeeSCCons[dee][102-1] = 119; // 21; //  268c ;  119c;
      fT2d_DeeSCCons[dee-1][103-1] = 274; fT2d_DeeSCCons[dee][103-1] = 125; // 27;
      fT2d_DeeSCCons[dee-1][104-1] = 272; fT2d_DeeSCCons[dee][104-1] = 123; // 25;
      fT2d_DeeSCCons[dee-1][105-1] = 265; fT2d_DeeSCCons[dee][105-1] = 116; // 18;
      fT2d_DeeSCCons[dee-1][106-1] = 258; fT2d_DeeSCCons[dee][106-1] = 109; // 11;
      fT2d_DeeSCCons[dee-1][107-1] = 251; fT2d_DeeSCCons[dee][107-1] = 102; //  7;
      
      fT2d_DeeSCCons[dee-1][123-1] = 268; fT2d_DeeSCCons[dee][123-1] = 119; // 27; //  268b ;  119b;
      fT2d_DeeSCCons[dee-1][124-1] = 273; fT2d_DeeSCCons[dee][124-1] = 124; // 26;
      fT2d_DeeSCCons[dee-1][125-1] = 266; fT2d_DeeSCCons[dee][125-1] = 117; // 19;
      fT2d_DeeSCCons[dee-1][126-1] = 259; fT2d_DeeSCCons[dee][126-1] = 110; // 12;

      fT2d_DeeSCCons[dee-1][144-1] = 261; fT2d_DeeSCCons[dee][144-1] = 112; // 27; //  261c ;  112c;      
      fT2d_DeeSCCons[dee-1][145-1] = 267; fT2d_DeeSCCons[dee][145-1] = 118; // 20;
      fT2d_DeeSCCons[dee-1][146-1] = 260; fT2d_DeeSCCons[dee][146-1] = 111; // 13;

      fT2d_DeeSCCons[dee-1][165-1] = 261; fT2d_DeeSCCons[dee][165-1] = 112; // 27; //  261b ;  112b;
      
      //.......................................... D1 or D3, right half of S5 
      fT2d_DeeSCCons[dee-1][1-1] = 297; // 34;
      fT2d_DeeSCCons[dee-1][2-1] = 296; // 33;
      fT2d_DeeSCCons[dee-1][3-1] = 295; // 32;
      fT2d_DeeSCCons[dee-1][4-1] = 294; // 31;
      fT2d_DeeSCCons[dee-1][5-1] = 289; // 26;
      fT2d_DeeSCCons[dee-1][6-1] = 288; // 25;
      fT2d_DeeSCCons[dee-1][7-1] = 287; // 24;
      fT2d_DeeSCCons[dee-1][8-1] = 286; // 23;
      
      fT2d_DeeSCCons[dee-1][21-1] = 293; // 30;
      fT2d_DeeSCCons[dee-1][22-1] = 292; // 29;
      fT2d_DeeSCCons[dee-1][23-1] = 291; // 28;
      fT2d_DeeSCCons[dee-1][24-1] = 290; // 27;
      fT2d_DeeSCCons[dee-1][25-1] = 285; // 22;
      fT2d_DeeSCCons[dee-1][26-1] = 284; // 21;
      
      fT2d_DeeSCCons[dee-1][41-1] = 281; // 20; //  281a
      fT2d_DeeSCCons[dee-1][42-1] = 280; // 19;
      fT2d_DeeSCCons[dee-1][43-1] = 279; // 18;
      
      //.......................................... D2 or D4, left half of S5
      fT2d_DeeSCCons[dee][1-1] = 148; // 17;
      fT2d_DeeSCCons[dee][2-1] = 147; // 16;
      fT2d_DeeSCCons[dee][3-1] = 146; // 15;
      fT2d_DeeSCCons[dee][4-1] = 145; // 14;
      fT2d_DeeSCCons[dee][5-1] = 140; //  9;
      fT2d_DeeSCCons[dee][6-1] = 139; //  8;
      fT2d_DeeSCCons[dee][7-1] = 138; //  7;
      fT2d_DeeSCCons[dee][8-1] = 137; //  6;
      
      fT2d_DeeSCCons[dee][21-1] = 144; // 13;
      fT2d_DeeSCCons[dee][22-1] = 143; // 12;
      fT2d_DeeSCCons[dee][23-1] = 142; // 11;
      fT2d_DeeSCCons[dee][24-1] = 141; // 10;
      fT2d_DeeSCCons[dee][25-1] = 136; //  5;
      fT2d_DeeSCCons[dee][26-1] = 135; //  4;
     
      fT2d_DeeSCCons[dee][41-1] = 132; // 3; //  132a
      fT2d_DeeSCCons[dee][42-1] = 131; // 2;
      fT2d_DeeSCCons[dee][43-1] = 130; // 1;
    }

  //........................ ECNA numbers from numbers for constructions: fT2d_RecovDeeSC[][]

  for(Int_t i0EEDee=0; i0EEDee<MaxEEDee; i0EEDee++)
    {
      for(Int_t i_ecna=0; i_ecna<MaxDeeSC; i_ecna++)
        {
          //....... test to avoid the -1 init value in 2nd index of array fT2d_RecovDeeSC[][]
          //        (part of the matrix without real SC counterpart)
          if( fT2d_DeeSCCons[i0EEDee][i_ecna] >= 0 && fT2d_DeeSCCons[i0EEDee][i_ecna] <= MaxEESCForCons )
            {
              fT2d_RecovDeeSC[i0EEDee][fT2d_DeeSCCons[i0EEDee][i_ecna]-1] = i_ecna+1;
            }
        }
    }
}
Int_t TEcnaNumbering::Get0SMEchaFrom1SMTowAnd0TowEcha ( const Int_t &  n1SMTow,
const Int_t &  i0TowEcha 
)

Definition at line 447 of file TEcnaNumbering.cc.

References fEcal, and TEcnaParEcal::MaxCrysInTow().

Referenced by TEcnaHistos::TowerCrystalNumbering().

{
//get tower number from electronic channel number in SM

  Int_t i0SMEcha = (n1SMTow-1)*fEcal->MaxCrysInTow()+i0TowEcha;

  return i0SMEcha;
}
Int_t TEcnaNumbering::Get0StexEchaFrom1StexStinAnd0StinEcha ( const Int_t &  n1StexStin,
const Int_t &  i0StinEcha 
)

Definition at line 2463 of file TEcnaNumbering.cc.

References gather_cfg::cout, fEcal, fTTBELL, and TEcnaParEcal::MaxCrysInStin().

Referenced by TEcnaRun::AverageHighFrequencyNoise(), TEcnaRun::AverageLowFrequencyNoise(), TEcnaRun::AverageMeanCorrelationsBetweenSamples(), TEcnaRun::AveragePedestals(), TEcnaRun::AverageSigmaOfCorrelationsBetweenSamples(), TEcnaRun::AverageTotalNoise(), TEcnaRead::ReadAverageNumberOfEvents(), TEcnaRead::ReadCorrelationsBetweenSamples(), TEcnaRead::ReadCovariancesBetweenSamples(), TEcnaRead::ReadNumberOfEvents(), TEcnaRead::ReadRelevantCorrelationsBetweenSamples(), TEcnaRead::ReadSampleAdcValues(), TEcnaRead::ReadSampleMeans(), TEcnaRead::ReadSampleSigmas(), and TEcnaHistos::ViewHistime().

{
// Electronic Channel number in Stex from Stin number in Stex
// and from Electronic Channel number in Stin

  Int_t StexEcha = (Int_t)(-1.);
                    
  if ( n1StexStin >  0 && n1StexStin <= fEcal->MaxStinEcnaInStex() &&
       i0StinEcha >= 0 && i0StinEcha < fEcal->MaxCrysInStin()  )
    {StexEcha = (n1StexStin-1)*fEcal->MaxCrysInStin() + i0StinEcha;}
  else
    {
      cout << "!TEcnaNumbering::Get0StexEchaFrom1StexStinAnd0StinEcha *** ERROR ***> VALUE"
           << " OUT OF RANGE. Forced to -1. Argument values: n1StexStin = " << n1StexStin
           << ", channel = " << i0StinEcha
           << fTTBELL << endl;
    }
  return StexEcha;
}
Int_t TEcnaNumbering::Get0TowEchaFrom0SMEcha ( const Int_t &  i0SMEcha)

Definition at line 428 of file TEcnaNumbering.cc.

References fEcal, and TEcnaParEcal::MaxCrysInTow().

Referenced by TEcnaWrite::fT2dWriteAscii(), and TEcnaWrite::WriteAsciiHisto().

{
//get electronic channel number in tower from electronic channel number in SM

  Int_t n1SMTow = i0SMEcha/fEcal->MaxCrysInTow()+1;
  Int_t i0TowEcha = i0SMEcha - fEcal->MaxCrysInTow()*(n1SMTow-1);

  return i0TowEcha;   // range = [0,24]
}
Int_t TEcnaNumbering::Get0TowEchaFrom1SMCrys ( const Int_t &  n1SMCrys)

Definition at line 383 of file TEcnaNumbering.cc.

References gather_cfg::cout, fT1dTowEcha, and fTTBELL.

Referenced by EcnaAnalyzer::analyze().

{
// get Electronic Channel number in Tower from Crystal number in SuperModule

  Int_t i0TowEcha = -1;

  if( n1SMCrys >= 1 && n1SMCrys <= fEcal->MaxCrysInSM() )
    {
      i0TowEcha = fT1dTowEcha[n1SMCrys-1];
    }
  else
    {
      i0TowEcha = -2;
      cout << "!TEcnaNumbering::Get0TowEchaFrom1SMCrys(...)> Crystal number in SM out of range."
           << " n1SMCrys = " << n1SMCrys << fTTBELL << endl;
    }
  return i0TowEcha;   // range = [0,24]
}
Int_t TEcnaNumbering::Get1DeeCrysFrom1DeeSCEcnaAnd0SCEcha ( const Int_t &  n1DeeSCEcna,
const Int_t &  i0SCEcha,
const TString  sDeeDir 
)

Definition at line 1791 of file TEcnaNumbering.cc.

References BuildEndcapCrysTable(), gather_cfg::cout, fEcal, fT3dDeeCrys, fTTBELL, GetDeeDirIndex(), and TEcnaParEcal::MaxCrysInSC().

Referenced by Get1StexCrysFrom1StexStinAnd0StinEcha().

{
//get crystal number in Dee from SC number in Dee
// and from Electronic Channel number in super-crystal

  Int_t n1DeeCrys = 0;
  Int_t i0DeeDir = GetDeeDirIndex(sDeeDir);

  if( fT3dDeeCrys == 0 ){BuildEndcapCrysTable();}

  if( (n1DeeSCEcna >= 1) && (n1DeeSCEcna <= fEcal->MaxSCEcnaInDee()) )
    {
      if (i0SCEcha >=0 && i0SCEcha < fEcal->MaxCrysInSC())
        {
          n1DeeCrys = fT3dDeeCrys[n1DeeSCEcna-1][i0SCEcha][i0DeeDir];
        }
      else
        {
          n1DeeCrys = -2;   // Electronic Cnannel in Super-Crystal out of range
          cout << "!TEcnaNumbering::Get1DeeCrysFrom1DeeSCEcnaAnd0SCEcha(...)> Electronic Channel in SuperCrystal = "
               << i0SCEcha+1 << ". Out of range (range = [1," << fEcal->MaxCrysInSC() << "])" << fTTBELL << endl;
        }
    }
  else
    {
      n1DeeCrys = -3;   // Super-Crystal number in Dee out of range
      cout << "!TEcnaNumbering::Get1DeeCrysFrom1DeeSCEcnaAnd0SCEcha(...)> Super-Crystal number in Dee out of range."
           << " n1DeeSCEcna = " << n1DeeSCEcna << fTTBELL << endl;
    }

  return n1DeeCrys;  // Range = [1,5000]
}
Int_t TEcnaNumbering::Get1DeeSCEcnaFrom0DeeEcha ( const Int_t &  i0DeeEcha)

Definition at line 1889 of file TEcnaNumbering.cc.

References fEcal, and TEcnaParEcal::MaxCrysInSC().

Referenced by Get1StexStinFrom0StexEcha(), and TEcnaWrite::WriteAsciiHisto().

{
//get super-crystal number from electronic channel number in Dee

  Int_t n1DeeSC = i0DeeEcha/fEcal->MaxCrysInSC()+1;

  return n1DeeSC;  //  range = [1,200]
}
Int_t TEcnaNumbering::Get1DeeSCEcnaFrom1DeeCrys ( const Int_t &  n1DeeCrys,
const TString  sDeeDir 
)

Definition at line 1852 of file TEcnaNumbering.cc.

References gather_cfg::cout, fEcal, fT2dDeeSC, fTTBELL, GetDeeDirIndex(), and TEcnaParEcal::MaxCrysEcnaInDee().

Referenced by EcnaAnalyzer::analyze().

{
// get Super-Crystal number in Dee from Crystal number in Dee

  Int_t n1DeeSCEcna = 0;
  Int_t iDeeDir    = GetDeeDirIndex(sDeeDir);
  
  if( n1DeeCrys >= 1 && n1DeeCrys <= fEcal->MaxCrysEcnaInDee() )
    {
      n1DeeSCEcna = fT2dDeeSC[n1DeeCrys-1][iDeeDir];
    }
  else
    {
      n1DeeSCEcna = -1;
      cout << "!TEcnaNumbering::Get1DeeSCEcnaFrom1DeeCrys(...)> Crystal number in Dee out of range."
           << " n1DeeCrys = " << n1DeeCrys << "(max = " << fEcal->MaxCrysEcnaInDee() << ")" << fTTBELL << endl;
    }
  return n1DeeSCEcna;  // range = [1,200]
}
Int_t TEcnaNumbering::Get1DeeSCEcnaFromDeeSCCons ( const Int_t &  n1DeeNumber,
const Int_t &  DeeSCCons 
)

Definition at line 2066 of file TEcnaNumbering.cc.

References gather_cfg::cout, fEcal, fT2d_RecovDeeSC, fTTBELL, TEcnaParEcal::MaxDeeInEE(), and TEcnaParEcal::MaxSCForConsInDee().

Referenced by TEcnaGui::DoButtonStinA(), TEcnaGui::DoButtonStinB(), TEcnaHistos::EvSamplesXtals(), TEcnaGui::InitKeys(), TEcnaHistos::PlotMatrix(), TEcnaHistos::SCCrystalNumbering(), TEcnaHistos::SigmaSamplesXtals(), TEcnaHistos::ViewStin(), TEcnaHistos::XtalSamplesEv(), and TEcnaHistos::XtalSamplesSigma().

{
// Get SC Ecna number in Dee from SC number for Construction in Dee
 
  Int_t dee_sc_ecna = -1;

  if( n1DeeNumber > 0 && n1DeeNumber <= fEcal->MaxDeeInEE() )
    {
      Int_t off_set_cons = 0;
      if( n1DeeNumber == 1 || n1DeeNumber == 3 ){off_set_cons = fEcal->MaxSCForConsInDee();}
      
      if( DeeSCCons > off_set_cons  &&  DeeSCCons <= fEcal->MaxSCForConsInDee()+off_set_cons )
        {
          dee_sc_ecna = fT2d_RecovDeeSC[n1DeeNumber-1][DeeSCCons-1];
        }
      else
        {
          cout << "!TEcnaNumbering::Get1DeeSCEcnaFromDeeSCCons(...)> DeeSCCons = " << DeeSCCons
               << ". Out of range ( range = [ " << off_set_cons+1
               << "," << fEcal->MaxSCForConsInDee()+off_set_cons << "] )"
               << fTTBELL << endl;
        }
    }
  else
    {
      if( n1DeeNumber != 0 )
        {
          cout << "!TEcnaNumbering::Get1DeeSCEcnaFromDeeSCCons(...)> n1DeeNumber = " << n1DeeNumber 
               << ". Out of range ( range = [1," << fEcal->MaxDeeInEE() << "] )"
               << fTTBELL << endl;
        }
      else
        {
          cout << "TEcnaNumbering::Get1DeeSCEcnaFromDeeSCCons(...)> Dee = " << n1DeeNumber
               << ". Out of range (range = [1," << fEcal->MaxDeeInEE() << "])" 
               << fTTBELL << endl;
        }
    }
  return dee_sc_ecna;
}
Int_t TEcnaNumbering::Get1SCEchaFrom0DeeEcha ( const Int_t &  i0DeeEcha)

Definition at line 1879 of file TEcnaNumbering.cc.

References fEcal, and TEcnaParEcal::MaxCrysInSC().

Referenced by TEcnaWrite::fT2dWriteAscii(), TEcnaHistos::ViewHisto(), and TEcnaWrite::WriteAsciiHisto().

{
//get electronic channel number in super-crystal from electronic channel number in Dee

  Int_t i0DeeSC = i0DeeEcha/fEcal->MaxCrysInSC();
  Int_t n1SCEcha = i0DeeEcha - fEcal->MaxCrysInSC()*i0DeeSC + 1;

  return n1SCEcha;  //  range = [1,25]
}
Int_t TEcnaNumbering::Get1SCEchaFrom1DeeCrys ( const Int_t &  n1DeeCrys,
const TString  sDeeDir 
)

Definition at line 1832 of file TEcnaNumbering.cc.

References gather_cfg::cout, fEcal, fT2dSCEcha, fTTBELL, GetDeeDirIndex(), and TEcnaParEcal::MaxCrysEcnaInDee().

Referenced by EcnaAnalyzer::analyze().

{
// get Electronic Channel number in Super-Crystal from Crystal ECNA number in Dee

  Int_t n1SCEcha = -1;
  Int_t iDeeDir  = GetDeeDirIndex(sDeeDir);

  if( n1DeeCrys >= 1 && n1DeeCrys <= fEcal->MaxCrysEcnaInDee() )
    {
      n1SCEcha = fT2dSCEcha[n1DeeCrys-1][iDeeDir];
    }
  else
    {
      n1SCEcha = -2;
      cout << "!TEcnaNumbering::Get1SCEchaFrom1DeeCrys(...)> Crystal number in Dee out of range."
           << " n1DeeCrys = " << n1DeeCrys << "(max = " << fEcal->MaxCrysEcnaInDee() << ")" << fTTBELL << endl;
    }
  return n1SCEcha;   // range = [1,25]
}
Int_t TEcnaNumbering::Get1SMCrysFrom1SMTowAnd0TowEcha ( const Int_t &  n1SMTow,
const Int_t &  i0TowEcha 
)

Definition at line 344 of file TEcnaNumbering.cc.

References BuildBarrelCrysTable(), gather_cfg::cout, fT2dSMCrys, and fTTBELL.

Referenced by Get1StexCrysFrom1StexStinAnd0StinEcha(), TEcnaHistos::TowerCrystalNumbering(), and TEcnaWrite::WriteAsciiHisto().

{
//get crystal number in SM from tower number in SM
// and from Electronic Channel number in tower

  Int_t n1SMCrys = 0;

  if( fT2dSMCrys == 0 ){BuildBarrelCrysTable();}
  
  if (n1SMTow >= 1 && n1SMTow <= fEcal->MaxTowInSM())
    {
      if (i0TowEcha >=0 && i0TowEcha < fEcal->MaxCrysInTow())
        {
          n1SMCrys = fT2dSMCrys[n1SMTow-1][i0TowEcha];
        }
      else
        {
          n1SMCrys = -2;   // Electronic Cnannel in Tower out of range 
          cout << "!TEcnaNumbering::Get1SMCrysFrom1SMTowAnd0TowEcha(...)> Electronic Channel in Tower out of range."
               << " i0TowEcha = " << i0TowEcha << "(n1SMTow = " << n1SMTow << ")" << fTTBELL << endl;
        }
    }
  else
    {
      n1SMCrys = -3;   // Tower number in SM out of range
      cout << "!TEcnaNumbering::Get1SMCrysFrom1SMTowAnd0TowEcha(...)> Tower number in SM out of range."
           << " n1SMTow = " << n1SMTow << "(i0TowEcha = " << i0TowEcha << ")" << fTTBELL << endl;
    }

  return n1SMCrys;   // Range = [1,1700]
}
Int_t TEcnaNumbering::Get1SMTowFrom0SMEcha ( const Int_t &  i0SMEcha)

Definition at line 438 of file TEcnaNumbering.cc.

References fEcal, and TEcnaParEcal::MaxCrysInTow().

Referenced by Get1StexStinFrom0StexEcha(), and TEcnaWrite::WriteAsciiHisto().

{
//get tower number from electronic channel number in SM

  Int_t n1SMTow = i0SMEcha/fEcal->MaxCrysInTow()+1;

  return n1SMTow;  // range = [1,68]
}
Int_t TEcnaNumbering::Get1SMTowFrom1SMCrys ( const Int_t &  n1SMCrys)

Definition at line 402 of file TEcnaNumbering.cc.

References gather_cfg::cout, fT1dSMTow, and fTTBELL.

Referenced by EcnaAnalyzer::analyze().

{
// get Tower number in SM (range [1,68]) from Crystal number in SuperModule (range [1,1700])

  Int_t n1SMtox = 0;
  
  if( n1SMCrys >= 1 && n1SMCrys <= fEcal->MaxCrysInSM() )
    {
      n1SMtox = fT1dSMTow[n1SMCrys-1];
    }
  else
    {
      n1SMtox = -1;
      cout << "!TEcnaNumbering::Get1SMTowFrom1SMCrys(...)> Crystal number in SM out of range."
           << " n1SMCrys = " << n1SMCrys << fTTBELL << endl;
    }
  return n1SMtox;   // range = [1,68]
}
Int_t TEcnaNumbering::Get1StexCrysFrom1StexStinAnd0StinEcha ( const Int_t &  n1StexStin,
const Int_t &  i0StinEcha,
const Int_t &  StexNumber 
)

Definition at line 2483 of file TEcnaNumbering.cc.

References fFlagSubDet, Get1DeeCrysFrom1DeeSCEcnaAnd0SCEcha(), Get1SMCrysFrom1SMTowAnd0TowEcha(), and GetDeeDirViewedFromIP().

Referenced by TEcnaHistos::GetXCrysInStex(), TEcnaHistos::GetYCrysInStex(), TEcnaHistos::HistimePlot(), TEcnaHistos::HistoPlot(), TEcnaHistos::SetAllPavesViewHisto(), and TEcnaHistos::SetAllPavesViewMatrix().

{
// Crystal number in Stex from Stin number in Stex
// and from Electronic Channel number in Stin (for the StexNumber_th Stex)
// argument StexNumber used only in "EE" case

  Int_t n1StexCrys = (Int_t)0;
  if( fFlagSubDet ==  "EB" ){n1StexCrys = Get1SMCrysFrom1SMTowAnd0TowEcha(n1StexStin, i0StinEcha);}
  if( fFlagSubDet ==  "EE" ){TString sDeeDir = GetDeeDirViewedFromIP(StexNumber);
  n1StexCrys = Get1DeeCrysFrom1DeeSCEcnaAnd0SCEcha(n1StexStin, i0StinEcha, sDeeDir);}
  
  return n1StexCrys;
}
Int_t TEcnaNumbering::Get1StexStinFrom0StexEcha ( const Int_t &  i0StexEcha)

Definition at line 2453 of file TEcnaNumbering.cc.

References fFlagSubDet, Get1DeeSCEcnaFrom0DeeEcha(), and Get1SMTowFrom0SMEcha().

Referenced by StexEchaForCons().

{
  Int_t n1StexStin = 0;

  if( fFlagSubDet == "EB" ){n1StexStin = Get1SMTowFrom0SMEcha(i0StexEcha);}
  if( fFlagSubDet == "EE" ){n1StexStin = Get1DeeSCEcnaFrom0DeeEcha(i0StexEcha);}

  return n1StexStin;
}
Int_t TEcnaNumbering::GetDeeDirIndex ( const TString  sDeeDir)

Definition at line 2213 of file TEcnaNumbering.cc.

Referenced by Get1DeeCrysFrom1DeeSCEcnaAnd0SCEcha(), Get1DeeSCEcnaFrom1DeeCrys(), and Get1SCEchaFrom1DeeCrys().

{
//gives the index of the direction (left,right) of the IX axis of the Dee
// looking from the interaction point (right = 0, left = 1)

  Int_t iDeeDir = 0;   // => default
  if ( sDeeDir == "right" ){iDeeDir = 0;}
  if ( sDeeDir == "left"  ){iDeeDir = 1;}
  return iDeeDir;
}
TString TEcnaNumbering::GetDeeDirViewedFromIP ( const Int_t &  n1DeeNumber)

Definition at line 2203 of file TEcnaNumbering.cc.

Referenced by EcnaAnalyzer::analyze(), TEcnaWrite::fT2dWriteAscii(), Get1StexCrysFrom1StexStinAnd0StinEcha(), GetIXCrysInSC(), GetJYCrysInSC(), TEcnaHistos::GetXCrysInStex(), TEcnaHistos::GetXSampInStin(), TEcnaHistos::GetXStinInStas(), TEcnaHistos::ModifiedSCEchaForNotConnectedSCs(), TEcnaHistos::SCCrystalNumbering(), TEcnaHistos::SetAllPavesViewMatrix(), TEcnaHistos::ViewDeeSCNumberingPad(), and TEcnaHistos::ViewHisto().

{
//gives the direction (left/right) of the IX axis of the Dee
// looking from the interaction point

  TString sDeeDir = "right";   // => default
  if ( (n1DeeNumber == 1) || (n1DeeNumber == 3) ){sDeeDir = "right";}
  if ( (n1DeeNumber == 2) || (n1DeeNumber == 4) ){sDeeDir = "left" ;}
  return sDeeDir;
}
TString TEcnaNumbering::GetDeeHalfEndcap ( const Int_t &  n1DeeNumber)

Definition at line 2392 of file TEcnaNumbering.cc.

Referenced by GetStexHalfStas().

{
//gives the half-endcap of the Dee ("EE+" or "EE-")

  TString type = "EE-";   // => default value

  if ( n1DeeNumber == 1 || n1DeeNumber == 2 ){type = "EE+";}
  if ( n1DeeNumber == 3 || n1DeeNumber == 4 ){type = "EE-";}

  return type;
}
Int_t TEcnaNumbering::GetDeeSCConsFrom1DeeSCEcna ( const Int_t &  n1DeeNumber,
const Int_t &  n1DeeSCEcna 
)

Definition at line 2005 of file TEcnaNumbering.cc.

References gather_cfg::cout, fEcal, fT2d_DeeSCCons, fTTBELL, TEcnaParEcal::MaxDeeInEE(), and TEcnaParEcal::MaxSCEcnaInDee().

Referenced by TEcnaGui::DialogBox(), TEcnaGui::DoButtonStex(), GetDeeSCConsFrom1DeeSCEcna(), TEcnaHistos::GetOkViewHisto(), TEcnaGui::HandleMenu(), TEcnaHistos::HistimePlot(), TEcnaHistos::HistoPlot(), MaxCrysInStinEcna(), TEcnaParHistos::SetPaveSC(), TEcnaHistos::ViewDeeSCNumberingPad(), TEcnaHistos::ViewMatrix(), TEcnaHistos::ViewStin(), TEcnaGui::ViewStinCrystalNumbering(), TEcnaWrite::WriteAsciiCorrelationsBetweenSamples(), TEcnaWrite::WriteAsciiCovariancesBetweenSamples(), and TEcnaWrite::WriteAsciiHisto().

{
// Get SC number for Construction in Dee from SC ECNA number in Dee

  Int_t dee_sc_cons = -1;

  if( n1DeeNumber > 0 && n1DeeNumber <= fEcal->MaxDeeInEE() )
    {
      if( n1DeeSCEcna > 0  &&  n1DeeSCEcna <= fEcal->MaxSCEcnaInDee() )
        {
          dee_sc_cons = fT2d_DeeSCCons[n1DeeNumber-1][n1DeeSCEcna-1];
        }
      else
        {
          cout << "!TEcnaNumbering::GetDeeSCConsFrom1DeeSCEcna(...)> *** WARNING *** n1DeeSCEcna = " << n1DeeSCEcna
               << ". Out of range ( range = [1," << fEcal->MaxSCEcnaInDee()
               << "] ). Nb for const. forced to " << fT2d_DeeSCCons[n1DeeNumber-1][19] << "." << endl;
          dee_sc_cons = fT2d_DeeSCCons[n1DeeNumber-1][19];
        }
    }
  else
    {
      if( n1DeeNumber != 0 )
        {
          cout << "!TEcnaNumbering::GetDeeSCConsFrom1DeeSCEcna(...)> n1DeeNumber = " << n1DeeNumber 
               << ". Out of range ( range = [1," << fEcal->MaxDeeInEE() << "] )"
               << fTTBELL << endl;
        }
      else
        {
          cout << "TEcnaNumbering::GetDeeSCConsFrom1DeeSCEcna(...)> Dee = " << n1DeeNumber
               << ". Out of range (range = [1," << fEcal->MaxDeeInEE() << "])" 
               << fTTBELL << endl;
        }
    }
  return dee_sc_cons;
}
Int_t TEcnaNumbering::GetDeeSCConsFrom1DeeSCEcna ( const Int_t &  n1DeeNumber,
const Int_t &  n1DeeSCEcna,
const Int_t &  n1SCEcha 
)

Definition at line 2043 of file TEcnaNumbering.cc.

References GetDeeSCConsFrom1DeeSCEcna().

{
  //.......... Get the correct SC number (for cons) for the unconnected SC's (inner border)
  Int_t dee_sc_cons = GetDeeSCConsFrom1DeeSCEcna(n1DeeNumber, n1DeeSCEcna);

  if( n1DeeSCEcna == 29 || n1DeeSCEcna == 32 )
    {
      if( n1SCEcha == 11 )
        {
          if( dee_sc_cons == 261 ){dee_sc_cons = 268;}  // 261<=>14/BR
          if( dee_sc_cons == 112 ){dee_sc_cons = 119;}  // 112<=>14/BL
        }
      if( n1SCEcha == 1 ||  n1SCEcha == 2 || n1SCEcha == 3 ||
          n1SCEcha == 6 ||  n1SCEcha == 7 )
        {
          if( dee_sc_cons == 178 ){dee_sc_cons = 207;}  // 178<=>3/TR
          if( dee_sc_cons ==  29 ){dee_sc_cons =  58;}  //  29<=>3/TL
        }
    }
  return dee_sc_cons;
}
Int_t TEcnaNumbering::GetDSFrom1DeeSCEcna ( const Int_t &  n1DeeNumber,
const Int_t &  n1DeeSCEcna 
)

Definition at line 1909 of file TEcnaNumbering.cc.

References gather_cfg::cout, fEcal, fT2d_DS, fTTBELL, TEcnaParEcal::MaxDeeInEE(), and TEcnaParEcal::MaxSCEcnaInDee().

Referenced by TEcnaParHistos::SetPaveSC(), TEcnaHistos::ViewHisto(), and TEcnaWrite::WriteAsciiHisto().

{
// Get Data Sector number from SC ECNA number in Dee 

  Int_t data_sector = -1;

  if( n1DeeNumber > 0 && n1DeeNumber <= fEcal->MaxDeeInEE() )
    {
      if( n1DeeSCEcna > 0  &&  n1DeeSCEcna <= fEcal->MaxSCEcnaInDee() )
        {
          data_sector = fT2d_DS[n1DeeNumber-1][n1DeeSCEcna-1];
        }
      else
        {
          cout << "!TEcnaNumbering::GetDSFrom1DeeSCEcna(...)> n1DeeSCEcna = " << n1DeeSCEcna
               << ". Out of range ( range = [1," << fEcal->MaxSCEcnaInDee() << "] )"
               << fTTBELL << endl;
        }
    }
  else
    {
      if( n1DeeNumber != 0 )
        {
          cout << "!TEcnaNumbering::GetDSFrom1DeeSCEcna(...)> n1DeeNumber = " << n1DeeNumber 
               << ". Out of range ( range = [1," << fEcal->MaxDeeInEE() << "] )"
               << fTTBELL << endl;
        }
      else
        {
          cout << "TEcnaNumbering::GetDSFrom1DeeSCEcna(...)> Dee = " << n1DeeNumber
               << ". Out of range (range = [1," << fEcal->MaxDeeInEE() << "])" 
               << fTTBELL << endl; 
        }
    }
  return data_sector;
}
Int_t TEcnaNumbering::GetDSFromFED ( const Int_t &  FEDNumber)

Definition at line 2575 of file TEcnaNumbering.cc.

{
  Int_t EEDSNumber = 0;    // DS = Data Sector

  if( FEDNumber >= 600 && FEDNumber <= 609 ){EEDSNumber = FEDNumber - 599;} 
  if( FEDNumber >= 646 && FEDNumber <= 655 ){EEDSNumber = FEDNumber - 645;} 

  return EEDSNumber;
}
Int_t TEcnaNumbering::GetDSSCFrom1DeeSCEcna ( const Int_t &  n1DeeNumber,
const Int_t &  n1DeeSCEcna,
const Int_t &  n1SCEcha 
)

Definition at line 1946 of file TEcnaNumbering.cc.

Referenced by TEcnaParHistos::SetPaveSC(), TEcnaHistos::ViewDeeSCNumberingPad(), TEcnaHistos::ViewHisto(), and TEcnaWrite::WriteAsciiHisto().

{
  //.......... Get the correct SC number for the unconnected SC's (inner border)
  Int_t ds_sc = GetDSSCFrom1DeeSCEcna(n1DeeNumber, n1DeeSCEcna);

  if( n1DeeSCEcna == 29 || n1DeeSCEcna == 32 )
    {
      if( n1SCEcha == 11 )
        {
          if( ds_sc == 14 ){ds_sc= 21;}  // 14 <=> 261/BR OR 112/BL
        }
      if( n1SCEcha == 1 || n1SCEcha == 2 || n1SCEcha == 3 ||
          n1SCEcha == 6 || n1SCEcha == 7 )
        {
          if( ds_sc ==  3 ){ds_sc = 25;}  // 3 <=> 178/TR OR 29/TL
        }
    }
  return ds_sc;
}
Int_t TEcnaNumbering::GetDSSCFrom1DeeSCEcna ( const Int_t &  n1DeeNumber,
const Int_t &  n1DeeSCEcna 
)

Definition at line 1967 of file TEcnaNumbering.cc.

References gather_cfg::cout, fEcal, fT2d_DSSC, fTTBELL, TEcnaParEcal::MaxDeeInEE(), and TEcnaParEcal::MaxSCEcnaInDee().

{
// Get SC number in Data Sector from SC Ecna number in Dee 

  Int_t ds_sc = -1;

  if( n1DeeNumber > 0 && n1DeeNumber <= fEcal->MaxDeeInEE() )
    {
      if( n1DeeSCEcna > 0  &&  n1DeeSCEcna <= fEcal->MaxSCEcnaInDee() )
        {
          ds_sc = fT2d_DSSC[n1DeeNumber-1][n1DeeSCEcna-1]; // 25 (not 3) or 14 (not 21) if n1DeeSCEcna = 32 or 29
                                                           // 25 and 14 => 5 Xtals,  3 and 21 => 1 Xtal
        }
      else
        {
          cout << "!TEcnaNumbering::GetDSSCFrom1DeeSCEcna(...)> n1DeeSCEcna = " << n1DeeSCEcna
               << ". Out of range ( range = [1," << fEcal->MaxSCEcnaInDee() << "] )"
               << fTTBELL << endl;
        }
    }
  else
    {
      if( n1DeeNumber != 0 )
        {
          cout << "!TEcnaNumbering::GetDSSCFrom1DeeSCEcna(...)> n1DeeNumber = " << n1DeeNumber 
               << ". Out of range ( range = [1," << fEcal->MaxDeeInEE() << "] )"
               << fTTBELL << endl;
        }
      else
        {
          cout << "TEcnaNumbering::GetDSSCFrom1DeeSCEcna(...)> Dee = " << n1DeeNumber
               << ". Out of range (range = [1," << fEcal->MaxDeeInEE() << "])" 
               << fTTBELL << endl;
        }
    }
  return ds_sc;
}
TString TEcnaNumbering::GetEEDeeEndcap ( const Int_t &  n1DeeNumber)

Definition at line 2182 of file TEcnaNumbering.cc.

Referenced by TEcnaHistos::SCCrystalNumbering(), and TEcnaHistos::ViewDeeSCNumberingPad().

{
//gives the Endcap (EE+ or EE-) of the Dee (H. Heath, CMS NOTE 2006/027)

  TString eetype = "EE+";   // => default
  if ( n1DeeNumber == 1 || n1DeeNumber == 2 ){eetype = "EE+";}
  if ( n1DeeNumber == 3 || n1DeeNumber == 4 ){eetype = "EE-";}
  return eetype;
}
TString TEcnaNumbering::GetEEDeeType ( const Int_t &  n1DeeNumber)

Definition at line 2191 of file TEcnaNumbering.cc.

Referenced by TEcnaHistos::DeeSCNumbering(), GetXDirectionEE(), GetYDirectionEE(), TEcnaHistos::SCCrystalNumbering(), TEcnaHistos::SetEcalSubDetector(), TEcnaParHistos::SetPaveStex(), and TEcnaHistos::ViewMatrix().

{
//gives the EE +/- and Forward/Near of the Dee (H. Heath, CMS NOTE 2006/027)

  TString type = "EE+F";   // => default
  if ( n1DeeNumber == 1 ){type = "EE+F";}
  if ( n1DeeNumber == 2 ){type = "EE+N";}
  if ( n1DeeNumber == 3 ){type = "EE-N";}
  if ( n1DeeNumber == 4 ){type = "EE-F";}
  return type;
}
Double_t TEcnaNumbering::GetEta ( const Int_t &  n1EBSM,
const Int_t &  n1SMTow,
const Int_t &  i0TowEcha 
)

Definition at line 515 of file TEcnaNumbering.cc.

References gather_cfg::cout, eta(), fCodeChNumberingLvrbBot, fCodeChNumberingLvrbTop, fEcal, fTTBELL, GetSMHalfBarrel(), GetTowerLvrbType(), TEcnaParEcal::MaxCrysEtaInTow(), TEcnaParEcal::MaxSMInEB(), and TEcnaParEcal::MaxTowEtaInSM().

Referenced by TEcnaHistos::TowerCrystalNumbering(), TEcnaHistos::ViewSMTowerNumberingPad(), and TEcnaWrite::WriteAsciiHisto().

{
//Gives Eta for a given (n1EBSM, n1SMTow, i0TowEcha)
  
  Double_t eta = (Double_t)0.;

  Int_t max_crys_eta_in_tower = fEcal->MaxCrysEtaInTow();
  Int_t max_tow_eta_in_sm     = fEcal->MaxTowEtaInSM();
  Int_t max_sm_in_barrel      = fEcal->MaxSMInEB();

  if ( n1EBSM >= 1 && n1EBSM <= max_sm_in_barrel )
    {
      for (Int_t i_sm_tow_eta = 0; i_sm_tow_eta < max_tow_eta_in_sm; i_sm_tow_eta++)
        {
          Int_t i_crys_eta_min = (Int_t)(1 + i_sm_tow_eta*(max_crys_eta_in_tower-1));
          Int_t i_crys_eta_max = (Int_t)((i_sm_tow_eta+1)*(max_crys_eta_in_tower-1));
          Int_t i_crys_eta     = (Int_t)(i_sm_tow_eta*max_crys_eta_in_tower);
          // = 0,..,16 -> last xtal in eta for the previous tower
          Double_t d_echa_eta  = (Double_t)(i0TowEcha/max_crys_eta_in_tower);    // = 0,1,2,3,4

            if ( n1SMTow >= i_crys_eta_min && n1SMTow <= i_crys_eta_max )
              {
                if (GetTowerLvrbType(n1SMTow) == fCodeChNumberingLvrbTop)
                {eta = (Double_t)(i_crys_eta) + d_echa_eta + 1;}
                if (GetTowerLvrbType(n1SMTow) == fCodeChNumberingLvrbBot)
                {eta = (Double_t)(i_crys_eta+max_crys_eta_in_tower)-d_echa_eta;}
              }
        }      
      if ( GetSMHalfBarrel(n1EBSM) == "EB-" ){eta = - eta;}      
    }
  else
    {
      cout << "TEcnaNumbering::GetEta(...)> SM = " << n1EBSM
           << ". Out of range (range = [1," << fEcal->MaxSMInEB() << "])" 
           << fTTBELL << endl; 
    }
  return eta;
}
Double_t TEcnaNumbering::GetEtaMax ( const Int_t &  n1EBSM,
const Int_t &  n1SMTow 
)

Definition at line 581 of file TEcnaNumbering.cc.

References fEcal, GetSMHalfBarrel(), TEcnaParEcal::MaxCrysEtaInTow(), and TEcnaParEcal::MaxTowEtaInSM().

Referenced by GetIEtaMax().

{
//Gives EtaMax for a given Tower

  Int_t max_tow_eta_in_sm     = fEcal->MaxTowEtaInSM();
  Int_t max_crys_eta_in_tower = fEcal->MaxCrysEtaInTow();

  Double_t eta_max = (max_crys_eta_in_tower-1);

  for (Int_t i_sm_tow_eta = 0; i_sm_tow_eta < max_tow_eta_in_sm; i_sm_tow_eta++)
    {
      Int_t i_crys_eta_min = (Int_t)(1 + i_sm_tow_eta*(max_crys_eta_in_tower-1));
      Int_t i_crys_eta_max = (Int_t)((i_sm_tow_eta+1)*(max_crys_eta_in_tower-1));
      Int_t i_crys_eta     = (Int_t)(i_sm_tow_eta*max_crys_eta_in_tower);

      if ( n1SMTow >= i_crys_eta_min && n1SMTow <= i_crys_eta_max )
        {
          if (GetSMHalfBarrel(n1EBSM) == "EB+")
            {eta_max = (Double_t)(i_crys_eta + max_crys_eta_in_tower);}
          if (GetSMHalfBarrel(n1EBSM) == "EB-")
            {eta_max = -(Double_t)i_crys_eta;}
        }
    }

  return eta_max;
}
Double_t TEcnaNumbering::GetEtaMin ( const Int_t &  n1EBSM,
const Int_t &  n1SMTow 
)

Definition at line 555 of file TEcnaNumbering.cc.

References fEcal, GetSMHalfBarrel(), TEcnaParEcal::MaxCrysEtaInTow(), and TEcnaParEcal::MaxTowEtaInSM().

Referenced by GetIEtaMin().

{
//Gives EtaMin for a given Tower

  Int_t max_tow_eta_in_sm     = fEcal->MaxTowEtaInSM();
  Int_t max_crys_eta_in_tower = fEcal->MaxCrysEtaInTow();

  Double_t eta_min = (Double_t)0.;

  for (Int_t i_sm_tow_eta = 0; i_sm_tow_eta < max_tow_eta_in_sm; i_sm_tow_eta++)
    {
      Int_t i_crys_eta_min =    (Int_t)(1 + i_sm_tow_eta*(max_crys_eta_in_tower-1));
      Int_t i_crys_eta_max =    (Int_t)((i_sm_tow_eta+1)*(max_crys_eta_in_tower-1));
      Int_t i_crys_eta     =    (Int_t)(i_sm_tow_eta*max_crys_eta_in_tower);

      if ( n1SMTow >= i_crys_eta_min && n1SMTow <= i_crys_eta_max )
        {
          if (GetSMHalfBarrel(n1EBSM) == "EB+")
            {eta_min = (Double_t)i_crys_eta;}
          if (GetSMHalfBarrel(n1EBSM) == "EB-")
            {eta_min = -(Double_t)(i_crys_eta + max_crys_eta_in_tower);}
        }
    }
  return eta_min;
}
Int_t TEcnaNumbering::GetHashedNumberFromIEtaAndIPhi ( const Int_t &  IEta,
const Int_t &  IPhi 
)

Definition at line 460 of file TEcnaNumbering.cc.

Referenced by TEcnaHistos::TowerCrystalNumbering().

{
  Int_t Hashed = 0;

  if( IEta > 0 ){Hashed = (85 + IEta - 1)*360 + IPhi - 1;}
  if( IEta < 0 ){Hashed = (85 + IEta)*360     + IPhi - 1;}

  return Hashed;
}
Int_t TEcnaNumbering::GetIEtaFromHashed ( const Int_t &  Hashed,
const Int_t &  SMNumber 
)

Definition at line 470 of file TEcnaNumbering.cc.

References GetSMHalfBarrel().

{
  Int_t IEta = 0;

  if( GetSMHalfBarrel(SMNumber) == "EB+" ){IEta = Hashed/360 - 85 + 1;}
  if( GetSMHalfBarrel(SMNumber) == "EB-" ){IEta = 85 + Hashed/360;}

  return IEta;
}
Double_t TEcnaNumbering::GetIEtaMax ( const Int_t &  n1EBSM,
const Int_t &  n1SMTow 
)

Definition at line 622 of file TEcnaNumbering.cc.

References GetEtaMax(), and GetSMHalfBarrel().

Referenced by GetIEtaMax(), GetIHocoMax(), TEcnaHistos::ViewSMGrid(), and TEcnaHistos::ViewTowerGrid().

{
//Gives IEtaMax for a given (n1EBSM, n1SMTow)

  Double_t i_eta_max = (Int_t)0.; 
   
  if(GetSMHalfBarrel(n1EBSM) == "EB+")
    {i_eta_max = (Double_t)GetEtaMax(n1EBSM, n1SMTow)+(Double_t)0.5;}
  if(GetSMHalfBarrel(n1EBSM) == "EB-")
    {i_eta_max = (Double_t)GetEtaMax(n1EBSM, n1SMTow)-(Double_t)0.5;}

  return i_eta_max;
}
Double_t TEcnaNumbering::GetIEtaMax ( const Int_t &  n1EBSM)

Definition at line 653 of file TEcnaNumbering.cc.

References fEcal, GetIEtaMax(), GetSMHalfBarrel(), and TEcnaParEcal::MaxTowInSM().

{
//Gives IEtaMax for a given (n1EBSM)

  Double_t i_eta_max = (Int_t)0.; 

  Int_t n1SMTowPlus  = (Int_t)fEcal->MaxTowInSM();   
  Int_t n1SMTowMinus = (Int_t)1;   
   
  if( GetSMHalfBarrel(n1EBSM) == "EB+")
    {i_eta_max = (Double_t)GetIEtaMax(n1EBSM, n1SMTowPlus );}
  if( GetSMHalfBarrel(n1EBSM) == "EB-")
    {i_eta_max = (Double_t)GetIEtaMax(n1EBSM, n1SMTowMinus);}

  return i_eta_max;
}
Double_t TEcnaNumbering::GetIEtaMin ( const Int_t &  n1EBSM,
const Int_t &  n1SMTow 
)

Definition at line 608 of file TEcnaNumbering.cc.

References GetEtaMin(), and GetSMHalfBarrel().

Referenced by GetIEtaMin(), GetIHocoMin(), TEcnaHistos::ViewSMGrid(), and TEcnaHistos::ViewTowerGrid().

{
//Gives IEtaMin for a given (n1EBSM, n1SMTow)

  Double_t i_eta_min = (Int_t)0.; 
   
  if(GetSMHalfBarrel(n1EBSM) == "EB+")
    {i_eta_min = (Double_t)GetEtaMin(n1EBSM, n1SMTow)+(Double_t)0.5;}
  if(GetSMHalfBarrel(n1EBSM) == "EB-")
    {i_eta_min = (Double_t)GetEtaMin(n1EBSM, n1SMTow)-(Double_t)0.5;}

  return i_eta_min;
}
Double_t TEcnaNumbering::GetIEtaMin ( const Int_t &  n1EBSM)

Definition at line 636 of file TEcnaNumbering.cc.

References fEcal, GetIEtaMin(), GetSMHalfBarrel(), and TEcnaParEcal::MaxTowInSM().

{
//Gives IEtaMin for a given (n1EBSM)

  Double_t i_eta_min = (Int_t)0.;

  Int_t n1SMTowPlus  = (Int_t)1;   
  Int_t n1SMTowMinus = (Int_t)fEcal->MaxTowInSM();

  if( GetSMHalfBarrel(n1EBSM) == "EB+" )
    {i_eta_min = (Double_t)GetIEtaMin(n1EBSM, n1SMTowPlus );}
  if( GetSMHalfBarrel(n1EBSM) == "EB-" )
    {i_eta_min = (Double_t)GetIEtaMin(n1EBSM, n1SMTowMinus);}

  return i_eta_min;
}
Double_t TEcnaNumbering::GetIHocoMax ( const Int_t &  Stex,
const Int_t &  StexStin 
)

Definition at line 2511 of file TEcnaNumbering.cc.

References fFlagSubDet, GetIEtaMax(), and GetIIXMax().

{
  Double_t IHocoMax = (Double_t)0.;
  if(fFlagSubDet == "EB" ){IHocoMax = GetIEtaMax(Stex, StexStin);}
  if(fFlagSubDet == "EE" ){IHocoMax = GetIIXMax(StexStin);}
  return IHocoMax;
}
Double_t TEcnaNumbering::GetIHocoMin ( const Int_t &  Stex,
const Int_t &  StexStin 
)

Definition at line 2503 of file TEcnaNumbering.cc.

References fFlagSubDet, GetIEtaMin(), and GetIIXMin().

{
  Double_t IHocoMin = (Double_t)0.;
  if(fFlagSubDet == "EB" ){IHocoMin = GetIEtaMin(Stex, StexStin);}
  if(fFlagSubDet == "EE" ){IHocoMin = GetIIXMin(StexStin);}
  return IHocoMin;
}
Double_t TEcnaNumbering::GetIIXMax ( const Int_t &  DeeSC)

Definition at line 2320 of file TEcnaNumbering.cc.

References fEcal, TEcnaParEcal::MaxCrysIXInSC(), and TEcnaParEcal::MaxSCIYInDee().

Referenced by TEcnaHistos::EEGridAxis(), and TEcnaHistos::ViewSCGrid().

{
//Gives IIXMax for a given DeeSC , unit = crystal

  Double_t IX_max  = ((Double_t)((DeeSC-1)/fEcal->MaxSCIYInDee())+1.)*fEcal->MaxCrysIXInSC();
  return IX_max;
}
Double_t TEcnaNumbering::GetIIXMax ( )

Definition at line 2336 of file TEcnaNumbering.cc.

References fEcal, and TEcnaParEcal::MaxSCIXInDee().

Referenced by GetIHocoMax().

{
//Gives IIXMax for Dee , unit = Super-crystal

  Double_t i_IX_max = (Int_t)fEcal->MaxSCIXInDee(); 
  return i_IX_max;
}
Double_t TEcnaNumbering::GetIIXMin ( const Int_t &  DeeSC)

Definition at line 2312 of file TEcnaNumbering.cc.

References fEcal, TEcnaParEcal::MaxCrysIXInSC(), and TEcnaParEcal::MaxSCIYInDee().

Referenced by TEcnaHistos::EEGridAxis(), and TEcnaHistos::ViewSCGrid().

{
//Gives IIXMin for a given DeeSC , unit = crystal

  Double_t IX_min   = (Double_t)((DeeSC-1)/fEcal->MaxSCIYInDee())*fEcal->MaxCrysIXInSC() + 1.;
  return IX_min;
}
Double_t TEcnaNumbering::GetIIXMin ( )

Definition at line 2328 of file TEcnaNumbering.cc.

Referenced by GetIHocoMin().

{
//Gives IIXMin for Dee , unit = Super-crystal

  Double_t i_IX_min = (Int_t)1.;
  return i_IX_min;
}
Int_t TEcnaNumbering::GetIPhiFromHashed ( const Int_t &  Hashed)

Definition at line 480 of file TEcnaNumbering.cc.

{
  Int_t IPhi = Hashed%360 + 1;

  return IPhi;
}
Int_t TEcnaNumbering::GetIXCrysInDee ( const Int_t &  n1DeeNumber,
const Int_t &  DeeSC,
const Int_t &  i0SCEcha 
)

Definition at line 2251 of file TEcnaNumbering.cc.

References fEcal, GetIXCrysInSC(), GetIXSCInDee(), and TEcnaParEcal::MaxCrysIXInSC().

Referenced by TEcnaHistos::GetXCrysInStex(), and TEcnaWrite::WriteAsciiHisto().

{
//Gives Crys IX in Dee for a given (n1DeeNumber, DeeSC, i0SCEcha)

  Int_t IXCrysInDee =
    (GetIXSCInDee(DeeSC)-1)*fEcal->MaxCrysIXInSC() +
    GetIXCrysInSC(n1DeeNumber, DeeSC, i0SCEcha);
  return IXCrysInDee;  // possible values: 1,2,...,49,50
}
Int_t TEcnaNumbering::GetIXCrysInSC ( const Int_t &  n1DeeNumber,
const Int_t &  DeeSC,
const Int_t &  i0SCEcha 
)

Definition at line 2231 of file TEcnaNumbering.cc.

References fT2d_ich_IX, GetDeeDirViewedFromIP(), GetSCQuadFrom1DeeSCEcna(), and GetSCQuadTypeIndex().

Referenced by GetIXCrysInDee(), and TEcnaHistos::GetXSampInStin().

{
//Gives Crys IX in SC for a given (n1DeeNumber, DeeSC, i0SCEcha)
  
  TString SCQuadType = GetSCQuadFrom1DeeSCEcna(DeeSC);
  TString sDeeDir    = GetDeeDirViewedFromIP(n1DeeNumber);
  Int_t type_index   = GetSCQuadTypeIndex(SCQuadType, sDeeDir);
  Int_t IXCrysInSC   = fT2d_ich_IX[type_index][i0SCEcha+1] + 1;
  return IXCrysInSC;   // possible values: 1,2,3,4,5
}
Int_t TEcnaNumbering::GetIXSCInDee ( const Int_t &  DeeSC)

Definition at line 2243 of file TEcnaNumbering.cc.

References fEcal, and TEcnaParEcal::MaxSCIYInDee().

Referenced by GetIXCrysInDee().

{
//Gives SC IX in Dee for a given (DeeSC)
  
  Int_t IXSCInDee = (DeeSC-1)/fEcal->MaxSCIYInDee() + 1;
  return IXSCInDee;  //  possible values: 1,2,...,9,10
}
Double_t TEcnaNumbering::GetJIYMax ( const Int_t &  n1DeeNumber,
const Int_t &  DeeSC 
)

Definition at line 2361 of file TEcnaNumbering.cc.

References fEcal, TEcnaParEcal::MaxCrysIYInSC(), and TEcnaParEcal::MaxSCIYInDee().

Referenced by TEcnaHistos::EEGridAxis(), GetJVecoMax(), GetVecoMax(), and TEcnaHistos::ViewSCGrid().

{
//Gives JIYMax for a given Super-Crystal

  Double_t IY_DeeSC = DeeSC%fEcal->MaxSCIYInDee();
  if( IY_DeeSC == 0  ){IY_DeeSC = fEcal->MaxSCIYInDee();}

  Double_t j_IY_max = IY_DeeSC*fEcal->MaxCrysIYInSC();

  return j_IY_max;
}
Double_t TEcnaNumbering::GetJIYMax ( const Int_t &  n1DeeNumber)

Definition at line 2383 of file TEcnaNumbering.cc.

References fEcal, and TEcnaParEcal::MaxSCIYInDee().

{
//Gives JIYMax for a given Dee

  Double_t j_IY_max = (Double_t)fEcal->MaxSCIYInDee();

  return j_IY_max;
}
Double_t TEcnaNumbering::GetJIYMin ( const Int_t &  n1DeeNumber)

Definition at line 2374 of file TEcnaNumbering.cc.

{
//Gives JIYMin for a given Dee

  Double_t j_IY_min = (Double_t)1.;

  return j_IY_min;
}
Double_t TEcnaNumbering::GetJIYMin ( const Int_t &  n1DeeNumber,
const Int_t &  DeeSC 
)

Definition at line 2349 of file TEcnaNumbering.cc.

References fEcal, TEcnaParEcal::MaxCrysIYInSC(), and TEcnaParEcal::MaxSCIYInDee().

Referenced by TEcnaHistos::EEGridAxis(), GetJVecoMin(), GetVecoMin(), and TEcnaHistos::ViewSCGrid().

{
//Gives JIYMin for a given Super-Crystal

  Double_t IY_DeeSC = DeeSC%fEcal->MaxSCIYInDee();
  if( IY_DeeSC == 0. ){IY_DeeSC = fEcal->MaxSCIYInDee();}

  Double_t j_IY_min = (IY_DeeSC-1)*fEcal->MaxCrysIYInSC() + 1.;
 
  return j_IY_min;
}
Double_t TEcnaNumbering::GetJPhiMax ( const Int_t &  n1EBSM)

Definition at line 891 of file TEcnaNumbering.cc.

{
//Gives JPhiMax for a given SuperModule

  Double_t j_phi_max = (Double_t)20. + (Double_t)0.5;

  return j_phi_max;
}
Double_t TEcnaNumbering::GetJPhiMax ( const Int_t &  n1EBSM,
const Int_t &  n1SMTow 
)

Definition at line 865 of file TEcnaNumbering.cc.

References fEcal, and TEcnaParEcal::MaxCrysPhiInTow().

Referenced by GetJVecoMax(), TEcnaHistos::ViewSMGrid(), and TEcnaHistos::ViewTowerGrid().

{
//Gives JPhiMax for a given Tower

  Double_t j_phi_max = (Double_t)20.;
  Int_t max_crys_phi_in_tower = fEcal->MaxCrysPhiInTow();
  Int_t rest_temp =(Int_t)(n1SMTow%(max_crys_phi_in_tower-1));
  
  if ( rest_temp == 1 ){j_phi_max = (Double_t) 5. + (Double_t)0.5;}
  if ( rest_temp == 2 ){j_phi_max = (Double_t)10. + (Double_t)0.5;}
  if ( rest_temp == 3 ){j_phi_max = (Double_t)15. + (Double_t)0.5;}
  if ( rest_temp == 0 ){j_phi_max = (Double_t)20. + (Double_t)0.5;}

  return j_phi_max;
}
Double_t TEcnaNumbering::GetJPhiMin ( const Int_t &  n1EBSM)

Definition at line 882 of file TEcnaNumbering.cc.

{
//Gives JPhiMin for a given SuperModule

  Double_t j_phi_min = (Double_t)1. - (Double_t)0.5;

  return j_phi_min;
}
Double_t TEcnaNumbering::GetJPhiMin ( const Int_t &  n1EBSM,
const Int_t &  n1SMTow 
)

Definition at line 849 of file TEcnaNumbering.cc.

References fEcal, and TEcnaParEcal::MaxCrysPhiInTow().

Referenced by GetJVecoMin(), TEcnaHistos::ViewSMGrid(), and TEcnaHistos::ViewTowerGrid().

{
//Gives JPhiMin for a given Tower

  Double_t j_phi_min = (Double_t)1.;
  Int_t max_crys_phi_in_tower = fEcal->MaxCrysPhiInTow();
  Int_t rest_temp =(Int_t)(n1SMTow%(max_crys_phi_in_tower-1));
  
  if ( rest_temp == 1 ){j_phi_min = (Double_t) 1. - (Double_t)0.5;}
  if ( rest_temp == 2 ){j_phi_min = (Double_t) 6. - (Double_t)0.5;}
  if ( rest_temp == 3 ){j_phi_min = (Double_t)11. - (Double_t)0.5;}
  if ( rest_temp == 0 ){j_phi_min = (Double_t)16. - (Double_t)0.5;}

  return j_phi_min;
}
Double_t TEcnaNumbering::GetJVecoMax ( const Int_t &  Stex,
const Int_t &  StexStin 
)

Definition at line 2542 of file TEcnaNumbering.cc.

References fFlagSubDet, GetJIYMax(), and GetJPhiMax().

{
  Double_t JVecoMax = (Double_t)0.;
  if(fFlagSubDet == "EB" ){JVecoMax = GetJPhiMax(Stex, StexStin);}
  if(fFlagSubDet == "EE" ){JVecoMax = GetJIYMax(Stex, StexStin);}   // not used
  return JVecoMax;
}
Double_t TEcnaNumbering::GetJVecoMin ( const Int_t &  Stex,
const Int_t &  StexStin 
)

Definition at line 2535 of file TEcnaNumbering.cc.

References fFlagSubDet, GetJIYMin(), and GetJPhiMin().

{
  Double_t JVecoMin = (Double_t)0.;
  if(fFlagSubDet == "EB" ){JVecoMin = GetJPhiMin(Stex, StexStin);}
  if(fFlagSubDet == "EE" ){JVecoMin = GetJIYMin(Stex, StexStin);}   // not used
  return JVecoMin;
}
Int_t TEcnaNumbering::GetJYCrysInDee ( const Int_t &  n1DeeNumber,
const Int_t &  DeeSC,
const Int_t &  i0SCEcha 
)

Definition at line 2282 of file TEcnaNumbering.cc.

References fEcal, GetJYCrysInSC(), GetJYSCInDee(), and TEcnaParEcal::MaxCrysIYInSC().

Referenced by TEcnaHistos::GetYCrysInStex(), and TEcnaWrite::WriteAsciiHisto().

{
//Gives Crys JY in Dee for a given (n1DeeNumber, DeeSC, i0SCEcha)

  Int_t JYCrysInDee =
    (GetJYSCInDee(DeeSC)-1)*fEcal->MaxCrysIYInSC() +
    GetJYCrysInSC(n1DeeNumber, DeeSC, i0SCEcha);
  return JYCrysInDee;  // possible values: 1,2,...,99,100 
}
Int_t TEcnaNumbering::GetJYCrysInSC ( const Int_t &  n1DeeNumber,
const Int_t &  DeeSC,
const Int_t &  i0SCEcha 
)

Definition at line 2262 of file TEcnaNumbering.cc.

References fT2d_jch_JY, GetDeeDirViewedFromIP(), GetSCQuadFrom1DeeSCEcna(), and GetSCQuadTypeIndex().

Referenced by GetJYCrysInDee(), and TEcnaHistos::GetYSampInStin().

{
//Gives Crys JY in SC  for a given (n1DeeNumber, DeeSC, i0SCEcha)

  TString SCQuadType = GetSCQuadFrom1DeeSCEcna(DeeSC);
  TString sDeeDir    = GetDeeDirViewedFromIP(n1DeeNumber);
  Int_t type_index   = GetSCQuadTypeIndex(SCQuadType, sDeeDir);
  Int_t JYCrysInSC   = fT2d_jch_JY[type_index][i0SCEcha+1] + 1;
  return JYCrysInSC;   // possible values: 1,2,3,4,5
}
TString TEcnaNumbering::GetJYDirectionEB ( const Int_t &  SMNumber)

Definition at line 928 of file TEcnaNumbering.cc.

References GetSMHalfBarrel().

Referenced by TEcnaHistos::ViewSMGrid(), and TEcnaHistos::ViewTowerGrid().

{
  TString jydirection = "-x";      // DEFAULT

  if( GetSMHalfBarrel(SMNumber) == "EB+" ){jydirection = "x";}
  if( GetSMHalfBarrel(SMNumber) == "EB-" ){jydirection = "-x";}

  return jydirection;
}
TString TEcnaNumbering::GetJYDirectionEE ( const Int_t &  n1DeeNumber)

Definition at line 2431 of file TEcnaNumbering.cc.

Referenced by TEcnaHistos::ViewSCGrid().

{
  TString jydirection = "x";      // ALWAYS IN THIS CASE
  return jydirection;
}
Int_t TEcnaNumbering::GetJYSCInDee ( const Int_t &  DeeSC)

Definition at line 2274 of file TEcnaNumbering.cc.

References fEcal, and TEcnaParEcal::MaxSCIYInDee().

Referenced by GetJYCrysInDee().

{
//Gives SC JY in Dee for a given (n1DeeNumber, DeeSC, i0SCEcha)
  
  Int_t JYSCInDee = (DeeSC-1)%fEcal->MaxSCIYInDee() + 1;
  return JYSCInDee;  //  possible values: 1,2,...,19,20
}
Int_t TEcnaNumbering::GetMaxSCInDS ( const Int_t &  DeeDS)

Definition at line 2293 of file TEcnaNumbering.cc.

Referenced by TEcnaHistos::GetDSOffset(), TEcnaHistos::HistoPlot(), and TEcnaHistos::ViewHisto().

{
// Gives the number of SC's in Data Sector DeeDS

  Int_t nb_of_sc = -1;
  if( DeeDS == 1 || DeeDS == 9 ){nb_of_sc = 33;}
  if( DeeDS == 2 || DeeDS == 8 ){nb_of_sc = 32;}
  if( DeeDS == 3 || DeeDS == 7 ){nb_of_sc = 34;}
  if( DeeDS == 4 || DeeDS == 6 ){nb_of_sc = 33;}
  if( DeeDS == 5){nb_of_sc = 34;}
  return nb_of_sc;
}
Double_t TEcnaNumbering::GetPhi ( const Int_t &  n1EBSM,
const Int_t &  n1SMTow,
const Int_t &  i0TowEcha 
)

Definition at line 749 of file TEcnaNumbering.cc.

References gather_cfg::cout, fEcal, fTTBELL, GetPhiInSM(), GetSMCentralPhi(), TEcnaParEcal::MaxSMInEB(), and phi.

Referenced by TEcnaHistos::TowerCrystalNumbering(), and TEcnaHistos::ViewSMTowerNumberingPad().

{
//Gives Phi for a given (n1EBSM, n1SMTow, i0TowEcha)
  
  Double_t phi = (Double_t)0.;

  if ( n1EBSM >= 1 && n1EBSM <= fEcal->MaxSMInEB() )
    {
      Double_t phiInSM   = GetPhiInSM(n1EBSM, n1SMTow, i0TowEcha);
      Double_t phi_start = GetSMCentralPhi(n1EBSM);
 
      phi = 20 - phiInSM + phi_start -(Double_t)10.;
    }
  else
    {
      cout << "TEcnaNumbering::GetPhi(...)> SM = " << n1EBSM
           << ". Out of range (range = [1," << fEcal->MaxSMInEB() << "])" 
           << fTTBELL << endl; 
    }
  return phi;
}
Double_t TEcnaNumbering::GetPhiInSM ( const Int_t &  n1EBSM,
const Int_t &  n1SMTow,
const Int_t &  i0TowEcha 
)

Definition at line 688 of file TEcnaNumbering.cc.

References gather_cfg::cout, fCodeChNumberingLvrbBot, fCodeChNumberingLvrbTop, fEcal, fTTBELL, GetTowerLvrbType(), TEcnaParEcal::MaxCrysPhiInTow(), and TEcnaParEcal::MaxSMInEB().

Referenced by GetPhi(), and TEcnaWrite::WriteAsciiHisto().

{
//Gives Phi for a given (n1EBSM, n1SMTow, i0TowEcha)

  Double_t phi_in_SM = (Double_t)0.;

  Int_t rest_temp =(Int_t)(n1SMTow%(fEcal->MaxCrysPhiInTow()-1));  // "Phi" of the tower = 1,2,3,0 

  if ( n1EBSM >= 1 && n1EBSM <= fEcal->MaxSMInEB() )
    {
      if( rest_temp == 1 ){phi_in_SM = (Double_t)15.;}
      if( rest_temp == 2 ){phi_in_SM = (Double_t)10.;}
      if( rest_temp == 3 ){phi_in_SM = (Double_t)5.;}
      if( rest_temp == 0 ){phi_in_SM = (Double_t)0.;}
      
      if (GetTowerLvrbType(n1SMTow) == fCodeChNumberingLvrbTop)
        { 
          if( i0TowEcha ==  4 || i0TowEcha ==  5 || i0TowEcha == 14 || i0TowEcha == 15 || i0TowEcha == 24 )
            {phi_in_SM = phi_in_SM + 0;}
          
          if( i0TowEcha ==  3 || i0TowEcha ==  6 || i0TowEcha == 13 || i0TowEcha == 16 || i0TowEcha == 23 )
            {phi_in_SM = phi_in_SM + 1;} 
          
          if( i0TowEcha ==  2 || i0TowEcha ==  7 || i0TowEcha == 12 || i0TowEcha == 17 || i0TowEcha == 22 )
            {phi_in_SM = phi_in_SM + 2;}
          
          if( i0TowEcha ==  1 || i0TowEcha ==  8 || i0TowEcha == 11 || i0TowEcha == 18 || i0TowEcha == 21 )
            {phi_in_SM = phi_in_SM + 3;}
          
          if( i0TowEcha ==  0 || i0TowEcha ==  9 || i0TowEcha == 10 || i0TowEcha == 19 || i0TowEcha == 20 )
            {phi_in_SM = phi_in_SM + 4;} 
        }
      if (GetTowerLvrbType(n1SMTow) == fCodeChNumberingLvrbBot)
        {
          if( i0TowEcha == 20 || i0TowEcha == 19 || i0TowEcha == 10 || i0TowEcha ==  9 || i0TowEcha ==  0 )
            {phi_in_SM = phi_in_SM + 0;}
          
          if( i0TowEcha == 21 || i0TowEcha == 18 || i0TowEcha == 11 || i0TowEcha ==  8 || i0TowEcha ==  1 )
            {phi_in_SM = phi_in_SM + 1;}
 
          if( i0TowEcha == 22 || i0TowEcha == 17 || i0TowEcha == 12 || i0TowEcha ==  7 || i0TowEcha ==  2 )
            {phi_in_SM = phi_in_SM + 2;}

          if( i0TowEcha == 23 || i0TowEcha == 16 || i0TowEcha == 13 || i0TowEcha ==  6 || i0TowEcha ==  3 )
            {phi_in_SM = phi_in_SM + 3;}

          if( i0TowEcha == 24 || i0TowEcha == 15 || i0TowEcha == 14 || i0TowEcha ==  5 || i0TowEcha ==  4 )
            {phi_in_SM = phi_in_SM + 4;} 
          }
    }
  else
    {
      cout << "TEcnaNumbering::GetPhiInSM(...)> SM = " << n1EBSM
           << ". Out of range (range = [1," << fEcal->MaxSMInEB() << "])" 
           << fTTBELL << endl; 
    }
  phi_in_SM = 20 - phi_in_SM;
  return phi_in_SM;
}
Double_t TEcnaNumbering::GetPhiMax ( const Int_t &  n1EBSM)

Definition at line 840 of file TEcnaNumbering.cc.

References GetSMCentralPhi().

{
//Gives PhiMax for a given SuperModule

  Double_t phi_max = GetSMCentralPhi(n1EBSM) + (Double_t)10.;

  return phi_max;
}
Double_t TEcnaNumbering::GetPhiMax ( const Int_t &  n1EBSM,
const Int_t &  n1SMTow 
)

Definition at line 801 of file TEcnaNumbering.cc.

References fEcal, GetSMCentralPhi(), GetSMHalfBarrel(), and TEcnaParEcal::MaxCrysPhiInTow().

Referenced by GetVecoMax(), TEcnaHistos::ViewSMGrid(), and TEcnaHistos::ViewTowerGrid().

{
//Gives PhiMax for a given Tower

  Int_t max_crys_phi_in_tower = fEcal->MaxCrysPhiInTow();

  Double_t phi_max = (Double_t)20.;     // DEFAULT
  Double_t phi_start = GetSMCentralPhi(n1EBSM);

  Int_t rest_temp =(Int_t)(n1SMTow%(max_crys_phi_in_tower-1));

  if(GetSMHalfBarrel(n1EBSM) == "EB+")
    {
      if ( rest_temp == 1 ) {phi_max = phi_start + (Double_t)10.;}
      if ( rest_temp == 2 ) {phi_max = phi_start + (Double_t)5.;}
      if ( rest_temp == 3 ) {phi_max = phi_start - (Double_t)0.;}
      if ( rest_temp == 0 ) {phi_max = phi_start - (Double_t)5.;}
    }

  if(GetSMHalfBarrel(n1EBSM) == "EB-")
    {
      if ( rest_temp == 0 ) {phi_max = phi_start + (Double_t)10.;}
      if ( rest_temp == 3 ) {phi_max = phi_start + (Double_t)5.;}
      if ( rest_temp == 2 ) {phi_max = phi_start - (Double_t)0.;}
      if ( rest_temp == 1 ) {phi_max = phi_start - (Double_t)5.;}
    }

  return phi_max;
}
Double_t TEcnaNumbering::GetPhiMin ( const Int_t &  n1EBSM)

Definition at line 831 of file TEcnaNumbering.cc.

References GetSMCentralPhi().

{
//Gives PhiMin for a given SuperModule

  Double_t phi_min = GetSMCentralPhi(n1EBSM) - (Double_t)10.;

  return phi_min;
}
Double_t TEcnaNumbering::GetPhiMin ( const Int_t &  n1EBSM,
const Int_t &  n1SMTow 
)

Definition at line 773 of file TEcnaNumbering.cc.

References fEcal, GetSMCentralPhi(), GetSMHalfBarrel(), and TEcnaParEcal::MaxCrysPhiInTow().

Referenced by GetVecoMin(), TEcnaHistos::ViewSMGrid(), TEcnaHistos::ViewSMTowerNumberingPad(), and TEcnaHistos::ViewTowerGrid().

{
//Gives PhiMin for a given Tower

  Int_t max_crys_phi_in_tower = fEcal->MaxCrysPhiInTow();

  Double_t phi_min = (Double_t)0.;     // DEFAULT
  Double_t phi_start = GetSMCentralPhi(n1EBSM);

  Int_t rest_temp =(Int_t)(n1SMTow%(max_crys_phi_in_tower-1));

  if(GetSMHalfBarrel(n1EBSM) == "EB+")
    {
      if ( rest_temp == 1 ) {phi_min = phi_start + (Double_t)5.;}
      if ( rest_temp == 2 ) {phi_min = phi_start + (Double_t)0.;}
      if ( rest_temp == 3 ) {phi_min = phi_start - (Double_t)5.;}
      if ( rest_temp == 0 ) {phi_min = phi_start - (Double_t)10.;}
    }
  if(GetSMHalfBarrel(n1EBSM) == "EB-")
    {
      if ( rest_temp == 0 ) {phi_min = phi_start + (Double_t)5.;}
      if ( rest_temp == 3 ) {phi_min = phi_start + (Double_t)0.;}
      if ( rest_temp == 2 ) {phi_min = phi_start - (Double_t)5.;}
      if ( rest_temp == 1 ) {phi_min = phi_start - (Double_t)10.;}
    }
  return phi_min;
}
TString TEcnaNumbering::GetSCQuadFrom1DeeSCEcna ( const Int_t &  n1DeeSCEcna)

Definition at line 2146 of file TEcnaNumbering.cc.

Referenced by GetIXCrysInSC(), GetJYCrysInSC(), TEcnaHistos::ModifiedSCEchaForNotConnectedSCs(), TEcnaHistos::SCCrystalNumbering(), TEcnaParHistos::SetPaveSC(), TEcnaHistos::ViewDeeSCNumberingPad(), and TEcnaHistos::ViewMatrix().

{
//gives the quadrant type ("top" or "bottom") from the SC number in Dee

  TString SCQuad = "top";   // => default value

  if (n1DeeSCEcna >=   1 && n1DeeSCEcna <=  10){SCQuad = "bottom";}
  if (n1DeeSCEcna >=  21 && n1DeeSCEcna <=  30){SCQuad = "bottom";}
  if (n1DeeSCEcna >=  41 && n1DeeSCEcna <=  50){SCQuad = "bottom";}
  if (n1DeeSCEcna >=  61 && n1DeeSCEcna <=  70){SCQuad = "bottom";}
  if (n1DeeSCEcna >=  81 && n1DeeSCEcna <=  90){SCQuad = "bottom";}
  if (n1DeeSCEcna >= 101 && n1DeeSCEcna <= 110){SCQuad = "bottom";}
  if (n1DeeSCEcna >= 121 && n1DeeSCEcna <= 130){SCQuad = "bottom";}
  if (n1DeeSCEcna >= 141 && n1DeeSCEcna <= 150){SCQuad = "bottom";}
  if (n1DeeSCEcna >= 161 && n1DeeSCEcna <= 170){SCQuad = "bottom";}
  if (n1DeeSCEcna >= 181 && n1DeeSCEcna <= 190){SCQuad = "bottom";}

  return SCQuad;
}
Int_t TEcnaNumbering::GetSCQuadTypeIndex ( const TString  SCQuadType,
const TString  sDeeDir 
)

Definition at line 2165 of file TEcnaNumbering.cc.

Referenced by GetIXCrysInSC(), and GetJYCrysInSC().

{
//gives the index of the SC quadrant type (top/right, top/left, bottom/left, bottom/right)
// = quadrant number - 1

  Int_t itype = 0;   // => default
  if ( SCQuadType == "top"    && sDeeDir == "right" ){itype = 0;}
  if ( SCQuadType == "top"    && sDeeDir == "left"  ){itype = 1;}
  if ( SCQuadType == "bottom" && sDeeDir == "left"  ){itype = 2;}
  if ( SCQuadType == "bottom" && sDeeDir == "right" ){itype = 3;}
  return itype;
}
TString TEcnaNumbering::GetSCType ( const Int_t &  nb_for_cons)

Definition at line 2107 of file TEcnaNumbering.cc.

Referenced by TEcnaHistos::ViewHisto().

{
// gives the special not connected SC's

  TString SCType = "Connected";   // => default type

  if( nb_for_cons == 182 || nb_for_cons ==  33 ){SCType = "NotConnected";}  // (D1,S1) (D3,S9) || (D2,S9) (D4,S1)

  if( nb_for_cons == 178 || nb_for_cons ==  29 ){SCType = "NotConnected";}  // (D1,S2) (D3,S8) || (D2,S8) (D4,S2)
  if( nb_for_cons == 207 || nb_for_cons ==  58 ){SCType = "NotConnected";}

  if( nb_for_cons == 298 || nb_for_cons == 149 ){SCType = "NotConnected";}  // (D1,S3) (D3,S7) || (D2,S7) (D4,S3)

  if( nb_for_cons == 261 || nb_for_cons == 112 ){SCType = "NotConnected";}  // (D1,S4) (D3,S6) || (D2,S6) (D4,S4)
  if( nb_for_cons == 268 || nb_for_cons == 119 ){SCType = "NotConnected";}

  if( nb_for_cons == 281 || nb_for_cons == 132 ){SCType = "NotConnected";}  // (D1,S5) (D3,S5) || (D2,S5) (D4,S5)

  if( nb_for_cons == 161 || nb_for_cons ==  12 ){SCType = "NotComplete";}   // (D1,S1) (D3,S9) || (D2,S9) (D4,S1)
  if( nb_for_cons == 216 || nb_for_cons ==  67 ){SCType = "NotComplete";}   // (D1,S2) (D3,S8) || (D2,S8) (D4,S2)
  if( nb_for_cons == 224 || nb_for_cons ==  75 ){SCType = "NotComplete";}   // (D1,S3) (D3,S7) || (D2,S7) (D4,S3)
  if( nb_for_cons == 286 || nb_for_cons == 137 ){SCType = "NotComplete";}   // (D1,S5) (D3,S5) || (D2,S5) (D4,S5)

  return SCType;
}
Double_t TEcnaNumbering::GetSMCentralPhi ( const Int_t &  n1EBSM)

Definition at line 676 of file TEcnaNumbering.cc.

References GetSMHalfBarrel().

Referenced by GetPhi(), GetPhiMax(), and GetPhiMin().

{
//Gives the central phi value of the SuperModule

  Double_t central_phi = (Double_t)10.;    //  DEFAULT = SM1
  
  if (GetSMHalfBarrel(n1EBSM) == "EB+"){central_phi = 10. + (Double_t)20.*(n1EBSM-1);}
  if (GetSMHalfBarrel(n1EBSM) == "EB-"){central_phi = 10. + (Double_t)20.*(n1EBSM-19);}

  return central_phi;
}
Int_t TEcnaNumbering::GetSMFromFED ( const Int_t &  FEDNumber)

Definition at line 2568 of file TEcnaNumbering.cc.

{
  Int_t EBSMNumber = 0;    // SM = Super Module
  if( FEDNumber >= 610 && FEDNumber <= 645 ){EBSMNumber = FEDNumber - 609;}
  return EBSMNumber;
}
TString TEcnaNumbering::GetSMHalfBarrel ( const Int_t &  SMNumber)
TString TEcnaNumbering::GetStexHalfStas ( const Int_t &  SMNumber)
TString TEcnaNumbering::GetStinLvrbType ( const Int_t &  n1SMTow)

Definition at line 491 of file TEcnaNumbering.cc.

References GetTowerLvrbType().

Referenced by TEcnaHistos::GetXSampInStin(), and TEcnaHistos::GetYSampInStin().

{
  TString lvrb_type = GetTowerLvrbType(n1SMTow);
  return lvrb_type;
}
TString TEcnaNumbering::GetTowerLvrbType ( const Int_t &  n1SMTow)

Definition at line 496 of file TEcnaNumbering.cc.

References fCodeChNumberingLvrbBot, and fCodeChNumberingLvrbTop.

Referenced by GetEta(), GetPhiInSM(), GetStinLvrbType(), TEcnaParHistos::SetPaveLVRB(), TEcnaHistos::TowerCrystalNumbering(), and TEcnaHistos::ViewSMTowerNumberingPad().

{
//gives the LVRB type of the crystal numbering of tower

  TString type = fCodeChNumberingLvrbTop;   // => default value

  if (n1SMTow >=  1 && n1SMTow <= 12){type = fCodeChNumberingLvrbBot;}
  if (n1SMTow >= 21 && n1SMTow <= 28){type = fCodeChNumberingLvrbBot;}
  if (n1SMTow >= 37 && n1SMTow <= 44){type = fCodeChNumberingLvrbBot;}
  if (n1SMTow >= 53 && n1SMTow <= 60){type = fCodeChNumberingLvrbBot;}

  return type;
}
Double_t TEcnaNumbering::GetVecoMax ( const Int_t &  Stex,
const Int_t &  StexStin 
)

Definition at line 2527 of file TEcnaNumbering.cc.

References fFlagSubDet, GetJIYMax(), and GetPhiMax().

{
  Double_t IVecoMax = (Double_t)0.;
  if(fFlagSubDet == "EB" ){IVecoMax = GetPhiMax(Stex, StexStin);}
  if(fFlagSubDet == "EE" ){IVecoMax = GetJIYMax(Stex, StexStin);}
  return IVecoMax;
}
Double_t TEcnaNumbering::GetVecoMin ( const Int_t &  Stex,
const Int_t &  StexStin 
)

Definition at line 2519 of file TEcnaNumbering.cc.

References fFlagSubDet, GetJIYMin(), and GetPhiMin().

{
  Double_t IVecoMin = (Double_t)0.;
  if(fFlagSubDet == "EB" ){IVecoMin = GetPhiMin(Stex, StexStin);}
  if(fFlagSubDet == "EE" ){IVecoMin = GetJIYMin(Stex, StexStin);}
  return IVecoMin;
}
TString TEcnaNumbering::GetXDirectionEB ( const Int_t &  SMNumber)

Definition at line 907 of file TEcnaNumbering.cc.

References GetSMHalfBarrel().

Referenced by TEcnaHistos::ViewEBGrid(), TEcnaHistos::ViewSMGrid(), and TEcnaHistos::ViewTowerGrid().

{
  TString xdirection = "x";      // DEFAULT

  if( GetSMHalfBarrel(SMNumber) == "EB+" ){xdirection = "x";}
  if( GetSMHalfBarrel(SMNumber) == "EB-" ){xdirection = "x";}

  return xdirection;
}
TString TEcnaNumbering::GetXDirectionEE ( const Int_t &  n1DeeNumber)

Definition at line 2408 of file TEcnaNumbering.cc.

References GetEEDeeType().

Referenced by TEcnaHistos::ViewSCGrid().

{
  TString xdirection = "x";      // DEFAULT

  if( GetEEDeeType(n1DeeNumber) == "EE+F" ){xdirection = "-x";}   //  Dee 1
  if( GetEEDeeType(n1DeeNumber) == "EE+N" ){xdirection = "-x";}   //  Dee 2
  if( GetEEDeeType(n1DeeNumber) == "EE-N" ){xdirection = "x";}    //  Dee 3
  if( GetEEDeeType(n1DeeNumber) == "EE-F" ){xdirection = "x";}    //  Dee 4

  return xdirection;
}
TString TEcnaNumbering::GetYDirectionEB ( const Int_t &  SMNumber)

Definition at line 917 of file TEcnaNumbering.cc.

References GetSMHalfBarrel().

Referenced by TEcnaHistos::ViewSMGrid(), and TEcnaHistos::ViewTowerGrid().

{
  TString ydirection = "-x";      // DEFAULT

  if( GetSMHalfBarrel(SMNumber) == "EB+" ){ydirection = "-x";}
  if( GetSMHalfBarrel(SMNumber) == "EB-" ){ydirection = "-x";}

  return ydirection;
}
TString TEcnaNumbering::GetYDirectionEE ( const Int_t &  n1DeeNumber)

Definition at line 2420 of file TEcnaNumbering.cc.

References GetEEDeeType().

{
  TString ydirection = "-x";      // DEFAULT

  if( GetEEDeeType(n1DeeNumber) == "endcap+" ){ydirection = "-x";}
  if( GetEEDeeType(n1DeeNumber) == "endcap-" ){ydirection = "-x";}

  return ydirection;
}
void TEcnaNumbering::Init ( void  ) [protected]

Definition at line 109 of file TEcnaNumbering.cc.

References fCodeChNumberingITP1Bot, fCodeChNumberingITP2Top, fCodeChNumberingLvrbBot, fCodeChNumberingLvrbTop, fEcal, fgMaxCar, fT1d_DeeSCCons, fT1d_DS, fT1d_DSSC, fT1d_ich_IX, fT1d_jch_JY, fT1d_RecovDeeSC, fT1dDeeCrys, fT1dDeeSC, fT1dSCEcha, fT1dSMCrys, fT1dSMTow, fT1dTowEcha, fT2d_DeeSCCons, fT2d_DS, fT2d_DSSC, fT2d_ich_IX, fT2d_jch_JY, fT2d_RecovDeeSC, fT2dDeeCrys, fT2dDeeSC, fT2dSCEcha, fT2dSMCrys, fT3dDeeCrys, and fTTBELL.

Referenced by TEcnaNumbering().

{
//Set default values and build crystal numbering table

  //.............................. Initialisations
  fTTBELL  = '\007';
  fgMaxCar = 512;

  //....................... Barrel
  fT2dSMCrys  = 0;
  fT1dSMCrys  = 0;
  fT1dSMTow   = 0;
  fT1dTowEcha = 0;

  fCodeChNumberingLvrbBot = "bottom";
  fCodeChNumberingLvrbTop = "top";

  //....................... Endcap
  fT3dDeeCrys     = 0;
  fT2dDeeCrys     = 0;
  fT1dDeeCrys     = 0;
  fT2dDeeSC       = 0;
  fT1dDeeSC       = 0;
  fT2dSCEcha      = 0;
  fT1dSCEcha      = 0;
  fT2d_jch_JY     = 0;
  fT1d_jch_JY     = 0;
  fT2d_ich_IX     = 0;
  fT1d_ich_IX     = 0;
  fT2d_DS         = 0;
  fT1d_DS         = 0;
  fT2d_DSSC       = 0;
  fT1d_DSSC       = 0;
  fT2d_DeeSCCons  = 0;
  fT1d_DeeSCCons  = 0;
  fT2d_RecovDeeSC = 0;
  fT1d_RecovDeeSC = 0;

  fCodeChNumberingITP1Bot = "bottom";   // ==> Type 1 Interface plate  IPT1 (a faire)
  fCodeChNumberingITP2Top = "top";      // ==> Type 2 Interface plate  IPT2 (a faire)

  //------------------ Init pointers on the CNA objects
  fEcal = 0;
}
Int_t TEcnaNumbering::MaxCrysInStinEcna ( const Int_t &  n1DeeNumber,
const Int_t &  n1DeeSCEcna,
const TString  s_option 
)

Definition at line 2586 of file TEcnaNumbering.cc.

References gather_cfg::cout, fEcal, fFlagSubDet, fTTBELL, GetDeeSCConsFrom1DeeSCEcna(), and TEcnaParEcal::MaxCrysInStin().

Referenced by TEcnaRun::AverageHighFrequencyNoise(), TEcnaRun::AverageLowFrequencyNoise(), TEcnaRun::AverageMeanCorrelationsBetweenSamples(), TEcnaRun::AveragePedestals(), TEcnaRun::AverageSigmaOfCorrelationsBetweenSamples(), TEcnaRun::AverageTotalNoise(), and TEcnaRead::ReadAverageNumberOfEvents().

{
// Number of Xtals in "Ecna SC" for not complete and not connected SC's.
// Also valid for all connected and complete SC's and for towers of EB

  Int_t max_crys = fEcal->MaxCrysInStin();   // valid for EB and for connected and complete SC's of EE

  // Number of Xtals in SC for not complete and not connected SC's

  if(fFlagSubDet == "EE")
    {
      Int_t n_for_cons = GetDeeSCConsFrom1DeeSCEcna(n1DeeNumber, n1DeeSCEcna);

      //............ not complete SC's (inner border)
      if( n_for_cons ==  12 || n_for_cons ==  67 || n_for_cons ==  75 || n_for_cons == 137 ||
          n_for_cons == 161 || n_for_cons == 216 || n_for_cons == 224 || n_for_cons == 286 ){max_crys = 20;}

      //............ not connected SC's
      if( (n_for_cons == 182 || n_for_cons ==  33) && (n1DeeSCEcna ==  60 || n1DeeSCEcna == 119) ){max_crys = 10;}

      if( (n_for_cons == 178 || n_for_cons ==  29) && (n1DeeSCEcna == 138 || n1DeeSCEcna == 157) ){max_crys = 10;}
      if( (n_for_cons == 207 || n_for_cons ==  58) && (n1DeeSCEcna == 176 || n1DeeSCEcna == 193) ){max_crys = 10;}

      if( (n_for_cons == 298 || n_for_cons == 149) && (n1DeeSCEcna == 188) ){max_crys = 10;}

      if( (n_for_cons == 261 || n_for_cons == 112) && (n1DeeSCEcna == 144 || n1DeeSCEcna == 165) ){max_crys = 10;}
      if( (n_for_cons == 268 || n_for_cons == 119) && (n1DeeSCEcna == 102 || n1DeeSCEcna == 123) ){max_crys = 10;}

      if( (n_for_cons == 281 || n_for_cons == 132) && (n1DeeSCEcna ==  41) ){max_crys = 10;}

      //............. not connected and mixed Ecna SC's
      if( s_option == "TEcnaRun" || s_option == "TEcnaRead" )
        {
          if( s_option == "TEcnaRun" )
            {
              // special translation of Xtal 11 of SCEcna 29 and 32 to respectively Xtal 11 of SCEcna 10 and 11
              if( n1DeeSCEcna == 29 || n1DeeSCEcna == 32 ){max_crys = 5;} 
              if( n1DeeSCEcna == 10 || n1DeeSCEcna == 11 ){max_crys = 1;}
            }
          if( s_option == "TEcnaRead" )
            {
              //if( n1DeeSCEcna == 29 || n1DeeSCEcna == 32 ){max_crys = 6;}
              if( n1DeeSCEcna == 29 || n1DeeSCEcna == 32 ){max_crys = 5;}
              if( n1DeeSCEcna == 10 || n1DeeSCEcna == 11 ){max_crys = 1;}
            }
        }
      else
        {
          cout << "!TEcnaNumbering::MaxCrysInStinEcna(...)> " << s_option
               << ": unknown option." << fTTBELL << endl;
        }
    }
  return max_crys;
}
Int_t TEcnaNumbering::PlusMinusSMNumber ( const Int_t &  PlusSMNumber)

Definition at line 951 of file TEcnaNumbering.cc.

References fEcal, and TEcnaParEcal::MaxSMPhiInEB().

Referenced by TEcnaWrite::NumberOfEventsAnalysis().

{
  Int_t PMSMNumber = PlusSMNumber;
  if( PlusSMNumber > fEcal->MaxSMPhiInEB() ){PMSMNumber = - PlusSMNumber + fEcal->MaxSMPhiInEB();}
  return PMSMNumber;
}
void TEcnaNumbering::SetEcalSubDetector ( const TString  SubDet,
const TEcnaParEcal pEcal 
)

Definition at line 155 of file TEcnaNumbering.cc.

References BuildBarrelCrysTable(), BuildEndcapCrysTable(), BuildEndcapSCTable(), fEcal, fFlagSubDet, fgMaxCar, and TEcnaParEcal::GetEcalSubDetector().

                                                                                      {
//Set the current subdetector flag and the current subdetector parameters

  fEcal = 0;
  if( pEcal == 0 )
    {fEcal = new TEcnaParEcal(SubDet.Data());  /*fCnew++*/ ;}
  else
    {fEcal = (TEcnaParEcal*)pEcal;}

  Int_t MaxCar = fgMaxCar;
  fFlagSubDet.Resize(MaxCar);
  fFlagSubDet = fEcal->GetEcalSubDetector();      // fFlagSubDet = "EB" or "EE"

  if( fFlagSubDet == "EB" ){BuildBarrelCrysTable();}
  if( fFlagSubDet == "EE" ){BuildEndcapCrysTable(); BuildEndcapSCTable();}
}
void TEcnaNumbering::SetEcalSubDetector ( const TString  SubDet)

Definition at line 172 of file TEcnaNumbering.cc.

References BuildBarrelCrysTable(), BuildEndcapCrysTable(), BuildEndcapSCTable(), fEcal, fFlagSubDet, fgMaxCar, and TEcnaParEcal::GetEcalSubDetector().

Referenced by TEcnaNumbering().

                                                           {
//Set the current subdetector flag and the current subdetector parameters

  Int_t MaxCar = fgMaxCar;
  fFlagSubDet.Resize(MaxCar);
  fFlagSubDet = fEcal->GetEcalSubDetector();      // fFlagSubDet = "EB" or "EE"

  if( fFlagSubDet == "EB" ){BuildBarrelCrysTable();}
  if( fFlagSubDet == "EE" ){BuildEndcapCrysTable(); BuildEndcapSCTable();}
}
Int_t TEcnaNumbering::StexEchaForCons ( const Int_t &  n1DeeNumber,
const Int_t &  i0StexEcha 
)

Member Data Documentation

Int_t TEcnaNumbering::fCdelete [private]

Definition at line 29 of file TEcnaNumbering.h.

Referenced by BuildBarrelCrysTable(), BuildEndcapCrysTable(), and ~TEcnaNumbering().

Int_t TEcnaNumbering::fCnew [private]

Definition at line 28 of file TEcnaNumbering.h.

Referenced by BuildBarrelCrysTable(), BuildEndcapCrysTable(), and BuildEndcapSCTable().

Definition at line 66 of file TEcnaNumbering.h.

Referenced by Init().

Definition at line 67 of file TEcnaNumbering.h.

Referenced by Init().

Definition at line 45 of file TEcnaNumbering.h.

Referenced by GetEta(), GetPhiInSM(), GetTowerLvrbType(), and Init().

Definition at line 46 of file TEcnaNumbering.h.

Referenced by GetEta(), GetPhiInSM(), GetTowerLvrbType(), and Init().

Int_t TEcnaNumbering::fFlagPrint [private]

Definition at line 34 of file TEcnaNumbering.h.

TString TEcnaNumbering::fFlagSubDet [private]
Int_t TEcnaNumbering::fgMaxCar [private]

Definition at line 27 of file TEcnaNumbering.h.

Referenced by Init(), and SetEcalSubDetector().

Definition at line 76 of file TEcnaNumbering.h.

Referenced by BuildEndcapSCTable(), Init(), and ~TEcnaNumbering().

Int_t* TEcnaNumbering::fT1d_DS [private]

Definition at line 70 of file TEcnaNumbering.h.

Referenced by BuildEndcapSCTable(), Init(), and ~TEcnaNumbering().

Int_t* TEcnaNumbering::fT1d_DSSC [private]

Definition at line 73 of file TEcnaNumbering.h.

Referenced by BuildEndcapSCTable(), Init(), and ~TEcnaNumbering().

Int_t* TEcnaNumbering::fT1d_ich_IX [private]

Definition at line 64 of file TEcnaNumbering.h.

Referenced by BuildEndcapCrysTable(), Init(), and ~TEcnaNumbering().

Int_t* TEcnaNumbering::fT1d_jch_JY [private]

Definition at line 61 of file TEcnaNumbering.h.

Referenced by BuildEndcapCrysTable(), Init(), and ~TEcnaNumbering().

Definition at line 79 of file TEcnaNumbering.h.

Referenced by BuildEndcapSCTable(), Init(), and ~TEcnaNumbering().

Int_t* TEcnaNumbering::fT1dDeeCrys [private]

Definition at line 52 of file TEcnaNumbering.h.

Referenced by BuildEndcapCrysTable(), Init(), and ~TEcnaNumbering().

Int_t* TEcnaNumbering::fT1dDeeSC [private]

Definition at line 55 of file TEcnaNumbering.h.

Referenced by BuildEndcapCrysTable(), Init(), and ~TEcnaNumbering().

Int_t* TEcnaNumbering::fT1dSCEcha [private]

Definition at line 58 of file TEcnaNumbering.h.

Referenced by BuildEndcapCrysTable(), Init(), and ~TEcnaNumbering().

Int_t* TEcnaNumbering::fT1dSMCrys [private]

Definition at line 41 of file TEcnaNumbering.h.

Referenced by BuildBarrelCrysTable(), Init(), and ~TEcnaNumbering().

Int_t* TEcnaNumbering::fT1dSMTow [private]

Definition at line 42 of file TEcnaNumbering.h.

Referenced by BuildBarrelCrysTable(), Get1SMTowFrom1SMCrys(), Init(), and ~TEcnaNumbering().

Int_t* TEcnaNumbering::fT1dTowEcha [private]
Int_t** TEcnaNumbering::fT2d_DeeSCCons [private]
Int_t** TEcnaNumbering::fT2d_DS [private]

Definition at line 69 of file TEcnaNumbering.h.

Referenced by BuildEndcapSCTable(), GetDSFrom1DeeSCEcna(), Init(), and ~TEcnaNumbering().

Int_t** TEcnaNumbering::fT2d_DSSC [private]

Definition at line 72 of file TEcnaNumbering.h.

Referenced by BuildEndcapSCTable(), GetDSSCFrom1DeeSCEcna(), Init(), and ~TEcnaNumbering().

Int_t** TEcnaNumbering::fT2d_ich_IX [private]

Definition at line 63 of file TEcnaNumbering.h.

Referenced by BuildEndcapCrysTable(), GetIXCrysInSC(), Init(), and ~TEcnaNumbering().

Int_t** TEcnaNumbering::fT2d_jch_JY [private]

Definition at line 60 of file TEcnaNumbering.h.

Referenced by BuildEndcapCrysTable(), GetJYCrysInSC(), Init(), and ~TEcnaNumbering().

Int_t** TEcnaNumbering::fT2dDeeCrys [private]

Definition at line 51 of file TEcnaNumbering.h.

Referenced by BuildEndcapCrysTable(), Init(), and ~TEcnaNumbering().

Int_t** TEcnaNumbering::fT2dDeeSC [private]
Int_t** TEcnaNumbering::fT2dSCEcha [private]
Int_t** TEcnaNumbering::fT2dSMCrys [private]
Int_t*** TEcnaNumbering::fT3dDeeCrys [private]
TString TEcnaNumbering::fTTBELL [private]