]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - MUON/AliMUONGeometryEnvelope.cxx
Adding PiKP-only histograms and eliminating a number of switches where histograms...
[u/mrichter/AliRoot.git] / MUON / AliMUONGeometryEnvelope.cxx
index 169b321f5042513693f141149f8e1831bc037fc9..0eb71d08def369abb3414b5370727350c7107b72 100644 (file)
  **************************************************************************/
 
 // $Id$
-//
+
+//-----------------------------------------------------------------------------
 // Class AliMUONGeometryEnvelope
 // -----------------------------
-// Helper class for definititon an assembly of volumes.
+// Helper class for definititon of an assembly of volumes.
 // Author: Ivana Hrivnacova, IPN Orsay
 // 23/01/2004
+//-----------------------------------------------------------------------------
 
 #include <TGeoMatrix.h>
 #include <TString.h>
 
 #include "AliMUONGeometryEnvelope.h"
 #include "AliMUONGeometryConstituent.h"
+#include "AliLog.h"
 
+/// \cond CLASSIMP
 ClassImp(AliMUONGeometryEnvelope)
+/// \endcond
 
 //______________________________________________________________________________
 AliMUONGeometryEnvelope::AliMUONGeometryEnvelope(const TString& name, 
+                                                 Int_t id, 
                                                  Bool_t isVirtual,
                                                 const char* only)
  : TNamed(name, name),
    fIsVirtual(isVirtual),
    fIsMANY(false),
-   fCopyNo(0),
+   fCopyNo(1),
    fTransformation(0),
    fConstituents(0)
 {
-// Standard constructor
+/// Standard constructor
 
   if (TString(only) == TString("MANY")) fIsMANY = true;
 
   // Create the envelope transformation
   fTransformation = new TGeoCombiTrans("");
   fConstituents = new TObjArray(20);
+  
+  // Set id
+  SetUniqueID(id);
 }
 
 
 //______________________________________________________________________________
