Alignmnet staff and some clean up
authorpavlinov <pavlinov@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 29 Mar 2006 18:15:51 +0000 (18:15 +0000)
committerpavlinov <pavlinov@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 29 Mar 2006 18:15:51 +0000 (18:15 +0000)
EMCAL/AliEMCALAlignData.cxx
EMCAL/AliEMCALAlignData.h
EMCAL/AliEMCALGeometry.cxx
EMCAL/AliEMCALGeometry.h
EMCAL/AliEMCALHistoUtilities.cxx
EMCAL/AliEMCALHistoUtilities.h
EMCAL/AliEMCALv0.cxx

index e5d0cab..f559da5 100644 (file)
@@ -20,6 +20,7 @@
 ////////////////////////////////////////////////
 
 #include "AliEMCALAlignData.h"
+#include "AliAlignObjMatrix.h"
 
 ClassImp(AliEMCALAlignData)
 
@@ -51,14 +52,7 @@ AliEMCALAlignData::AliEMCALAlignData(const AliEMCALAlignData& alignda) :
   Reset();
   fNSuperModules = alignda.GetNSuperModules();
   for(Int_t module=0; module<fNSuperModules; module++) {
-    for (Int_t axis=0; axis<3; axis++) {
-      fSuperModuleCenter[module][axis] = 
-       alignda.GetSuperModuleCenter(module,axis);
-      for (Int_t angle=0; angle<2; angle++) {
-       fSuperModuleAngle[module][axis][angle] = 
-         alignda.GetSuperModuleAngle(module,axis,angle);
-      }
-    }
+    fSuperModuleMatrix[module] = alignda.fSuperModuleMatrix[module];
   }
 }
 
@@ -71,14 +65,7 @@ AliEMCALAlignData &AliEMCALAlignData::operator =(const AliEMCALAlignData& alignd
   Reset();
   fNSuperModules = alignda.GetNSuperModules();
   for(Int_t module=0; module<fNSuperModules; module++) {
-    for (Int_t axis=0; axis<3; axis++) {
-      fSuperModuleCenter[module][axis] = 
-       alignda.GetSuperModuleCenter(module,axis);
-      for (Int_t angle=0; angle<2; angle++) {
-       fSuperModuleAngle[module][axis][angle] = 
-         alignda.GetSuperModuleAngle(module,axis,angle);
-      }
-    }
+    fSuperModuleMatrix[module] = new AliAlignObjMatrix(*alignda.fSuperModuleMatrix[module]);
   }
   return *this;
 }
@@ -87,6 +74,9 @@ AliEMCALAlignData &AliEMCALAlignData::operator =(const AliEMCALAlignData& alignd
 AliEMCALAlignData::~AliEMCALAlignData()
 {
   // Destructor
+  for(Int_t module=0; module<fNSuperModules; module++) {
+    if(fSuperModuleMatrix[module]) delete fSuperModuleMatrix[module];
+  }
 }
 
 //________________________________________________________________
@@ -94,8 +84,8 @@ void AliEMCALAlignData::Reset()
 {
   // Set all to default values
   fNSuperModules = 12;
-  memset(fSuperModuleCenter,0,12*3*sizeof(Float_t));
-  memset(fSuperModuleAngle ,0,12*3*2*sizeof(Float_t));
+  memset(fSuperModuleMatrix,0,12*sizeof(AliAlignObjMatrix*));
+  for(Int_t module=0; module<fNSuperModules; module++) fSuperModuleMatrix[module] = 0;
 }
 
 //________________________________________________________________
@@ -106,5 +96,4 @@ void  AliEMCALAlignData::Print(Option_t */*option =""*/) const
   printf("EMCAL alignment object\n");
   printf("     Number of modules: %d\n",fNSuperModules);
 }
-
 //________________________________________________________________
index d5624cb..7f97ffa 100644 (file)
@@ -6,12 +6,14 @@
 
 /* $Id$ */
 
