]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - FMD/AliFMDAlignFaker.h
Update
[u/mrichter/AliRoot.git] / FMD / AliFMDAlignFaker.h
index ef6d90c44b0aace8e15cb0bfce1fa2ae143863cd..fd5edbc58be7a135e53baf85de87fd8ab725b560 100644 (file)
@@ -7,11 +7,12 @@
  *
  * See cxx source for full Copyright notice                               
  */
-/** @file    AliFMDAlignFaker.h
-    @author  Christian Holm Christensen <cholm@nbi.dk>
-    @date    Sun Mar 26 18:26:39 2006
-    @brief   Make fake alignment 
-*/
+/** 
+ * @file    AliFMDAlignFaker.h
+ * @author  Christian Holm Christensen <cholm@nbi.dk>
+ * @date    Sun Mar 26 18:26:39 2006
+ * @brief   Make fake alignment 
+ */
 //____________________________________________________________________
 //
 //  Class 
 class TClonesArray;
 class TString;
 
-/** @class AliFMDAlignFaker 
-    @brief This task creates fake alignment. 
-    Which alignment, depends on the bit mask passed to the
-    constructor, or added by `AddAlign'.
-
-    The default is to write all alignment parameters to a local
-    storage @c local://cdb which is a directory in the current
-    directory.
-    @ingroup FMD_util
-*/
+/** 
+ * @class AliFMDAlignFaker 
+ * @brief This task creates fake alignment. 
+ * 
+ * Which alignment, depends on the bit mask passed to the
+ * constructor, or added by `AddAlign'.
+ * 
+ * The default is to write all alignment parameters to a local
+ * storage @c local://cdb which is a directory in the current
+ * directory.
+ *
+ * @ingroup FMD_util
+ */
 class AliFMDAlignFaker : public TTask
 {
 public:
-  /** What to make alignments for */
+  /** 
+   * What to make alignments for 
+   */
   enum EWhat {
     /** MAke alignment for sensors */
     kSensors =  1, 
@@ -54,105 +60,178 @@ public:
     /** All types of alignment */
     kAll             = (1<<kHalves|1<<kSensors)
   };
-  /** Constructor 
+  /**
+   * Constructor 
       @param mask Bit mask of what to make alignments for 
       @param geo  File to read geometry from, if needed
-      @param loc  Where to store the result */
+      @param loc  Where to store the result 
+   */
   AliFMDAlignFaker(Int_t mask=kAll, 
                   const char* geo="geometry.root",
-                  const char* loc="local://cdb");
-  /** Destructor */
+                  const char* loc="");
+  /**
+   * Destructor 
+   */
   virtual ~AliFMDAlignFaker() {}
-  /** Add something to make alignment for 
-      @param w Bit of alignment mask */
+  /**
+   * Add something to make alignment for 
+   * @param w Bit of alignment mask 
+   */
   void AddAlign(EWhat w) { SETBIT(fMask, w); }
-  /** Remove something to make alignment for 
-      @param w Bit of alignment mask */
+  /**
+   * Remove something to make alignment for 
+   * @param w Bit of alignment mask 
+   */
   void RemoveAlign(EWhat w) { CLRBIT(fMask, w); }
-  /** Set alignment select mask 
-      @param mask Bit mask */
+  /**
+   * Set alignment select mask 
+   * @param mask Bit mask 
+   */
   void SetAlign(Int_t mask) { fMask = mask; }
-  /** Set the displacement (translation) of sensors.  The displacement
-      is selected random uniformly between the corresponding minimum
-      and maximum. 
-      @param x1 Minimum X displacement (in centimeters)
-      @param y1 Minimum Y displacement (in centimeters)
-      @param z1 Minimum Z displacement (in centimeters)
-      @param x2 Maximum X displacement (in centimeters)
-      @param y2 Maximum Y displacement (in centimeters)
-      @param z2 Maximum Z displacement (in centimeters) */
+  /**
+   * Set the displacement (translation) of sensors.  The displacement
+   * is selected random uniformly between the corresponding minimum
+   * and maximum. 
+   * @param x1 Minimum X displacement (in centimeters)
+   * @param y1 Minimum Y displacement (in centimeters)
+   * @param z1 Minimum Z displacement (in centimeters)
+   * @param x2 Maximum X displacement (in centimeters)
+   * @param y2 Maximum Y displacement (in centimeters)
+   * @param z2 Maximum Z displacement (in centimeters) 
+   */
   void SetSensorDisplacement(Double_t x1=0,   Double_t y1=0,   Double_t z1=0,
                             Double_t x2=.01, Double_t y2=.01, Double_t z2=0);