-AliMUONGeometryEnvelope::AliMUONGeometryEnvelope(const TString& name, 
+AliMUONGeometryEnvelope::AliMUONGeometryEnvelope(const TString& name,   
+                                                 Int_t id,
                                                  Int_t copyNo, 
                                                 const char* only)
  : TNamed(name, name),
@@ -62,13 +72,17 @@ AliMUONGeometryEnvelope::AliMUONGeometryEnvelope(const TString& name,
    fTransformation(0),
    fConstituents(0)
 {
-// Standard constructor
+/// Standard constructor for a non virtual enevelope with a specified copy 
+/// number
 
   if (TString(only) == TString("MANY")) fIsMANY = true;
 
   // Create the envelope transformation
   fTransformation = new TGeoCombiTrans("");
   fConstituents = new TObjArray(20);
+  
+  // Set id
+  SetUniqueID(id);
 }
 
 
@@ -76,26 +90,19 @@ AliMUONGeometryEnvelope::AliMUONGeometryEnvelope(const TString& name,
 AliMUONGeometryEnvelope::AliMUONGeometryEnvelope()
  : TNamed(),
    fIsVirtual(0),
+   fIsMANY(false),
+   fCopyNo(0),
    fTransformation(0),
    fConstituents(0)
 {
-// Default constructor
-}
-
-
-//______________________________________________________________________________
-AliMUONGeometryEnvelope::AliMUONGeometryEnvelope(
-                                        const AliMUONGeometryEnvelope& rhs)
-  : TNamed(rhs)
-{
-  Fatal("Copy constructor", 
-        "Copy constructor is not implemented.");
+/// Default constructor
 }
 
 //______________________________________________________________________________
 AliMUONGeometryEnvelope::~AliMUONGeometryEnvelope() 
 {
-//
+/// Destructor
+
   // Add deleting rotation matrices 
   
   delete fTransformation;
@@ -106,19 +113,6 @@ AliMUONGeometryEnvelope::~AliMUONGeometryEnvelope()
   }  
 }
 
-//______________________________________________________________________________
-AliMUONGeometryEnvelope& 
-AliMUONGeometryEnvelope::operator = (const AliMUONGeometryEnvelope& rhs) 
-{
-  // check assignement to self
-  if (this == &rhs) return *this;
-
-  Fatal("operator=", 
-        "Assignment operator is not implemented.");
-    
-  return *this;  
-}
-
 //
 // public methods
 //
@@ -126,9 +120,8 @@ AliMUONGeometryEnvelope::operator = (const AliMUONGeometryEnvelope& rhs)
 //______________________________________________________________________________
 void  AliMUONGeometryEnvelope::AddConstituent(const TString& name, Int_t copyNo) 
 {
-// Adds the volume with the specified name and transformation
-// to the list of envelopes.
-// ---                                            
+/// Add the volume with the specified name and transformation
+/// to the list of envelopes.
 
   fConstituents->Add(new AliMUONGeometryConstituent(name, copyNo, 0, 0));
 }
@@ -137,9 +130,8 @@ void  AliMUONGeometryEnvelope::AddConstituent(const TString& name, Int_t copyNo)
 void  AliMUONGeometryEnvelope::AddConstituent(const TString& name, Int_t copyNo, 
                                           const TGeoTranslation& translation)
 {
-// Adds the volume with the specified name and transformation
-// to the list of envelopes.
-// ---                                            
+/// Add the volume with the specified name and transformation
+/// to the list of envelopes.
 
   fConstituents
     ->Add(new AliMUONGeometryConstituent(name, copyNo, translation, 0, 0));
@@ -150,22 +142,32 @@ void  AliMUONGeometryEnvelope::AddConstituent(const TString& name, Int_t copyNo,
                                           const TGeoTranslation& translation,
                                          const TGeoRotation& rotation)
 {
-// Adds the volume with the specified name and transformation
-// to the list of envelopes.
-// ---                                            
+/// Add the volume with the specified name and transformation
+/// to the list of envelopes.
 
   fConstituents
     ->Add(new AliMUONGeometryConstituent(
                      name, copyNo, translation, rotation, 0, 0));
 }
 
+//______________________________________________________________________________
+void  AliMUONGeometryEnvelope::AddConstituent(const TString& name, Int_t copyNo,
+                                          const TGeoCombiTrans& transform )
+{
+/// Add the volume with the specified name and transformation
+/// to the list of envelopes.
+
+  fConstituents
+    ->Add(new AliMUONGeometryConstituent(
+                     name, copyNo, transform, 0, 0));
+}
+
 //______________________________________________________________________________
 void  AliMUONGeometryEnvelope::AddConstituentParam(const TString& name, 
                                   Int_t copyNo, Int_t npar, Double_t* param) 
 {
-// Adds the volume with the specified name and transformation
-// to the list of envelopes.
-// ---                                            
+/// Add the volume with the specified name and transformation
+/// to the list of envelopes.
 
   fConstituents
     ->Add(new AliMUONGeometryConstituent(name, copyNo, npar, param));
@@ -176,9 +178,8 @@ void  AliMUONGeometryEnvelope::AddConstituentParam(const TString& name,
                                   Int_t copyNo, const TGeoTranslation& translation,
                                  Int_t npar, Double_t* param)
 {
-// Adds the volume with the specified name and transformation
-// to the list of envelopes.
-// ---                                            
+/// Add the volume with the specified name and transformation
+/// to the list of envelopes.
 
   fConstituents
     ->Add(new AliMUONGeometryConstituent(
@@ -191,20 +192,32 @@ void  AliMUONGeometryEnvelope::AddConstituentParam(const TString& name,
                                  const TGeoRotation& rotation, 
                                  Int_t npar, Double_t* param)
 {
-// Adds the volume with the specified name and transformation
-// to the list of envelopes.
-// ---                                            
+/// Add the volume with the specified name and transformation
+/// to the list of envelopes.
 
   fConstituents
     ->Add(new AliMUONGeometryConstituent(
                      name, copyNo, translation, rotation, npar, param));
 }
 
+//______________________________________________________________________________
+void  AliMUONGeometryEnvelope::AddConstituentParam(const TString& name, 
+                                  Int_t copyNo, 
+                                 const TGeoCombiTrans& transform, 
+                                 Int_t npar, Double_t* param)
+{
+/// Add the volume with the specified name and transformation
+/// to the list of envelopes.
+
+  fConstituents
+    ->Add(new AliMUONGeometryConstituent(
+                     name, copyNo, transform, npar, param));
+}
+
 //______________________________________________________________________________
 void  AliMUONGeometryEnvelope::SetTranslation(const TGeoTranslation& translation)
 {
-// Sets the chamber position wrt ALIC.
-// ---
+/// Set the envelope position
 
   fTransformation
     ->SetTranslation(const_cast<Double_t*>(translation.GetTranslation()));
@@ -213,11 +226,24 @@ void  AliMUONGeometryEnvelope::SetTranslation(const TGeoTranslation& translation
 //______________________________________________________________________________
 void  AliMUONGeometryEnvelope::SetRotation(const TGeoRotation& rotation)
 {
-// Sets the chamber rotation wrt ALIC.
-// ---
+/// Set the envelope rotation
 
   TGeoRotation* rot = new TGeoRotation();
   rot->SetMatrix(const_cast<Double_t*>(rotation.GetRotationMatrix()));
 
   fTransformation->SetRotation(rot);
 }  
+
+//______________________________________________________________________________
+void  AliMUONGeometryEnvelope::SetTransform(const TGeoCombiTrans& transform)
+{
+/// Set the envelope transformation
+
+  fTransformation
+    ->SetTranslation(const_cast<Double_t*>(transform.GetTranslation()));
+
+  TGeoRotation* rot = new TGeoRotation();
+  rot->SetMatrix(const_cast<Double_t*>(transform.GetRotationMatrix()));
+
+  fTransformation->SetRotation(rot);
+}