*
* 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,
/** 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
Int_t fRunMin; // Run validity start
Int_t fRunMax; // Run validity end
TClonesArray* fArray; // Cache
+ TString fComment; // Comment on data
ClassDef(AliFMDAlignFaker,0)
};