#ifndef ALIDETECTOR_H
# include <AliDetector.h>
#endif
-#ifndef ROOT_TBranch
-# include <TBranch.h>
+#ifndef ROOT_TArrayI
+# include <TArrayI.h>
#endif
class TBranch;
class TClonesArray;
class TBrowser;
class TMarker3DBox;
+class TArrayI;
class AliDigitizer;
class AliFMDHit;
@param name Name of object.
@param title Title of object. */
AliFMD(const char *name, const char *title);
- /** Copy constructor
- @param other Object to copy from */
- AliFMD(const AliFMD& other);
/** Destructor */
virtual ~AliFMD();
- /** Assignment operator
- @param other Object to assign from
- @return Reference to this object */
- AliFMD& operator=(const AliFMD& other);
/** Wheter to make a detailed geometry
@param use If true, make detailed geometry */
void UseDetailed(Bool_t use=kTRUE) { fDetailed = use; }
AliFMDGeometry to construct the geometry. This in turn calls
AliFMDGeometryBuilder. */
virtual void CreateGeometry();
+ /** Create entries for alignable volumes associating the symbolic volume
+ name with the corresponding volume path. Needs to be syncronized with
+ eventual changes in the geometry. */
+ virtual void AddAlignableVolumes() const;
/** Create the tracking mediums used by the FMD. This associates
the tracking mediums defined with the FMD in the
TVirtualMCApplication (AliMC).
/** @{*/
/** @name Graphics and event display */
- /** Build simple ROOT TNode geometry for event display. With the new
- geometry modeller, TGeoManager, this seems rather redundant. */
- virtual void BuildGeometry();
/** Draw a shaded view of the Forward multiplicity detector. This
isn't really useful anymore. */
- virtual void DrawDetector();
- /** Calculate the distance from the mouse to the FMD on the screen
- Dummy routine */
- virtual Int_t DistanceToPrimitive(Int_t px, Int_t py);
- /** Store x, y, z of all hits in memory for display.
- Normally, the hits are drawn using TPolyMarker3D - however, that
- is not very useful for the FMD. Therefor, this member function
- is overloaded to make TMarker3D, via the class AliFMDPoints.
- AliFMDPoints is a local class.
- @param track the track number to load the hits for */
- virtual void LoadPoints(Int_t track);
+ virtual void DrawDetector() {}
/** @}*/
/** @{ */
/** Set the TClonesArray to read hits into.
@param b The branch to containn the hits */
virtual void SetHitsAddressBranch(TBranch *b);
+ /** Set the TClonesArray to read sdigits into.
+ @param b The branch to containn the sdigits */
+ virtual void SetSDigitsAddressBranch(TBranch *b);
/** Set branch address for the Hits, Digits, and SDigits Tree. */
virtual void SetTreeAddress();
/** Get the array of summable digits
@param count1 ADC count (a 10-bit word)
@param count2 ADC count (a 10-bit word), or -1 if not used
@param count3 ADC count (a 10-bit word), or -1 if not used */
- virtual void AddDigitByFields(UShort_t detector=0,
- Char_t ring='\0',
- UShort_t sector=0,
- UShort_t strip=0,
- UShort_t count1=0,
- Short_t count2=-1,
- Short_t count3=-1);
+ virtual void AddDigitByFields(UShort_t detector=0,
+ Char_t ring='\0',
+ UShort_t sector=0,
+ UShort_t strip=0,
+ UShort_t count1=0,
+ Short_t count2=-1,
+ Short_t count3=-1,
+ Short_t count4=-1,
+ const TArrayI& refs=TArrayI());
/** Add a digit to the Digit tree
@param digits
- digits[0] [UShort_t] Detector #
- digits[1] [Char_t] Ring ID
- digits[2] [UShort_t] Sector #
- digits[3] [UShort_t] Strip #
- - digits[4] [UShort_t] ADC Count
- - digits[5] [Short_t] ADC Count, -1 if not used
- - digits[6] [Short_t] ADC Count, -1 if not used */
+ - digits[4] [Float_t] Edep
+ - digits[5] [UShort_t] ADC Count
+ - digits[6] [Short_t] ADC Count, -1 if not used
+ - digits[7] [Short_t] ADC Count, -1 if not used
+ - digits[8] [Short_t] ADC Count, -1 if not used
+ - digits[9] [UShort_t] N total particles
+ - digits[10] [UShort_t] N total primary particles
+ */
virtual void AddSDigit(Int_t *digits);
/** add a summable digit - as coming from data
@param detector Detector # (1, 2, or 3)
@param count1 ADC count (a 10-bit word)
@param count2 ADC count (a 10-bit word), or -1 if not used
@param count3 ADC count (a 10-bit word), or -1 if not used */
- virtual void AddSDigitByFields(UShort_t detector=0,
- Char_t ring='\0',
- UShort_t sector=0,
- UShort_t strip=0,
- Float_t edep=0,
- UShort_t count1=0,
- Short_t count2=-1,
- Short_t count3=-1);
+ virtual void AddSDigitByFields(UShort_t detector=0,
+ Char_t ring='\0',
+ UShort_t sector=0,
+ UShort_t strip=0,
+ Float_t edep=0,
+ UShort_t count1=0,
+ Short_t count2=-1,
+ Short_t count3=-1,
+ Short_t count4=-1,
+ UShort_t ntot=0,
+ UShort_t nprim=0,
+ const TArrayI& refs=TArrayI());
/** @}*/
/** @{ */
/** @{ */
/** @name Raw data */
- /** Turn digits into raw data. This uses the class AliFMDRawWriter
- to do the job. Please refer to that class for more
- information. */
- virtual void Digits2Raw();
+ /**
+ * Turn digits into raw data. This uses the class AliFMDRawWriter to
+ * do the job. Please refer to that class for more information.
+ */
+ virtual void Digits2Raw();
+ /**
+ * Convert raw data to sdigits
+ *
+ * @param reader Raw reader
+ *
+ * @return @c true on success
+ */
+ virtual Bool_t Raw2SDigits(AliRawReader* reader);
/** @}*/
/** @{ */
- /** @name Utility */
- /** Browse this object
- @param b Browser to show this object in */
+ /**
+ * @name Utility
+ */
+ /**
+ * Browse this object
+ *
+ * @param b Browser to show this object in
+ */
void Browse(TBrowser* b);
/** @}*/
protected:
kAlId, // ID index of Al medium
kCarbonId, // ID index of Carbon medium
kCopperId, // ID index of Copper Medium
- kKaptonId // ID index of Kapton Medium
+ kKaptonId, // ID index of Kapton Medium
+ kSteelId // ID index of Steel medium
};
TObjArray* fBad; //! debugging - bad hits
-
+
+private:
+ /** Copy constructor
+ @param other Object to copy from */
+ AliFMD(const AliFMD& other);
+ /** Assignment operator
+ @param other Object to assign from
+ @return Reference to this object */
+ AliFMD& operator=(const AliFMD& other);
+
ClassDef(AliFMD,11) // Base class FMD entry point
};