EMCAL_FIRSTYEARV1 - geometry for December 2009 to December 2010 run period;
authorpavlinov <pavlinov@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 27 Oct 2010 09:01:02 +0000 (09:01 +0000)
committerpavlinov <pavlinov@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 27 Oct 2010 09:01:02 +0000 (09:01 +0000)
 1. Fixed bug for positions of modules inside SM
    (first module has tilt 0.75 degree);
 2. Added Al front plate (width 1 cm) and 2 paper sheets per sampling
    layer (additional 0.2 mm)
    The sizes have updated with last information from production
    drawing (end of October 2010).

13 files changed:
EMCAL/AliCaloRawAnalyzer.h
EMCAL/AliEMCAL.cxx
EMCAL/AliEMCALEMCGeometry.cxx
EMCAL/AliEMCALEMCGeometry.h
EMCAL/AliEMCALGeoUtils.cxx
EMCAL/AliEMCALGeoUtils.h
EMCAL/AliEMCALGeometry.cxx
EMCAL/AliEMCALGeometry.h
EMCAL/AliEMCALShishKebabTrd1Module.cxx
EMCAL/AliEMCALShishKebabTrd1Module.h
EMCAL/AliEMCALv0.cxx
EMCAL/AliEMCALv0.h
EMCAL/AliEMCALv2.cxx

index 07cb884..0e2b89f 100644 (file)
@@ -81,6 +81,7 @@ class  AliCaloRawAnalyzer : public TObject
                           Double_t & mean, Double_t & rms);
 
  protected:
+public: // PAI
   short Max( const AliCaloBunchInfo *const bunch, int *const maxindex) const;
   UShort_t Max(const UShort_t *data, const int length ) const;
   bool CheckBunchEdgesForMax( const AliCaloBunchInfo *const bunch) const;
index 9525484..50e1ffa 100644 (file)
@@ -21,6 +21,7 @@
 //*-- Author: Yves Schutz (SUBATECH) 
 //
 //*-- Additional Contributions: Sahal Yacoob (LBNL/UCT)
+//                            : Alexei Pavlinov (WSU) 
 //
 //////////////////////////////////////////////////////////////////////////////
 
@@ -211,6 +212,16 @@ void AliEMCAL::CreateMaterials()
   Float_t wsteel[4] = { .715,.18,.1,.005 };
   AliMixture(4, "STAINLESS STEEL$", asteel, zsteel, 7.88, 4, wsteel);
 
+  // Oct 26,2010 : Multipurpose Copy Paper UNV-21200), weiht 75 g/m**2. 
+  // *Cellulose C6H10O5
+  //    Component C  A=12.01   Z=6.    W=6./21.
+  //    Component H  A=1.      Z=1.    W=10./21.
+  //    Component O  A=16.     Z=8.    W=5./21.
+  Float_t apaper[3] = { 12.01, 1.0, 16.0};
+  Float_t zpaper[3] = { 26.0,  1.0,  8.0};
+  Float_t wpaper[3] = {6./21., 10./21., 5./21.};
+  AliMixture(5, "BondPaper$", apaper, zpaper, 0.75, 3, wpaper);
   // DEFINITION OF THE TRACKING MEDIA
 
   // for EMCAL: idtmed[1599->1698] equivalent to fIdtmed[0->100]
@@ -237,7 +248,12 @@ void AliEMCAL::CreateMaterials()
 
   // 25-aug-04 by PAI : see  PMD/AliPMDv0.cxx for STEEL definition                 -> idtmed[1603]
   AliMedium(4, "S steel$", 4, 0, 
-             isxfld, sxmgmx, 10.0, 0.1, 0.1, 0.001, 0.001, 0, 0) ;
+             isxfld, sxmgmx, 10.0, 0.01, 0.1, 0.001, 0.001, 0, 0) ;
+
+  // Oct 26,2010                                                                   -> idtmed[1604]
+  Float_t stemax = 0.001;
+  AliMedium(5, "Paper$", 5, 0, 
+             isxfld, sxmgmx, 10.0, stemax, 0.1, 0.001, 0.001, 0, 0) ;
 
 
   //set constants for Birk's Law implentation
index 4e4aa0c..1f52cc6 100644 (file)
 //   EMCAL_COMPLETE (geometry for expected complete detector)
 //      = equivalent to SHISH_77_TRD1_2X2_FINAL_110DEG scTh=0.176 pbTh=0.144
 //          in old notation
+//
+//   EMCAL_FIRSTYEAR - geometry for December 2009 to December 2010 run period
+//                     with four Super Modules
+//  
+//   EMCAL_FIRSTYEARV1 - geometry for December 2009 to December 2010 run period; 
+//                1. Fixed bug for positions of modules inside SM
+//                   (first module has tilt 0.75 degree);
+//                2. Added Al front plate (width 1 cm) and 2 paper sheets per sampling
+//                   layer (additional 0.2 mm) 
+//                   The sizes have updated with last information from production
+//                   drawing (end of October 2010). 
+//
 //   EMCAL_WSUC (Wayne State test stand)
 //      = no definite equivalent in old notation, was only used by
 //          Aleksei, but kept for testing purposes
@@ -80,11 +92,12 @@ AliEMCALEMCGeometry::AliEMCALEMCGeometry()
     // 
     fTrd1Angle(0.),f2Trd1Dx2(0.),
     fPhiGapForSM(0.),fKey110DEG(0),fPhiBoundariesOfSM(0), fPhiCentersOfSM(0),fEtaMaxOfTRD1(0),
+    fTrd1AlFrontThick(0.0), fTrd1BondPaperThick(0.),
     fCentersOfCellsEtaDir(0), fCentersOfCellsXDir(0),fCentersOfCellsPhiDir(0),
     fEtaCentersOfCells(0),fPhiCentersOfCells(0),fShishKebabTrd1Modules(0),
-    fILOSS(-1), fIHADR(-1),
+    fParSM(), fILOSS(-1), fIHADR(-1),
     //obsolete member data