-////////////////////////////////////////////////
-//  class for EMCAL alignment parameters       //
-////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////
+//  Class for EMCAL alignment parameters - go to standard tools      //
+//  Apply allignment to super modules only                           //
+///////////////////////////////////////////////////////////////////////
 
 #include "TNamed.h"
-#include "AliEMCAL.h"
+
+class AliAlignObjMatrix;
 
 class AliEMCALAlignData: public TNamed {
 
@@ -21,28 +23,28 @@ class AliEMCALAlignData: public TNamed {
   AliEMCALAlignData(const AliEMCALAlignData &alignda);
   AliEMCALAlignData& operator= (const AliEMCALAlignData &alignda);
   virtual ~AliEMCALAlignData();
+
   void Reset();
-  virtual void Print(Option_t *option = "") const; 
+  virtual void Print(Option_t *option = "") const; // *MENU*
 
   // Getters
   Int_t   GetNSuperModules() const {return fNSuperModules;}
-  Float_t GetSuperModuleCenter(Int_t module, Int_t axis) const {
-    return fSuperModuleCenter[module][axis];}
-  Float_t GetSuperModuleAngle(Int_t module, Int_t axis, Int_t angle) const {
-    return fSuperModuleAngle[module][axis][angle];}
+  AliAlignObjMatrix *GetSuperModuleMatrix(Int_t module) const
+  {
+    if(module>=0&&module<fNSuperModules) return fSuperModuleMatrix[module];
+    else                                 return 0;
+  }
 
   // Setters
   void SetNSuperModules(Int_t nSuperModules) {fNSuperModules = nSuperModules;}
-  void SetSuperModuleCenter(Int_t module, Int_t axis, Float_t coord) {
-    fSuperModuleCenter[module][axis] = coord;}
-  void SetSuperModuleAngle(Int_t module, Int_t axis, Int_t angle, Float_t value) {
-    fSuperModuleAngle[module][axis][angle] = value;}
+  void SetSuperModuleMatrix(Int_t module, AliAlignObjMatrix *matrix) 
+  {
+    if(module>=0&&module<fNSuperModules) fSuperModuleMatrix[module] = matrix;
+  }
 
  protected:
-  Int_t   fNSuperModules;             // number of EMCAL supermodules (max=12)
-  Float_t fSuperModuleCenter[12][3];  // xyz-position of the supermodule center
-  Float_t fSuperModuleAngle[12][3][2];// polar and azymuth angles for 3 axes 
-                                      // of supermodules
+  Int_t   fNSuperModules;                    // number of EMCAL supermodules (max=12)
+  AliAlignObjMatrix *fSuperModuleMatrix[12]; 
 
   ClassDef(AliEMCALAlignData,1)    // EMCAL Alignment data
 };
index 5c96dfa..8a5d2e1 100644 (file)
 #include <TMath.h>
 #include <TVector3.h>
 #include <TArrayD.h>
-#include <TRegexp.h>
 #include <TObjArray.h>
-#include <TObjString.h>
 #include <TGeoManager.h>
 #include <TGeoNode.h>
 #include <TGeoMatrix.h>
 #include <TMatrixD.h>
+#include <TObjString.h>
 #include <TClonesArray.h>
 
 // -- ALICE Headers.
 //#include "AliRecPoint.h"
 #include "AliEMCALRecPoint.h"
 #include "AliEMCALDigit.h"
+#include "AliEMCALHistoUtilities.h"
+#include "AliEMCALAlignData.h"
 
 ClassImp(AliEMCALGeometry)
 
-AliEMCALGeometry *AliEMCALGeometry::fgGeom = 0;
-Bool_t            AliEMCALGeometry::fgInit = kFALSE;
+// these initialisations are needed for a singleton
+AliEMCALGeometry  *AliEMCALGeometry::fgGeom      = 0;
+Bool_t             AliEMCALGeometry::fgInit      = kFALSE;
+AliEMCALAlignData *AliEMCALGeometry::fgAlignData = 0;
+
 TString name; // contains name of geometry
 
 char *additionalOpts[]={"nl=",   // number of sampling layers
@@ -236,6 +240,11 @@ void AliEMCALGeometry::Init(void){
   fEnvelop[1]     = fIPDistance + fShellThickness; // mother volume outer r.
   fEnvelop[2]     = 1.00001*fZLength; // add some padding for mother volume. 
   
+  if(fgAlignData != NULL) {
+    // Number of modules is read from Alignment DB if exists
+    fNumberOfSuperModules = fgAlignData->GetNSuperModules();
+  }
   fgInit = kTRUE; 
   
   if (kTRUE) {
@@ -294,7 +303,7 @@ void AliEMCALGeometry::Init(void){
 void AliEMCALGeometry::CheckAditionalOptions()
 { // Feb 06,2006
   fArrayOpts = new TObjArray;
-  Int_t nopt = ParseString(name, *fArrayOpts);
+  Int_t nopt = AliEMCALHistoUtilities::ParseString(name, *fArrayOpts);
   if(nopt==1) { // no aditional option(s)
     fArrayOpts->Delete();
     delete fArrayOpts;
@@ -990,20 +999,3 @@ void AliEMCALGeometry::GetGlobal(const AliRecPoint *rp, TVector3 &vglob) const
   GetGlobal(vloc, vglob, nSupMod);
 }
 
-// Service routine 
-int  AliEMCALGeometry::ParseString(const TString &topt, TObjArray &Opt)
-{ // Feb 06, 2006
-  Ssiz_t begin, index, end, end2;
-  begin = index = end = end2 = 0;
-  TRegexp separator("[^ ;,\\t\\s/]+");
-  while ( (begin < topt.Length()) && (index != kNPOS) ) {
-    // loop over given options
-    index = topt.Index(separator,&end,begin);
-    if (index >= 0 && end >= 1) {
-      TString substring(topt(index,end));
-      Opt.Add(new TObjString(substring.Data()));
-    }
-    begin += end+1;
-  }
-  return Opt.GetEntries();
-}
index 56f76ad..69049c8 100644 (file)
@@ -27,6 +27,7 @@ class TClonesArray ;
 
 // --- AliRoot header files ---
 #include "AliGeometry.h"
+#include "AliEMCALAlignData.h"
 
 class AliEMCALGeometry : public AliGeometry {
 public:
@@ -34,14 +35,15 @@ public:
     // cpy ctor requested by Coding Convention but not yet needed
     Fatal("Cpy ctor", "Not implemented");
   };
-  virtual ~AliEMCALGeometry(void) ; 
+  virtual ~AliEMCALGeometry(void); 
+
   static AliEMCALGeometry * GetInstance(const Text_t* name,
                                        const Text_t* title="") ; 
   static AliEMCALGeometry * GetInstance() ;
   AliEMCALGeometry & operator = (const AliEMCALGeometry  & /*rvalue*/) const {
     // assignement operator requested by coding convention but not needed
     Fatal("operator =", "not implemented");
-    return *(GetInstance()) ; 
+    return *(GetInstance()); 
   };
 
   // Have to call GetTransformationForSM() before calculation global charachteristics 
@@ -180,23 +182,36 @@ public:
   Int_t GetNCellsInSupMod() const {return fNCellsInSupMod;}
   Int_t GetNCellsInTower() const {return fNCellsInTower; }
 
+  AliEMCALGeometry() :
+    AliGeometry() {// ctor only for internal usage (singleton)
+   // default ctor 
+   // must be kept public for root persistency purposes, but should never be called 
+   // by the outside world    
+     CreateListOfTrd1Modules();
+  };
+
 protected:
-  AliEMCALGeometry(const Text_t* name, const Text_t* title="") :
+  AliEMCALGeometry(const Text_t* name, const Text_t* title) :
     AliGeometry(name, title) {// ctor only for internal usage (singleton)
     Init();
     CreateListOfTrd1Modules();
   };
-  AliEMCALGeometry() :
-    AliGeometry() {// ctor only for internal usage (singleton)
+
+  AliEMCALGeometry(const Text_t* name, const Text_t* title, AliEMCALAlignData* alignData) :
+    AliGeometry(name, title) {// Align data in action
+    fgAlignData = alignData;
+    Init();
     CreateListOfTrd1Modules();
-    //Init();
   };
+
   void Init(void);                             // initializes the parameters of EMCAL
-  void CheckAditionalOptions();              //
+  void CheckAditionalOptions();         //
   
 private:
   static AliEMCALGeometry * fgGeom;    // pointer to the unique instance of the singleton
   static Bool_t fgInit;                        // Tells if geometry has been succesfully set up.
+  static AliEMCALAlignData *fgAlignData;// 
+
   TObjArray *fArrayOpts;                //! array of geometry options
 
   Float_t fAlFrontThick;               // Thickness of the front Al face of the support box  
@@ -262,10 +277,8 @@ private:
   // Local coordinates of SM for TRD1
   Float_t     fParSM[3];       // SM sizes as in GEANT (TRD1)
   TGeoMatrix* fMatrixOfSM[12]; //![fNumberOfSuperModules]; get from gGeoManager;
-  // Service routine 
-  static int ParseString(const TString &topt, TObjArray &Opt);
 
-  ClassDef(AliEMCALGeometry,10) // EMCAL geometry class 
+  ClassDef(AliEMCALGeometry, 10) // EMCAL geometry class 
   };
 
 #endif // AliEMCALGEOMETRY_H
index 346506c..9a28a30 100644 (file)
 
 /*
 $Log$
+Revision 1.2  2006/03/01 23:36:50  jklay
+suppress compiler warnings by correcting some hidden virtual methods
+
 Revision 1.1  2006/02/28 21:55:11  jklay
 add histogram utilities class, correct package definitions
 
 */
 
+//_________________________________________________________________________
+// This is just set of static methods for common using
+//
 //*-- Authors: J.L. Klay (LLNL) & Aleksei Pavlinov (WSU) 
 
-//*
+#include "AliEMCALHistoUtilities.h"
 
-#include <TBrowser.h>
 #include <TFile.h>
 #include <TList.h>
 #include <TH1.h>
 #include <TH2.h>
 #include <TROOT.h>
 #include <TString.h>
-
-#include "AliEMCALHistoUtilities.h"
+#include <TObjString.h>
+#include <TRegexp.h>
 
 ClassImp(AliEMCALHistoUtilities)
 
 AliEMCALHistoUtilities::AliEMCALHistoUtilities(const char *name, const char *tit) : TNamed(name,tit)
 {
-       //constructor
-  fDebug = 0;
-  gROOT->cd();
-  fListHist = MoveHistsToList("Hist For AliEMCALHistoUtilities", kFALSE); 
+  // constructor
 }
 
 AliEMCALHistoUtilities::~AliEMCALHistoUtilities()
@@ -49,20 +51,6 @@ AliEMCALHistoUtilities::~AliEMCALHistoUtilities()
        //destructor
 }  
 
-void AliEMCALHistoUtilities::Browse(TBrowser* b)
-{
-  // Browse
-   if(fListHist)  b->Add((TObject*)fListHist);
-   //   TObject::Browse(b);
-}
-
-Bool_t  AliEMCALHistoUtilities::IsFolder() const
-{
-  // Is folder
-  if(fListHist) return kTRUE;
-  else                   return kFALSE;
-}
-
 TList* AliEMCALHistoUtilities::MoveHistsToList(const char* name, Bool_t putToBrowser)
 {
   // Move HIST to list
@@ -135,3 +123,21 @@ int AliEMCALHistoUtilities::SaveListOfHists(TList *mylist,const char* name,Bool_
   }
   return save;
 }
+
+// Moved from AliEMCALGeometry
+int AliEMCALHistoUtilities::ParseString(const TString &topt, TObjArray &Opt)
+{ // Feb 06, 2006
+  Ssiz_t begin, index, end, end2;
+  begin = index = end = end2 = 0;
+  TRegexp separator("[^ ;,\\t\\s/]+");
+  while ( (begin < topt.Length()) && (index != kNPOS) ) {
+    // loop over given options
+    index = topt.Index(separator,&end,begin);
+    if (index >= 0 && end >= 1) {
+      TString substring(topt(index,end));
+      Opt.Add(new TObjString(substring.Data()));
+    }
+    begin += end+1;
+  }
+  return Opt.GetEntries();
+}
index 0cf13a6..baa528b 100644 (file)
@@ -6,42 +6,34 @@
 /* $Id$ */
 
 //_________________________________________________________________________
+// This is just set of static methods for common using
 //                  
 //*-- Authors: J.L. Klay (LLNL) & Aleksei Pavlinov (WSU)
 
 #include <TNamed.h>
 class TList;
-class TBrowser;
 
 class AliEMCALHistoUtilities: public TNamed {
   public:
-  AliEMCALHistoUtilities(const char *name="emcalHistoUtilities",
-  const char *tit="Histogram Utilities methods for EMCAL");
+  AliEMCALHistoUtilities(const char *name="emcalUtilitiesRoutines",
+  const char *tit="EMCAL utility routines");
   AliEMCALHistoUtilities(const  AliEMCALHistoUtilities &) : TNamed("", ""){
     Fatal("cpy ctor", "not implemented") ; }
   virtual ~AliEMCALHistoUtilities();
 
-  void    SetDebug(Int_t flag) {fDebug = flag;}
-  Float_t GetDebug() const  {return fDebug;}
-  virtual Bool_t  IsFolder() const;
-
-  virtual void Browse(TBrowser* b);
-
   // service routine
   static TList *MoveHistsToList(const char* name="ListOfHists", Bool_t putToBrowser=kTRUE);
   static void FillH1(TList *l=0, Int_t ind=0, Double_t x=-99999., Double_t w=1.);
   static void FillH2(TList *l=0, Int_t ind=0, Double_t x=-99999., Double_t y=-99999., Double_t w=1.);
   static int  SaveListOfHists(TList *mylist=0, const char* name="test", Bool_t kSingleKey=kFALSE,
   const char* opt="RECREATE");
+  // 
+  static int ParseString(const TString &topt, TObjArray &Opt); 
 
   AliEMCALHistoUtilities & operator = (const AliEMCALHistoUtilities &) {
     Fatal("operator =", "not implemented") ; return *this ; }
   
-  private:
-  Int_t   fDebug;      // debug flag
-  TList*  fListHist;    //!
-
-  ClassDef(AliEMCALHistoUtilities,1) // EMCAL Histogram service routines
+  ClassDef(AliEMCALHistoUtilities,1) // EMCAL utility routines
 };
 
 #endif // AliEMCALHistoUtilities_H
index 677f3c5..c5120a8 100644 (file)
@@ -440,7 +440,7 @@ void AliEMCALv0::CreateShishKebabGeometry()
       parTRAP[9] = parTRAP[8];    // TL2
       parTRAP[10]= 0.0;           // ALP2
       printf(" ** TRAP ** \n");
-      for(int i=0; i<11; i++) printf(" par[%2.2i] %9.4f\n", i, parTRAP[i]);
+      for(int i=0; i<11; i++) AliDebug(3, Form(" par[%2.2i] %9.4f\n", i, parTRAP[i]));
 
       gMC->Gsvolu("SCMX", "TRAP", idtmed[idSC], parTRAP, 11);
       xpos = +(parSCM0[1]+parSCM0[0])/4.;
@@ -458,7 +458,7 @@ void AliEMCALv0::CreateShishKebabGeometry()
       par[2] = g->GetECPbRadThick()/2.; // z
 
       int nr=0;
-      ypos = 0.0;
+      ypos = 0.0; 
       zpos = -sampleWidth*g->GetNECLayers()/2. + g->GetECPbRadThick()/2.;
       double xCenterSCMX =  (parTRAP[4] +  parTRAP[8])/2.;
       if(!gn.Contains("NOPB")) { // for testing - 11-jul-05
@@ -467,7 +467,7 @@ void AliEMCALv0::CreateShishKebabGeometry()
           par[0] = (parSCM0[0] + mod->GetTanBetta()*sampleWidth*iz)/2.;
           xpos   = par[0] - xCenterSCMX;
           gMC->Gsposp("PBTI", ++nr, "SCMX", xpos, ypos, zpos, 0, "ONLY", par, 3) ;
-          printf(" %i xpos %f zpos %f par[0] %f \n", iz+1, xpos, zpos, par[0]);
+          AliDebug(3,Form(" %i xpos %f zpos %f par[0] %f \n", iz+1, xpos, zpos, par[0]));
           zpos += sampleWidth;
         } 
         printf(" Number of Pb tiles in SCMX %i \n", nr);
@@ -643,8 +643,8 @@ void AliEMCALv0::CreateSmod(const char* mother)
       
       // 1th module in z-direction;
       gMC->Gspos(smName.Data(), ++nr, mother, xpos, ypos, zpos, idrotm, "ONLY") ;
-      printf(" %s : %2i idrotm %3i phi %6.1f(%5.3f) xpos %7.2f ypos %7.2f zpos %7.2f : i %i \n", 
-      smName.Data(), nr, idrotm, phi, phiRad, xpos, ypos, zpos, i);
+      AliDebug(3, Form(" %s : %2i idrotm %3i phi %6.1f(%5.3f) xpos %7.2f ypos %7.2f zpos %7.2f : i %i \n", 
+                      smName.Data(), nr, idrotm, phi, phiRad, xpos, ypos, zpos, i));
       // 2th module in z-direction;
       if(gn.Contains("TWIST") || gn.Contains("TRD")) {
       // turn arround X axis; 0<phi<360
@@ -653,8 +653,8 @@ void AliEMCALv0::CreateSmod(const char* mother)
  
         AliMatrix(idrotm, 90.0, phi, 90.0, phiy, 180.0, 0.0);
         gMC->Gspos(smName.Data(), ++nr, mother, xpos, ypos, -zpos, idrotm, "ONLY");
-        printf(" %s : %2i idrotm %3i phiy %6.1f  xpos %7.2f ypos %7.2f zpos %7.2f \n", 
-        smName.Data(), nr, idrotm, phiy, xpos, ypos, -zpos);
+        AliDebug(3, Form(" %s : %2i idrotm %3i phiy %6.1f  xpos %7.2f ypos %7.2f zpos %7.2f \n", 
+                        smName.Data(), nr, idrotm, phiy, xpos, ypos, -zpos));
       } else {
         gMC->Gspos("SMOD", ++nr, mother, xpos, ypos, -zpos, idrotm, "ONLY");
       }
@@ -756,7 +756,7 @@ void AliEMCALv0::CreateEmod(const char* mother, const char* child)
             ypos = g->GetPhiModuleSize()*(2*iy+1 - iyMax)/2.;
             gMC->Gspos(child, ++nr, mother, xpos, ypos, zpos, idrotm, "ONLY") ;
         //printf(" %2i xpos %7.2f ypos %7.2f zpos %7.2f idrotm %i\n", nr, xpos, ypos, zpos, idrotm);
-            printf("%3.3i(%2.2i,%2.2i) ", nr,iy+1,iz+1);
+            AliDebug(3,Form("%3.3i(%2.2i,%2.2i) ", nr,iy+1,iz+1));
           }
           printf("\n");
        } else {