-  /** Set the rotation of sensors.  The displacement is selected
-      random uniformly between the corresponding minimum and maximum.
-      @param x1 Minimum X rotation (in degrees)
-      @param y1 Minimum Y rotation (in degrees)
-      @param z1 Minimum Z rotation (in degrees)
-      @param x2 Maximum X rotation (in degrees)
-      @param y2 Maximum Y rotation (in degrees)
-      @param z2 Maximum Z rotation (in degrees) */
+  /**
+   * Set the rotation of sensors.  The displacement is selected
+   * random uniformly between the corresponding minimum and maximum.
+   * @param x1 Minimum X rotation (in degrees)
+   * @param y1 Minimum Y rotation (in degrees)
+   * @param z1 Minimum Z rotation (in degrees)
+   * @param x2 Maximum X rotation (in degrees)
+   * @param y2 Maximum Y rotation (in degrees)
+   * @param z2 Maximum Z rotation (in degrees) 
+   */
   void SetSensorRotation(Double_t x1=0,  Double_t y1=0,  Double_t z1=0,
                         Double_t x2=.5, Double_t y2=.5, Double_t z2=.5);
-  /** Set the displacement (translation) of half-rings.  The
-      displacement is selected random uniformly between the
-      corresponding minimum and maximum.
-      @param x1 Minimum X displacement
-      @param y1 Minimum Y displacement
-      @param z1 Minimum Z displacement
-      @param x2 Maximum X displacement
-      @param y2 Maximum Y displacement
-      @param z2 Maximum Z displacement */
+  /**
+   * Set the displacement (translation) of half-rings.  The
+   * displacement is selected random uniformly between the
+   * corresponding minimum and maximum.
+   * @param x1 Minimum X displacement
+   * @param y1 Minimum Y displacement
+   * @param z1 Minimum Z displacement
+   * @param x2 Maximum X displacement
+   * @param y2 Maximum Y displacement
+   * @param z2 Maximum Z displacement 
+   */
   void SetHalfDisplacement(Double_t x1=0,   Double_t y1=0,   Double_t z1=0,
                           Double_t x2=.05, Double_t y2=.05, Double_t z2=.05);
-  /** Set the rotation of half-rings.  The displacement is selected
-      random uniformly between the corresponding minimum and maximum.
-      @param x1 Minimum X rotation (in degrees)
-      @param y1 Minimum Y rotation (in degrees)
-      @param z1 Minimum Z rotation (in degrees)
-      @param x2 Maximum X rotation (in degrees)
-      @param y2 Maximum Y rotation (in degrees)
-      @param z2 Maximum Z rotation (in degrees) */
+  /**
+   * Set the rotation of half-rings.  The displacement is selected
+   * random uniformly between the corresponding minimum and maximum.
+   * @param x1 Minimum X rotation (in degrees)
+   * @param y1 Minimum Y rotation (in degrees)
+   * @param z1 Minimum Z rotation (in degrees)
+   * @param x2 Maximum X rotation (in degrees)
+   * @param y2 Maximum Y rotation (in degrees)
+   * @param z2 Maximum Z rotation (in degrees) 
+   */
   void SetHalfRotation(Double_t x1=0, Double_t y1=0, Double_t z1=0,
                       Double_t x2=0, Double_t y2=0, Double_t z2=0);
-  /** Set the output file name.  Should be a valid CDB URL.
-      @param file CDB URL */
+  /**
+   * Set the output file name.  Should be a valid CDB URL.
+   * @param file CDB URL 
+   */
   void SetOutput(const char* file) { SetTitle(file); }