-    fAlFrontThick(0.), fGap2Active(0.), fSteelFrontThick(0.), fTrd2AngleY(0.),
+     fGap2Active(0.), fSteelFrontThick(0.), fTrd2AngleY(0.),
     f2Trd2Dy2(0.), fEmptySpace(0.), fTubsR(0.), fTubsTurnAngle(0.)
 { 
   // default ctor only for internal usage (singleton)
@@ -110,11 +123,12 @@ AliEMCALEMCGeometry::AliEMCALEMCGeometry(const Text_t* name, const Text_t* title
     // 
     fTrd1Angle(0.),f2Trd1Dx2(0.),
     fPhiGapForSM(0.),fKey110DEG(0),fPhiBoundariesOfSM(0), fPhiCentersOfSM(0), fEtaMaxOfTRD1(0),
+    fTrd1AlFrontThick(0.0), fTrd1BondPaperThick(0.),
     fCentersOfCellsEtaDir(0),fCentersOfCellsXDir(0),fCentersOfCellsPhiDir(0),
     fEtaCentersOfCells(0),fPhiCentersOfCells(0),fShishKebabTrd1Modules(0),
-    fILOSS(-1), fIHADR(-1), 
+    fParSM(),fILOSS(-1), fIHADR(-1), 
     //obsolete member data
-    fAlFrontThick(0.), fGap2Active(0.), fSteelFrontThick(0.), fTrd2AngleY(0.),
+    fGap2Active(0.), fSteelFrontThick(0.), fTrd2AngleY(0.),
     f2Trd2Dy2(0.), fEmptySpace(0.), fTubsR(0.), fTubsTurnAngle(0.)
 {
   // ctor only for internal usage (singleton)
@@ -177,6 +191,8 @@ AliEMCALEMCGeometry::AliEMCALEMCGeometry(const AliEMCALEMCGeometry& geom)
     fPhiBoundariesOfSM(geom.fPhiBoundariesOfSM),
     fPhiCentersOfSM(geom.fPhiCentersOfSM),
     fEtaMaxOfTRD1(geom.fEtaMaxOfTRD1),
+    fTrd1AlFrontThick(geom.fTrd1AlFrontThick),
+    fTrd1BondPaperThick(geom.fTrd1BondPaperThick),
     fCentersOfCellsEtaDir(geom.fCentersOfCellsEtaDir),
     fCentersOfCellsXDir(geom.fCentersOfCellsXDir),
     fCentersOfCellsPhiDir(geom.fCentersOfCellsPhiDir),
@@ -185,7 +201,6 @@ AliEMCALEMCGeometry::AliEMCALEMCGeometry(const AliEMCALEMCGeometry& geom)
     fShishKebabTrd1Modules(geom.fShishKebabTrd1Modules),
     fILOSS(geom.fILOSS), fIHADR(geom.fIHADR),
     //obsolete member data
-    fAlFrontThick(geom.fAlFrontThick),
     fGap2Active(geom.fGap2Active),
     fSteelFrontThick(geom.fSteelFrontThick),
     fTrd2AngleY(geom.fTrd2AngleY),
@@ -307,9 +322,24 @@ void AliEMCALEMCGeometry::Init(void){
 
   //In 2009-2010 data taking runs only 4 SM, in the upper position.
   if(fGeoName.Contains("FIRSTYEAR")){  
-       fNumberOfSuperModules = 4;      
-       fArm1PhiMax           = 120.0; 
-       CheckAdditionalOptions();       
+    fNumberOfSuperModules = 4; 
+    fArm1PhiMax           = 120.0; 
+    if(fGeoName.Contains("FIRSTYEARV1")){
+      // Oct 26,2010 : First module has tilt = 0.75 degree : 
+      // look to AliEMCALShishKebabTrd1Module::DefineFirstModule(key)
+      // New sizes from production drawing, added Al front plate.
+      // The thickness of sampling is change due to existing two sheets of paper.
+
+      // Will replace fFrontSteelStrip
+      fTrd1AlFrontThick   = 1.0;  // one cm
+      // Bond paper - two sheets around Sc tile
+      fTrd1BondPaperThick = 0.01; // 0.01cm = 0.1 mm
+
+      fPhiModuleSize = 12.0;
+      fEtaModuleSize = fPhiModuleSize;
+      fLateralSteelStrip = 0.015; // 0.015cm  = 0.15mm
+    }
+    CheckAdditionalOptions();  
   }    
        
   // constant for transition absid <--> indexes
@@ -325,7 +355,13 @@ void AliEMCALEMCGeometry::Init(void){
   fEtaTileSize = fEtaModuleSize/double(fNETAdiv) - fLateralSteelStrip; // 13-may-05 
 
   fLongModuleSize = fNECLayers*(fECScintThick + fECPbRadThickness);  
+  if(fGeoName.Contains("FIRSTYEARV1")){
+    Double_t ws = fECScintThick + fECPbRadThickness + 2.*fTrd1BondPaperThick; // sampling width
+    // Number of Pb tiles = Number of Sc tiles - 1
+    fLongModuleSize = fTrd1AlFrontThick + (ws*fNECLayers - fECPbRadThickness);
+  }
   f2Trd1Dx2 = fEtaModuleSize + 2.*fLongModuleSize*TMath::Tan(fTrd1Angle*TMath::DegToRad()/2.);
+
   if(!fGeoName.Contains("WSUC")) fShellThickness  = TMath::Sqrt(fLongModuleSize*fLongModuleSize + f2Trd1Dx2*f2Trd1Dx2);
 
   //These parameters are used to create the mother volume to hold the supermodules
@@ -409,6 +445,8 @@ void AliEMCALEMCGeometry::PrintGeometry()
   printf(" fILOSS %i : fIHADR %i \n", fILOSS, fIHADR);
   printf(" fTrd1Angle %7.4f\n", fTrd1Angle);
   printf(" f2Trd1Dx2  %7.4f\n",  f2Trd1Dx2);
+  printf(" fTrd1AlFrontThick   %7.4f \n", fTrd1AlFrontThick);
+  printf(" fTrd1BondPaperThick %5.4f \n", fTrd1BondPaperThick);
   printf("SM dimensions(TRD1) : dx %7.2f dy %7.2f dz %7.2f (SMOD, BOX)\n", 
         fParSM[0],fParSM[1],fParSM[2]);
   printf(" fPhiGapForSM  %7.4f cm (%7.4f <- phi size in degree)\n",  
index bfeec46..707dd2a 100644 (file)
@@ -47,9 +47,9 @@ public:
   //
   Bool_t IsInitialized(void) const { return fgInit ; }
   static const Char_t* GetDefaultGeometryName() {return fgkDefaultGeometryName;}
-  void   PrintGeometry();                                            //*MENU*  
+  void   PrintGeometry();        //*MENU*  
   
-  void   Init(void);                           // initializes the parameters of EMCAL
+  void   Init(void);                     // initializes the parameters of EMCAL
   void   CheckAdditionalOptions();        //
   void   DefineSamplingFraction();        // Jun 5, 2006
 
@@ -91,6 +91,8 @@ public:
   Float_t GetTrd1Angle() const {return fTrd1Angle;}
   Float_t Get2Trd1Dx2()  const {return f2Trd1Dx2;}
   Float_t GetEtaMaxOfTRD1() const {return fEtaMaxOfTRD1;}
+  Float_t GetTrd1AlFrontThick() const { return fTrd1AlFrontThick;}
+  Float_t GetTrd1BondPaperThick() const {return fTrd1BondPaperThick;}
   // --
   Int_t   GetNCellsInSupMod() const {return fNCellsInSupMod;}
   Int_t   GetNCellsInModule()  const {return fNCellsInModule; }
@@ -154,15 +156,14 @@ public:
 
   //////////////////////////////////////////////////
   // Obsolete methods to be thrown out when feasible
-  Float_t GetAlFrontThickness() const { return fAlFrontThick;}
   Float_t GetGap2Active() const {return  fGap2Active ;}
   Float_t GetSteelFrontThickness() const { return fSteelFrontThick;}
   Float_t GetTrd2AngleY()const {return fTrd2AngleY;}
   Float_t Get2Trd2Dy2()  const {return f2Trd2Dy2;}
   Float_t GetTubsR()     const {return fTubsR;}
   Float_t GetTubsTurnAngle() const {return fTubsTurnAngle;}
-  Float_t GetIP2ECASection() const { return ( GetIPDistance() + GetAlFrontThickness() 
-                                             + GetGap2Active() ) ; }   
+  //  Float_t GetIP2ECASection() const { return ( GetIPDistance() + GetAlFrontThickness() 
+  //                                         + GetGap2Active() ) ; }   
   //////////////////////////////////////////////////
 
   static Bool_t  fgInit;               // Tells if geometry has been succesfully set up.
@@ -228,6 +229,9 @@ private:
   TArrayD fPhiBoundariesOfSM;            // phi boundaries of SM in rad; size is fNumberOfSuperModules;
   TArrayD fPhiCentersOfSM;                // phi of centers of SMl size is fNumberOfSuperModules/2
   Float_t fEtaMaxOfTRD1;                 // max eta in case of TRD1 geometry (see AliEMCALShishKebabTrd1Module)
+  // Oct 26,2010
+  Float_t fTrd1AlFrontThick;            // Thickness of the Al front plate  
+  Float_t fTrd1BondPaperThick;          // Thickness of the Bond Paper sheet  
   // Local Coordinates of SM
   TArrayD fCentersOfCellsEtaDir;        // size fNEta*fNETAdiv (for TRD1 only) (eta or z in SM, in cm)
   TArrayD fCentersOfCellsXDir;          // size fNEta*fNETAdiv (for TRD1 only) (       x in SM, in cm)
@@ -246,7 +250,6 @@ private:
   ////////////////////////////////////////////////////////////
   //Obsolete member data that will be thrown out when feasible
   //
-  Float_t fAlFrontThick;               // Thickness of the front Al face of the support box  
   Float_t fGap2Active;                 // Gap between the envelop and the active material
   Float_t fSteelFrontThick;             // Thickness of the front stell face of the support box - 9-sep-04
   // TRD2 options - 27-jan-07
@@ -259,7 +262,7 @@ private:
 
   ///////////////////////////////////////////////////////////
 
-  ClassDef(AliEMCALEMCGeometry, 1) // EMCAL geometry class 
+  ClassDef(AliEMCALEMCGeometry, 2) // EMCAL geometry class 
 };
 
 #endif // AliEMCALEMCGEOMETRY_H
index 95492ee..2bc00ad 100644 (file)
@@ -301,6 +301,16 @@ void AliEMCALGeoUtils::PrintCellIndexes(Int_t absId, int pri, const char *tit) c
   }
 }
 
+void AliEMCALGeoUtils::PrintLocalTrd1(Int_t pri) const
+{
+  // For comparing with numbers from drawing
+  for(Int_t i=0; i<GetShishKebabTrd1Modules()->GetSize(); i++){
+    printf(" %s | ", GetShishKebabModule(i)->GetName());
+    if(i==0 && pri<1) GetShishKebabModule(i)->PrintShish(1);
+    else     GetShishKebabModule(i)->PrintShish(pri);
+  }
+}
+
 //________________________________________________________________________________________________
 void AliEMCALGeoUtils::EtaPhiFromIndex(Int_t absId,Double_t &eta,Double_t &phi) const
 {
@@ -660,6 +670,7 @@ void AliEMCALGeoUtils::CreateListOfTrd1Modules()
   // Generate the list of Trd1 modules
   // which will make up the EMCAL
   // geometry
+  // key: look to the AliEMCALShishKebabTrd1Module::
 
   AliDebug(2,Form(" AliEMCALGeometry::CreateListOfTrd1Modules() started "));
 
@@ -1449,5 +1460,3 @@ void AliEMCALGeoUtils::RecalculateTowerPosition(Float_t drow, Float_t dcol, cons
   }
   
 }
-
-
index f7818bd..e71b3f1 100644 (file)
@@ -44,6 +44,7 @@ public:
 
   void PrintGeometry(); 
   void PrintCellIndexes(Int_t absId=0, int pri=0, const char *tit="") const ;  //*MENU*
+  void PrintLocalTrd1(Int_t pri=0) const;  //*MENU*
   virtual void Browse(TBrowser* b);
   virtual Bool_t  IsFolder() const;
 
@@ -211,9 +212,9 @@ protected:
   Float_t  fIPDistance;                         // Radial Distance of the inner surface of the EMCAL
   Float_t  fLongModuleSize;          // Size of long module
   // Geometry Parameters
-  Float_t  fShellThickness;                 // Total thickness in (x,y) direction
-  Float_t  fZLength;                        // Total length in z direction
-  Float_t  fSampling;                       // Sampling factor
+  Float_t  fShellThickness;         // Total thickness in (x,y) direction
+  Float_t  fZLength;                // Total length in z direction
+  Float_t  fSampling;               // Sampling factor
 
   Int_t    fFastOR2DMap[48][64];        // FastOR 2D Map over full EMCal
        
index 34b45f2..59b2445 100644 (file)
 //   EMCAL_COMPLETE (geometry for expected complete detector)
 //      = equivalent to SHISH_77_TRD1_2X2_FINAL_110DEG scTh=0.176 pbTh=0.144
 //          in old notation
+//   EMCAL_4SMs - geometry for December 2009 to December 2010 run period; 
+//                fixed bug for positions of modules inside SM
+//                (first module has tilt 0.75 degree);
+//                the sizes updated with last information from production
+//                drawing (end of October 2010). 
+//                
+//
 //   EMCAL_WSUC (Wayne State test stand)
 //      = no definite equivalent in old notation, was only used by
 //          Aleksei, but kept for testing purposes
@@ -45,7 +52,7 @@
 //*-- Author: Sahal Yacoob (LBL / UCT)
 //     and  : Yves Schutz (SUBATECH)
 //     and  : Jennifer Klay (LBL)
-//     and  : Aleksei Pavlinov (WSU) 
+//     and  : Alexei Pavlinov (WSU) 
 //
 
 //--- Root header files ---
index 4673f9b..787ef4c 100644 (file)
@@ -11,7 +11,7 @@
 //                  
 //*-- Author: Sahal Yacoob (LBL / UCT)
 //*--   and : Yves Schutz (Subatech)
-//*--   and : Aleksei Pavlinov (WSU) - shashlyk staff
+//*--   and : Alexei Pavlinov (WSU) - shashlyk staff
 //*--   and : Gustavo Conesa: Add TRU mapping. TRU parameters still not fixed.
 
 // --- ROOT system ---
@@ -100,7 +100,9 @@ public:
   Float_t  GetLongModuleSize(void) const {return fEMCGeometry->GetLongModuleSize();}
   Float_t  GetTrd1Angle(void) const {return fEMCGeometry->GetTrd1Angle();}
   Float_t  Get2Trd1Dx2(void)  const {return fEMCGeometry->Get2Trd1Dx2();}
-  // --
+  Float_t  GetTrd1AlFrontThick() const {return fEMCGeometry->GetTrd1AlFrontThick();}
+  Float_t  GetTrd1BondPaperThick() const {return fEMCGeometry->GetTrd1BondPaperThick();}
+   // --
   Int_t    GetNCellsInSupMod(void) const {return fEMCGeometry->GetNCellsInSupMod();}
   Int_t    GetNCellsInModule(void)  const {return fEMCGeometry->GetNCellsInModule(); }
   Int_t    GetKey110DEG(void)      const {return fEMCGeometry->GetKey110DEG();}
@@ -145,28 +147,19 @@ public:
   void SetNTRUEta(Int_t ntru) { fEMCGeometry->SetNTRUEta(ntru);}
   void SetNTRUPhi(Int_t ntru) { fEMCGeometry->SetNTRUPhi(ntru);}
   void SetSampling(Float_t samp) { fEMCGeometry->SetSampling(samp);}
-  
-/*   /////////////////// */
-/*   // useful utilities */
-/*   // */
-/*   Float_t AngleFromEta(Float_t eta) const { // returns theta in radians for a given pseudorapidity */
-/*     return 2.0*TMath::ATan(TMath::Exp(-eta)); */
-/*   } */
-/*   Float_t ZFromEtaR(Float_t r,Float_t eta) const { // returns z in for a given */
-/*     // pseudorapidity and r=sqrt(x*x+y*y). */
-/*     return r/TMath::Tan(AngleFromEta(eta)); */
-/*   } */
+
+  void PrintGeometry() {fEMCGeometry->PrintGeometry();}  //*MENU*  
 
   //////////////////////////////////////////////////
   // Obsolete methods to be thrown out when feasible
-  Float_t GetAlFrontThickness(void) const { return fEMCGeometry->GetAlFrontThickness();}
   Float_t GetGap2Active(void) const {return  fEMCGeometry->GetGap2Active();}
   Float_t GetSteelFrontThickness(void) const { return fEMCGeometry->GetSteelFrontThickness();}
   Float_t GetTrd2AngleY(void) const {return fEMCGeometry->GetTrd2AngleY();}
   Float_t Get2Trd2Dy2(void)  const {return fEMCGeometry->Get2Trd2Dy2();}
   Float_t GetTubsR(void)     const {return fEMCGeometry->GetTubsR();}
   Float_t GetTubsTurnAngle(void) const {return fEMCGeometry->GetTubsTurnAngle();}
-  Float_t GetIP2ECASection(void) const { return fEMCGeometry->GetIP2ECASection(); }   
+  //Float_t GetAlFrontThickness(void) const { return fEMCGeometry->GetAlFrontThickness();}
+  //  Float_t GetIP2ECASection(void) const { return fEMCGeometry->GetIP2ECASection(); }   
   //////////////////////////////////////////////////
 
 protected:
index 1358387..9f31892 100644 (file)
@@ -1,5 +1,5 @@
 /**************************************************************************
- * Copyright(c) 1998-2004, ALICE Experiment at CERN, All rights reserved. *
+ * Copyright(c) 1998-2010, ALICE Experiment at CERN, All rights reserved. *
  *                                                                        *
  * Author: The ALICE Off-line Project.                                    *
  * Contributors are mentioned in the code where appropriate.              *
@@ -17,8 +17,8 @@
 
 //_________________________________________________________________________
 // Main class for TRD1 geometry of Shish-Kebab case.
-// Author: Aleksei Pavlinov(WSU).
-// Sep 20004 - Nov 2006
+// Author: Alexei Pavlinov(WSU).
+// Sep 20004 - Nov 2006; Apr 2010
 // See web page with description of Shish-Kebab geometries:
 // http://pdsfweb01.nersc.gov/~pavlinov/ALICE/SHISHKEBAB/RES/shishkebabALICE.html
 // Nov 9,2006 - added case of 3X3
@@ -60,13 +60,14 @@ AliEMCALShishKebabTrd1Module::AliEMCALShishKebabTrd1Module(Double_t theta, AliEM
     fORB(), 
     fORT()
 { 
-  // theta in radians ; first object shold be with theta=pi/2.
-  fTheta = TMath::PiOver2();
+  TString snam(g->GetName());
+  Int_t key=0;
+  if(snam.Contains("FIRSTYEARv1",TString::kIgnoreCase)) key=1;
   if(GetParameters()) {
-    DefineFirstModule();
+    DefineFirstModule(key);
   }
   DefineName(fTheta);
-  AliDebug(1,Form("AliEMCALShishKebabTrd1Module - first module:  theta %1.4f geometry %s",fTheta,g->GetName()));  
+  printf("AliEMCALShishKebabTrd1Module - first module key=%i:  theta %1.4f geometry %s\n",key,fTheta, g->GetName());
 }
 
 //_____________________________________________________________________________
@@ -198,17 +199,44 @@ void AliEMCALShishKebabTrd1Module::DefineAllStaff()
 }
 
 //_____________________________________________________________________________
-void AliEMCALShishKebabTrd1Module::DefineFirstModule()
+void AliEMCALShishKebabTrd1Module::DefineFirstModule(const Int_t key)
 {
-  // Define first module
-  fOK.Set(fga2/2., fgr + fgb/2.); // position the center of module vs o
+  //    Oct 23-25, 2010
+  //  key=0 - zero tilt of first module;
+  //  key=1 - angle=fgangle/2 = 0.75 degree.
+  //  This is what we have in produced SM. 
 
-  // parameters of right line : y = A*z + B in system where zero point is IP.
-  fThetaA = fTheta - fgangle/2.;
-  fA      = TMath::Tan(fThetaA);
-  Double_t xA = fga/2. + fga2/2., yA = fgr;
-  fB = yA - fA*xA;
+  // Define first module
+  if(key==0) {
+    // theta in radians ; first object theta=pi/2.
+    fTheta = TMath::PiOver2();
+    fOK.Set(fga2/2., fgr + fgb/2.); // position the center of module vs o
+
+    // parameters of right line : y = A*z + B in system where zero point is IP.
+    fThetaA = fTheta - fgangle/2.;
+    fA      = TMath::Tan(fThetaA);
+    Double_t xA = fga/2. + fga2/2.;
+    Double_t yA = fgr;
+    fB = yA - fA*xA;
+
+  } else if(key==1) {
+    // theta in radians ; first object theta = 90-0.75 = 89.25 degree
+    fTheta = 89.25*TMath::DegToRad();
+    Double_t al1 = fgangle/2.;
+    Double_t x = 0.5*(fga*TMath::Cos(al1) + fgb*TMath::Sin(al1));
+    Double_t y = 0.5*(fgb + fga*TMath::Sin(al1))*TMath::Cos(al1);
+    fOK.Set(x, fgr + y);
+    // parameters of right line : y = A*z + B in system where zero point is IP.
+    fThetaA = fTheta - fgangle/2.;
+    fA      = TMath::Tan(fThetaA);
+    Double_t xA = fga*TMath::Cos(al1);
+    Double_t yA = fgr;
+    fB = yA - fA*xA;
 
+  } else {
+    printf("<E> key=%i : wrong case \n",key);
+    assert(0);
+  }
   TObject::SetUniqueID(1); //
 
   DefineAllStaff();
@@ -253,14 +281,18 @@ Bool_t AliEMCALShishKebabTrd1Module::GetParameters()
 void AliEMCALShishKebabTrd1Module::PrintShish(int pri) const
 {
   // service method
-  if(pri>=0) {
-    printf("PrintShish() \n a %7.3f:%7.3f | b %7.2f | r %7.2f \n TRD1 angle %7.6f(%5.2f) | tanBetta %7.6f", 
-    fga, fga2, fgb, fgr, fgangle, fgangle*TMath::RadToDeg(), fgtanBetta);
-    printf(" fTheta %f : %5.2f : cos(theta) %f\n", 
-    fTheta, GetThetaInDegree(),TMath::Cos(fTheta)); 
-    if(pri>=1) {
-      printf(" %i |%s| theta %f :  fOK.Phi = %f(%5.2f)\n", 
+  if(pri>=0) { 
+    if(pri >= 1) {
+      printf("PrintShish() \n a %7.3f:%7.3f | b %7.2f | r %7.2f \n TRD1 angle %7.6f(%5.2f) | tanBetta %7.6f", 
+      fga, fga2, fgb, fgr, fgangle, fgangle*TMath::RadToDeg(), fgtanBetta);
+      printf(" fTheta %f : %5.2f : cos(theta) %f\n", 
+      fTheta, GetThetaInDegree(),TMath::Cos(fTheta)); 
+      printf(" OK : %i |%s| theta %f :  phi = %f(%5.2f) \n", 
       GetUniqueID(), GetName(), fTheta, fOK.Phi(),fOK.Phi()*TMath::RadToDeg());
+    }
+    printf(" y %9.3f x %9.3f xrb %9.3f (right bottom on r=%9.3f ) \n", 
+          fOK.X(), fOK.Y(), fORB.X(),fORB.Y());
+    if(pri>=2) {
       printf(" A %f B %f | fThetaA %7.6f(%5.2f)\n", fA,fB, fThetaA,fThetaA*TMath::RadToDeg());
       printf(" fOK  : X %9.4f: Y %9.4f : eta  %5.3f\n",  fOK.X(), fOK.Y(), GetEtaOfCenterOfModule());
       printf(" fOK1 : X %9.4f: Y %9.4f :   (local, ieta=2)\n", fOK1.X(), fOK1.Y());
@@ -307,8 +339,9 @@ void AliEMCALShishKebabTrd1Module::GetPositionAtCenterCellLine(Int_t ieta, Doubl
   }
   x = v.X() + TMath::Cos(theta) * dist;
   y = v.Y() + TMath::Sin(theta) * dist;
+  //  printf(" GetPositionAtCenterCellLine() %s : dist %f : ieta %i : x %f %f v.X() | y %f %f v.Y() : cos %f sin %f \n", 
+  //GetName(), dist, ieta, v.X(),x, y,v.Y(),TMath::Cos(theta),TMath::Sin(theta));
   v.Set(x,y);
-  //printf(" GetPositionAtCenterCellLine() : dist %f : ieta %i : x %f | y %f \n", dist, ieta, x, y);
 }  
 
 
index c8a0c95..3ceb853 100644 (file)
@@ -1,14 +1,14 @@
 #ifndef ALIEMCALSHISHKEBABTRD1MODULE_H
 #define ALIEMCALSHISHKEBABTRD1MODULE_H
 
-/* Copyright(c) 1998-2004, ALICE Experiment at CERN, All rights reserved. *
+/* Copyright(c) 1998-2010, ALICE Experiment at CERN, All rights reserved. *
  * See cxx source for full Copyright notice                               */
 
 /* $Id$ */
 //_________________________________________________________________________
 // Main class for TRD1 geometry of Shish-Kebab case.
-// Author: Aleksei Pavlinov(WSU).
-// Nov 2004; Feb 2006
+// Author: Alexei Pavlinov(WSU).
+// Nov 2004; Feb 2006; Apr 2010; Oct 23, 2010
 
 #include <TNamed.h>
 #include <TMath.h>
@@ -32,7 +32,7 @@ class AliEMCALShishKebabTrd1Module : public TNamed {
   virtual ~AliEMCALShishKebabTrd1Module(void) {}
   Bool_t GetParameters();
   void DefineName(Double_t theta);
-  void DefineFirstModule();
+  void DefineFirstModule(const Int_t key=0); // key=0-zero tilt of first module
 
   Double_t GetTheta() const {return fTheta;}
   TVector2& GetCenterOfModule() {return fOK;}
@@ -92,7 +92,7 @@ class AliEMCALShishKebabTrd1Module : public TNamed {
   static Double_t fga;        // 2*dx1=2*dy1
   static Double_t fga2;       // 2*dx2
   static Double_t fgb;        // 2*dz1
-  static Double_t fgangle;    // ~1 degree
+  static Double_t fgangle;    // in rad (1.5 degree)
   static Double_t fgtanBetta; // tan(fgangle/2.)
   static Double_t fgr;        // radius to IP
 
index 7562371..21ef3ec 100644 (file)
@@ -21,7 +21,7 @@
 // This class places a Geometry of the EMCAL in the ALICE Detector as defined in AliEMCALGeometry.cxx                 
 //*-- Author: Yves Schutz (SUBATECH)
 //*-- and   : Sahal Yacoob (LBL / UCT)
-//          : Aleksei Pavlinov (WSU)     SHASHLYK
+//          : Alexei Pavlinov (WSU)     SHASHLYK
 
 // --- ROOT system ---
 #include <cassert>
 
 ClassImp(AliEMCALv0)
 
-// EMCAL material
+// EMCAL material: look to the AliEMCAL.cxx
 enum
  {
   kIdAIR   = 1599, 
   kIdPB    = 1600, 
   kIdSC    = 1601, 
-  kIdSTEEL = 1603
+  kIdAL    = 1602, 
+  kIdSTEEL = 1603,
+  kIdPAPER = 1604
  };
 
 
@@ -89,8 +91,14 @@ AliEMCALv0::AliEMCALv0(const char *name, const char *title)
   TString ntmp(GetTitle());
   ntmp.ToUpper();
 
-  AliEMCALGeometry *geom = GetGeometry() ; 
-  fShishKebabModules = geom->GetShishKebabTrd1Modules(); 
+  AliEMCALGeometry *g = GetGeometry() ; 
+  TString gn(g->GetName()); gn.ToUpper();
+  fShishKebabModules = g->GetShishKebabTrd1Modules(); 
+  fGeometry = g;
+  fSampleWidth = double(g->GetECPbRadThick()+g->GetECScintThick());
+  if(gn.Contains("FIRSTYEARV1")) fSampleWidth += 2.*g->GetTrd1BondPaperThick();
+  printf("<I> AliEMCALv0::AliEMCALv : fGeometry %p : gMC %p : fSampleWidth %5.4f\n", 
+        fGeometry, gMC, fSampleWidth);
 }
 
 //______________________________________________________________________
@@ -194,9 +202,11 @@ void AliEMCALv0::Init(void)
 //______________________________________________________________________
 void AliEMCALv0::CreateShishKebabGeometry()
 {  
+  // Oct 26,2010
   // TRD1
   AliEMCALGeometry * g = GetGeometry(); 
   TString gn(g->GetName()); gn.ToUpper(); 
+  Double_t trd1Angle = g->GetTrd1Angle()*TMath::DegToRad(), tanTrd1 = TMath::Tan(trd1Angle/2.);
   // see AliModule::fFIdTmedArr
   //  fIdTmedArr = fIdtmed->GetArray() - 1599 ; // see AliEMCAL::::CreateMaterials()
   //  int kIdAIR=1599, kIdPB = 1600, kIdSC = 1601, kIdSTEEL = 1603;
@@ -212,12 +222,24 @@ void AliEMCALv0::CreateShishKebabGeometry()
   // Sensitive SC  (2x2 tiles)
   double parSCM0[5]={0,0,0,0}, *dummy = 0, parTRAP[11];
 
-  //      double wallThickness = g->GetPhiModuleSize()/2. -  g->GetPhiTileSize(); // Need check
-  double wallThickness = g->GetPhiModuleSize()/g->GetNPHIdiv() -  g->GetPhiTileSize();
-  for(int i=0; i<3; i++) parSCM0[i] = fParEMOD[i] - wallThickness;
-  parSCM0[3] = fParEMOD[3];
-  gMC->Gsvolu("SCM0", "TRD1", fIdTmedArr[kIdAIR], parSCM0, 4);
-  gMC->Gspos("SCM0", 1, "EMOD", 0., 0., 0., 0, "ONLY") ;
+  if(!gn.Contains("FIRSTYEARV1")) {
+    double wallThickness = g->GetPhiModuleSize()/g->GetNPHIdiv() -  g->GetPhiTileSize();
+    for(int i=0; i<3; i++) parSCM0[i] = fParEMOD[i] - wallThickness;
+    parSCM0[3] = fParEMOD[3];
+    gMC->Gsvolu("SCM0", "TRD1", fIdTmedArr[kIdAIR], parSCM0, 4);
+    gMC->Gspos("SCM0", 1, "EMOD", 0., 0., 0., 0, "ONLY") ;
+  } else {
+    double wTh = g->GetLateralSteelStrip();
+    parSCM0[0] = fParEMOD[0] - wTh + tanTrd1*g->GetTrd1AlFrontThick();
+    parSCM0[1] = fParEMOD[1] - wTh;
+    parSCM0[2] = fParEMOD[2] - wTh;
+    parSCM0[3] = fParEMOD[3] - g->GetTrd1AlFrontThick()/2.;
+    gMC->Gsvolu("SCM0", "TRD1", fIdTmedArr[kIdAIR], parSCM0, 4);
+    double zshift = g->GetTrd1AlFrontThick()/2.;
+    gMC->Gspos("SCM0", 1, "EMOD", 0., 0., zshift, 0, "ONLY");
+    // 
+    CreateAlFrontPlate("EMOD","ALFP");
+  }
 
   if(g->GetNPHIdiv()==2 && g->GetNETAdiv()==2) {
     // Division to tile size - 1-oct-04
@@ -250,24 +272,53 @@ void AliEMCALv0::CreateShishKebabGeometry()
     gMC->Gspos("SCMX", 2, "SCMY", xpos, 0.0, 0.0, fIdRotm, "ONLY");
     // put LED to the SCM0 
     AliEMCALShishKebabTrd1Module *mod = (AliEMCALShishKebabTrd1Module*)fShishKebabModules->At(0);
-    gMC->Gsvolu("PBTI", "BOX", fIdTmedArr[kIdPB], dummy, 0);
-    
-    par[1] = parSCM0[2]/2;            // y 
-    par[2] = g->GetECPbRadThick()/2.; // z
+    Double_t tanBetta = mod->GetTanBetta();
 
-    int nr=0;
+    int nr=0; 
     ypos = 0.0; 
-    zpos = -fSampleWidth*g->GetNECLayers()/2. + g->GetECPbRadThick()/2.;
     double xCenterSCMX =  (parTRAP[4] +  parTRAP[8])/2.;
-    AliDebug(2,Form(" Pb tiles \n"));
-    for(int iz=0; iz<g->GetNECLayers(); iz++){
-      par[0] = (parSCM0[0] + mod->GetTanBetta()*fSampleWidth*iz)/2.;
-      xpos   = par[0] - xCenterSCMX;
-      gMC->Gsposp("PBTI", ++nr, "SCMX", xpos, ypos, zpos, 0, "ONLY", par, 3) ;
-      AliDebug(3,Form(" %i xpos %f zpos %f par[0] %f \n", iz+1, xpos, zpos, par[0]));
-      zpos += fSampleWidth;
-    } 
-    AliDebug(2,Form(" Number of Pb tiles in SCMX %i \n", nr));
+    if(!gn.Contains("FIRSTYEARV1")) {
+      par[1] = parSCM0[2]/2;            // y 
+      par[2] = g->GetECPbRadThick()/2.; // z
+      gMC->Gsvolu("PBTI", "BOX", fIdTmedArr[kIdPB], dummy, 0);
+      zpos = -fSampleWidth*g->GetNECLayers()/2. + g->GetECPbRadThick()/2.;
+      AliDebug(2,Form(" Pb tiles \n"));
+      for(int iz=0; iz<g->GetNECLayers(); iz++){
+        par[0] = (parSCM0[0] + tanBetta*fSampleWidth*iz)/2.;
+        xpos   = par[0] - xCenterSCMX;
+        gMC->Gsposp("PBTI", ++nr, "SCMX", xpos, ypos, zpos, 0, "ONLY", par, 3) ;
+        AliDebug(3,Form(" %i xpos %f zpos %f par[0] %f \n", iz+1, xpos, zpos, par[0]));
+        zpos += fSampleWidth;
+      } 
+      AliDebug(2,Form(" Number of Pb tiles in SCMX %i \n", nr));
+    } else {
+      // Oct 26, 2010
+      // First sheet of paper
+      par[1] = parSCM0[2]/2.;                 // y 
+      par[2] = g->GetTrd1BondPaperThick()/2.; // z
+      par[0] = parSCM0[0]/2.;                 // x 
+      gMC->Gsvolu("PAP1", "BOX", fIdTmedArr[kIdPAPER], par, 3);
+      xpos = par[0] - xCenterSCMX;
+      zpos = -parSCM0[3] + g->GetTrd1BondPaperThick()/2.;
+      gMC->Gspos("PAP1", 1, "SCMX", xpos, ypos, zpos, 0, "ONLY");
+      for(int iz=0; iz<g->GetNECLayers()-1; iz++){
+        nr = iz + 1;
+        Double_t dz = g->GetECScintThick() + g->GetTrd1BondPaperThick() + fSampleWidth*iz;
+       // PB + 2 paper sheets
+        par[2] = g->GetECPbRadThick()/2. + g->GetTrd1BondPaperThick(); // z
+        par[0] = (parSCM0[0] + tanBetta*dz)/2.;
+        TString pa(Form("PA%2.2i",nr));
+       gMC->Gsvolu(pa.Data(), "BOX", fIdTmedArr[kIdPAPER], par, 3);
+        xpos   = par[0] - xCenterSCMX;
+        zpos   = -parSCM0[3] + dz + par[2];
+        gMC->Gspos(pa.Data(), 1, "SCMX", xpos, ypos, zpos, 0, "ONLY") ;
+       // Pb
+        TString pb(Form("PB%2.2i",nr));
+        par[2] = g->GetECPbRadThick()/2.; // z
+       gMC->Gsvolu(pb.Data(), "BOX", fIdTmedArr[kIdPB], par, 3);
+        gMC->Gspos(pb.Data(), 1, pa.Data(), 0.0, 0.0, 0.0, 0, "ONLY") ;
+      } 
+    }
     
   } else if(g->GetNPHIdiv()==3 && g->GetNETAdiv()==3) {
     printf(" before AliEMCALv0::Trd1Tower3X3() : parSCM0");
@@ -294,7 +345,6 @@ void AliEMCALv0::CreateSmod(const char* mother)
   Double_t par[3], xpos=0., ypos=0., zpos=0., rpos=0., dphi=0., phi=0.0, phiRad=0.;
   Double_t par1C = 0.;
   //  ===== define Super Module from air - 14x30 module ==== ;
-  fSampleWidth = double(g->GetECPbRadThick()+g->GetECScintThick());
   AliDebug(2,Form("\n ## Super Module | fSampleWidth %5.3f ## %s \n", fSampleWidth, gn.Data()));
   par[0] = g->GetShellThickness()/2.;
   par[1] = g->GetPhiModuleSize()*g->GetNPhi()/2.; 
@@ -401,33 +451,23 @@ void AliEMCALv0::CreateSmod(const char* mother)
 void AliEMCALv0::CreateEmod(const char* mother, const char* child)
 { 
   // 17-may-05; mother="SMOD"; child="EMOD"
+  // Oct 26,2010 
   AliEMCALGeometry * g = GetGeometry(); 
   TString gn(g->GetName()); gn.ToUpper(); 
   // Module definition
   Double_t xpos=0., ypos=0., zpos=0.;
-  Double_t parSCPA[5], zposSCPA=0.; // passive SC - 13-MAY-05, TRD1 case
   Double_t trd1Angle = g->GetTrd1Angle()*TMath::DegToRad(), tanTrd1 = TMath::Tan(trd1Angle/2.);
-  int nr=0;
-  fIdRotm=0;
+
   if(strcmp(mother,"SMOD")==0) {
     fParEMOD[0] = g->GetEtaModuleSize()/2.;   // dx1
     fParEMOD[1] = g->Get2Trd1Dx2()/2.;        // dx2
     fParEMOD[2] = g->GetPhiModuleSize()/2.;;  // dy
     fParEMOD[3] = g->GetLongModuleSize()/2.;  // dz
     gMC->Gsvolu(child, "TRD1", fIdTmedArr[kIdSTEEL], fParEMOD, 4);
-    //      if(gn.Contains("WSUC") || gn.Contains("MAY05")){
-    if(0){ // Jul 12 - should be checked
-      parSCPA[0] = g->GetEtaModuleSize()/2. + tanTrd1*g->GetFrontSteelStrip();   // dx1
-      parSCPA[1] = parSCPA[0]               + tanTrd1*g->GetPassiveScintThick(); // dx2
-      parSCPA[2] = g->GetPhiModuleSize()/2.;     // dy
-      parSCPA[3] = g->GetPassiveScintThick()/2.; // dz
-      gMC->Gsvolu("SCPA", "TRD1", fIdTmedArr[kIdSC], parSCPA, 4);
-      zposSCPA   = -fParEMOD[3] + g->GetFrontSteelStrip() + g->GetPassiveScintThick()/2.;
-      gMC->Gspos ("SCPA", ++nr, child, 0.0, 0.0, zposSCPA, 0, "ONLY");
-    }
   }
   
-  nr   = 0;
+  int nr=0;
+  fIdRotm=0;
   // X->Z(0, 0); Y->Y(90, 90); Z->X(90, 0)
   AliEMCALShishKebabTrd1Module *mod=0; // current module
 
@@ -436,8 +476,7 @@ void AliEMCALv0::CreateEmod(const char* mother, const char* child)
     mod = (AliEMCALShishKebabTrd1Module*)fShishKebabModules->At(iz);
     angle = mod->GetThetaInDegree();
     if(!gn.Contains("WSUC")) { // ALICE 
-      if(iz==0) AliMatrix(fIdRotm, 0.,0., 90.,90., 90.,0.); // z'(x); y'(y); x'(z)
-      else      AliMatrix(fIdRotm, 90.-angle,180., 90.0,90.0, angle, 0.);
+      AliMatrix(fIdRotm, 90.-angle,180., 90.0,90.0, angle, 0.);
       phiOK = mod->GetCenterOfModule().Phi()*180./TMath::Pi(); 
       //          printf(" %2i | angle | %6.3f - %6.3f = %6.3f(eta %5.3f)\n", 
       //iz+1, angle, phiOK, angle-phiOK, mod->GetEtaOfCenterOfModule());
@@ -475,6 +514,23 @@ void AliEMCALv0::CreateEmod(const char* mother, const char* child)
   AliDebug(2,Form(" Number of modules in Super Module(%s) %i \n", mother, nr));
 }
 
+void AliEMCALv0::CreateAlFrontPlate(const char* mother, const char* child)
+{
+  // Oct 26,2010 : Al front plate : ALFP
+  AliEMCALGeometry * g = GetGeometry(); 
+  TString gn(g->GetName()); gn.ToUpper(); 
+  Double_t trd1Angle = g->GetTrd1Angle()*TMath::DegToRad(), tanTrd1 = TMath::Tan(trd1Angle/2.);
+  Double_t parALFP[5], zposALFP=0.;
+
+  parALFP[0] = g->GetEtaModuleSize()/2. - g->GetLateralSteelStrip();    // dx1
+  parALFP[1] = parALFP[0]               + tanTrd1*g->GetTrd1AlFrontThick(); // dx2
+  parALFP[2] = g->GetPhiModuleSize()/2. - g->GetLateralSteelStrip();    // dy
+  parALFP[3] = g->GetTrd1AlFrontThick()/2.; // dz
+  gMC->Gsvolu(child, "TRD1", fIdTmedArr[kIdAL], parALFP, 4);
+  zposALFP   = -fParEMOD[3] + g->GetTrd1AlFrontThick()/2.;
+  gMC->Gspos (child, 1, mother, 0.0, 0.0, zposALFP, 0, "ONLY");
+}
+
 //______________________________________________________________________
 void AliEMCALv0::Trd1Tower3X3(const double *parSCM0)
 {
@@ -546,7 +602,6 @@ void AliEMCALv0::PbInTrap(const double parTRAP[11], TString n)
   AliEMCALGeometry * g = GetGeometry(); 
 
   double par[3];
-  //  double fSampleWidth = double(g->GetECPbRadThick()+g->GetECScintThick());
   double xpos = 0.0, ypos = 0.0;
   double zpos = -fSampleWidth*g->GetNECLayers()/2. + g->GetECPbRadThick()/2.;
 
@@ -612,7 +667,6 @@ void AliEMCALv0::PbInTrd1(const double *parTrd1, TString n)
   AliEMCALGeometry * g = GetGeometry(); 
 
   double par[3];
-  //  double fSampleWidth = double(g->GetECPbRadThick()+g->GetECScintThick());
   double xpos = 0.0, ypos = 0.0;
   double zpos = -fSampleWidth*g->GetNECLayers()/2. + g->GetECPbRadThick()/2.;
   double coef = (parTrd1[1] -  parTrd1[0]) / (2.*parTrd1[3]);
@@ -755,7 +809,6 @@ void AliEMCALv0::PbInTrapForTrd2(const double *parTRAP, TString name)
   AliEMCALGeometry * g = GetGeometry(); 
 
   double par[5], parPB[5], parSC[5];
-  //double fSampleWidth = double(g->GetECPbRadThick()+g->GetECScintThick());
   double xpos = 0.0, ypos = 0.0;
   double zpos = -fSampleWidth*g->GetNECLayers()/2. + g->GetECPbRadThick()/2.;
   if(name == "SCMX") { // common trapezoid - 11 parameters
@@ -845,7 +898,6 @@ void AliEMCALv0::Division2X2InPbmo(const AliEMCALGeometry * g, const Double_t pa
   //  gMC->Gsvolu("SCTI", "BOX", fIdTmedArr[kIdSC], dummy, 0);
 
   double parSC[3];
-  //double fSampleWidth = double(g->GetECPbRadThick()+g->GetECScintThick());
   double xpos = 0.0, ypos = 0.0, zpos = 0.0, ztmp=0;;
   double tanx = (parPBMO[1] -  parPBMO[0]) / (2.*parPBMO[4]); //  tanx =  tany now
   double tany = (parPBMO[3] -  parPBMO[2]) / (2.*parPBMO[4]);
index 7cb6a2d..06f8d61 100644 (file)
@@ -50,11 +50,11 @@ class AliEMCALv0 : public AliEMCAL {
     // As above
     return TString("v0") ; 
   }
-  
-  // ShishKebab 
+    // ShishKebab 
   void CreateShishKebabGeometry();
   void CreateSmod(const char* mother="XEN1");
   void CreateEmod(const char* mother="SMOD", const char* child="EMOD");
+  void CreateAlFrontPlate(const char* mother="EMOD", const char* child="ALFP");
   // TRD1
   void Trd1Tower3X3(const double *parSCM0);
   void Trd1Tower4X4() const;
index f9f4af2..0a87fcb 100644 (file)
@@ -20,7 +20,7 @@
 //*-- An object of this class does not produce digits
 //*-- It is the one to use if you do want to produce outputs in TREEH 
 //*--                  
-//*-- Author : Aleksei Pavlinov (WSU)
+//*-- Author : Alexei Pavlinov (WSU)
 
 // This Class not stores information on all particles prior to EMCAL entry - in order to facilitate analysis.
 // This is done by setting fIShunt =2, and flagging all parents of particles entering the EMCAL.
@@ -301,7 +301,7 @@ void AliEMCALv2::Browse(TBrowser* b)
 void AliEMCALv2::DrawCalorimeterCut(const char *name, int axis, double dcut)
 { 
   // Size of tower is 5.6x5.6x24.8 (25.0); cut on Z axiz
-  TString g(fGeometry->GetName());
+  TString g(GetGeometry()->GetName());
   g.ToUpper();
   gMC->Gsatt("*", "seen", 0);