# include <AliReconstructor.h>
#endif
#include "AliLog.h"
+#include <AliFMDBoolMap.h>
//____________________________________________________________________
class TTree;
class TClonesArray;
class AliFMDDigit;
class AliRawReader;
+class AliFMDRawReader;
class AliESDEvent;
class AliESDFMD;
class AliFMDRecoParam;
* AliFMDAltroReader. The digits are put in the passed TTree @a
* digitsTree.
*
- * @param reader Raw reader.
- * @param digitsTree Tree to store read digits in.
+ * @note This is the first part of the reconstruction as done by the
+ * offical steering class AliReconstruction.
+ *
+ * @param reader Raw reader. @param digitsTree Tree to store read
+ * digits in.
*/
virtual void ConvertDigits(AliRawReader* reader, TTree* digitsTree) const;
/**
* them on the output tree @a clusterTree. An FMD ESD object is
* created in parallel.
*
+ * @note This is the second part of the reconstruction as done by
+ * the offical steering class AliReconstruction.
+ *
* @param digitsTree Tree holding the digits of this event
* @param clusterTree Tree to store AliFMDRecPoint objects in.
*/
* TClonesArray of AliFMDDigits
*/
virtual void Reconstruct(AliRawReader *, TTree*) const;
+ /**
+ * Not used.
+ *
+ * @todo This is called by the above same member function but with a
+ * pointer to a AliRawReader object and a pointer to a TTree object.
+ *
+ * @param reader Reader object
+ */
+ virtual void Reconstruct(AliFMDRawReader& reader) const;
/**
* Put in the ESD data, the FMD ESD data. The object created by
* the Reconstruct member function is copied to the ESD object.
*
+ * @note This is the third part of the reconstruction as done by
+ * the offical steering class AliReconstruction.
+ *
* @param digitsTree Tree of digits for this event - not used
* @param clusterTree Tree of reconstructed points for this event -
* not used.
*/
virtual void FillESD(AliRawReader*, TTree* clusterTree,
AliESDEvent* esd) const;
-
+ /**
+ * Return the filled FMD ESD object
+ *
+ * @return FMD ESD object
+ */
+ AliESDFMD* GetESDObject() const { return fESDObj; }
/**
* Create SDigits from raw data
*
* @param use If true, make the diagnostics file
*/
void SetDiagnose(Bool_t use=kTRUE) { fDiagnostics = use; }
- /**
- * Functions to use the FMD as an offline trigger. The idea is to read
- * the data until we are certain we have one particle. If no particle is
- * found the functions return kFALSE. These functions were added as a
- * result of the discussions in the First Physics Working Group.
- * *
- * @param AliESDFMD* fmd the FMD data from one event.
+ /**
+ * Process AliFMDDigit objects in @a digits. For each digit, find
+ * the psuedo-rapidity @f$ \eta@f$, azimuthal angle @f$ \varphi@f$,
+ * energy deposited @f$ E@f$, and psuedo-inclusive multiplicity @f$
+ * M@f$.
+ *
+ * @param digits Array of digits.
+ * @param rawRead Raw reader used
*/
- static Bool_t GetFMDAsideBit(AliESDFMD* fmd);
- static Bool_t GetFMDCsideBit(AliESDFMD* fmd);
-
+ virtual void ProcessDigits(TClonesArray* digits,
+ const AliFMDRawReader& rawRead) const;
+
protected:
/**
* Copy CTOR
*
* @param other Object to copy from.
*/
- AliFMDReconstructor(const AliFMDReconstructor& other);
+ AliFMDReconstructor(const AliFMDReconstructor&); //Not implemented
/**
* Assignment operator
*
*
* @return reference to this object
*/
- AliFMDReconstructor& operator=(const AliFMDReconstructor& other);
+ AliFMDReconstructor& operator=(const AliFMDReconstructor&); //Not implemented
+ /**
+ * Run some checks before reconstruction, clear internal arrays, etc.
+ *
+ * @return true on success
+ */
+ Bool_t PreReconstruct() const;
/**
* Try to get the vertex from either ESD or generator header. Sets
* @c fCurrentVertex to the found Z posistion of the vertex (if
* @param esd ESD structure to get Vz from
*/
virtual void GetVertex(AliESDEvent* esd) const;
+ /**
+ * Set-up reconstructor to use values from reconstruction
+ * parameters, if present, for this event. If the argument @a set
+ * is @c false, then restore preset values.
+ *
+ * @param set
+ */
+ virtual void UseRecoParam(Bool_t set=kTRUE) const;
/**
* Process AliFMDDigit objects in @a digits. For each digit, find
* the psuedo-rapidity @f$ \eta@f$, azimuthal angle @f$ \varphi@f$,
*
* @param digits Array of digits.
*/
- virtual void ProcessDigits(TClonesArray* digits) const;
+ virtual void ProcessDigits(TClonesArray* digits) const;
/**
* Process a single digit
*
Float_t& eta,
Float_t& phi) const;
/**
- * Set-up reconstructor to use values from reconstruction
- * parameters, if present, for this event. If the argument @a set
- * is @c false, then restore preset values.
+ * Mark dead channels as invalid, and those that are marked as invalid
+ * but are not dead, get the zero signal.
*
- * @param set
- */
- virtual void UseRecoParam(Bool_t set=kTRUE) const;
+ * @param esd ESD object to modify.
+ */
+ void MarkDeadChannels(AliESDFMD* esd) const;
+
/**
* Utility member function to get the reconstruction parameters for
* this event
TH1* fDiagAll; // Diagnostics histogram
mutable Bool_t fZS[3]; // Zero-suppredded?
mutable UShort_t fZSFactor[3]; // Noise factor for Zero-suppression
+ mutable AliFMDBoolMap fBad; // Strip marked bad
+ Bool_t fZombie; // Are we a zombie?
private:
ClassDef(AliFMDReconstructor, 3) // class for the FMD reconstruction