-  /** Set the file to read the geometry from. 
-      @param file File name */
+  /**
+   * Set the file to read the geometry from. 
+   * @param file File name 
+   */
   void SetGeometryFile(const char* file) { SetName(file); }
-  /** Make the alignment objects. 
-      @param option Not used. */
+  /**
+   * Set the comment  
+   */ 
+  void SetComment(const Char_t* comment="dummy data") { fComment = comment; }
+  /**
+   * Make the alignment objects. 
+   * @param option Not used. 
+   */
   void Exec(Option_t* option="");
+  /** 
+   * Get the geometry
+   * 
+   * @param toCdb   Whether to store in CDB
+   * @param storage Storage element to use 
+   * 
+   * @return true on success 
+   */
+  static Bool_t GetGeometry(Bool_t toCdb=kFALSE, 
+                           const TString& storage=TString());
 protected:
-  AliFMDAlignFaker(const AliFMDAlignFaker& o) : TTask(o) {}
+  /** 
+   * Copy constructor 
+   * 
+   * @param o Object to copy from 
+   */
+  AliFMDAlignFaker(const AliFMDAlignFaker& o) 
+    : TTask(o), 
+      fMask(0), 
+      fSensorTransMin(0,0,0),
+      fSensorTransMax(0,0,0),
+      fSensorRotMin(0,0,0),
+      fSensorRotMax(0,0,0),
+      fHalfTransMin(0,0,0),
+      fHalfTransMax(0,0,0),
+      fHalfRotMin(0,0,0),
+      fHalfRotMax(0,0,0),
+      fRunMin(0), 
+      fRunMax(0),
+      fArray(0),
+      fComment("")
+  {}
+  /** 
+   * Assignment operator 
+   * 
+   * 
+   * @return Reference to this
+   */  
   AliFMDAlignFaker& operator=(const AliFMDAlignFaker&) { return *this; }
   
-  /** Make the alignment object for a path
-      @param path   Node path.
-      @param volID  Volume identifier 
-      @param transX Translation in X
-      @param transY Translation in Y
-      @param transZ Translation in Z
-      @param rotX   Rotation around X axis
-      @param rotY   Rotation around Y axis
-      @param rotZ   Rotation around Z axis
-      @return @c true on success */
+  /**
+   * Make the alignment object for a path
+   * @param path   Node path.
+   * @param volID  Volume identifier 
+   * @param transX Translation in X
+   * @param transY Translation in Y
+   * @param transZ Translation in Z
+   * @param rotX   Rotation around X axis
+   * @param rotY   Rotation around Y axis
+   * @param rotZ   Rotation around Z axis
+   * @return @c true on success 
+   */
   Bool_t MakeAlign(const TString& path, Int_t volID, 
                   Double_t transX, Double_t transY, Double_t transZ,
                   Double_t rotX, Double_t rotY, Double_t rotZ);
-  /** Align a sensor 
-      @param path of a sensor 
-      @param id Volume id */
+  /**
+   * Align a sensor 
+   * @param path of a sensor 
+   * @param id Volume id 
+   */
   Bool_t MakeAlignSensor(const TString& path, Int_t id);
-  /** Align a half-ring
-      @param path of a sensor 
-      @param id Volume id */
+  /**
+   * Align a half-ring
+   * @param path of a sensor 
+   * @param id Volume id 
+   */
   Bool_t MakeAlignHalf(const TString& path, Int_t id);
-  /** Write to CDB */
+  /**
+   * Write to CDB 
+   */
   void   WriteToCDB();
-  /** Write to file */
+  /**
+   * Write to file 
+   */
   void   WriteToFile();
-  
   Long_t        fMask;            // What to write 
   TVector3      fSensorTransMin;  // Minimum translations of a sensor
   TVector3      fSensorTransMax;  // Maximum translations of a sensor
@@ -165,6 +244,7 @@ protected:
   Int_t         fRunMin;          // Run validity start 
   Int_t         fRunMax;          // Run validity end
   TClonesArray* fArray;           // Cache
+  TString       fComment;         // Comment on data
   
   ClassDef(AliFMDAlignFaker,0)
 };