#include "AliFMDDisplay.h"
#include <TArrayI.h>
#include <TObjArray.h>
-#include <TGraph.h>
+// #include <TGraph.h>
#include <TLatex.h>
#include <TLine.h>
class TCanvas;
class AliFMDPattern : public AliFMDDisplay
{
public:
- struct Detector
+ /** @class AliFMDPatternDetector
+ @brief Utility for the pattern display.
+ The name is this long, because the code-checker even cares about
+ nested names, even though it seems a bit nit-picking and
+ retareded. It's a class rather than a structure, because the
+ code checker thinks that structs are only for POD - sigh! */
+ class AliFMDPatternDetector
{
- Detector(UShort_t id);
- ~Detector();
+ public:
+ /** Constructor */
+ AliFMDPatternDetector(UShort_t id);
+ /** Destructor */
+ ~AliFMDPatternDetector();
+ /** Clear this detector */
void Clear();
+ /** Get the total number of hits */
Int_t Total() const { return Int_t(fCounts.GetSum()); }
+ /** Called at the end of things */
void End();
- void Begin(Int_t nlvl, Double_t r, TObjArray& inners, TObjArray& outers);
+ /** Initiate.
+ @param nlvl Number of levels.
+ @param r Radius
+ @param inners Array of inner shapes
+ @param outers Array of outer shapes */
+ void Begin(Int_t nlvl, Double_t r, TObjArray& inners,
+ TObjArray& outers);
+ /** Draw everything
+ @param a Array of shapes to draw */
void DrawShape(TObjArray& a);
+ /** Add a marker at specified coordinates
+ @param X X coordinate
+ @param Y Y coordinate
+ @param Z Z coordinate
+ @param max The maximum value to scale to */
void AddMarker(Double_t x, Double_t y, Float_t s, Float_t max);
- Int_t fId;
- TArrayI fCounts;
- TObjArray fGraphs;
- TH2* fFrame;
+ Int_t fId; // Identifier #
+ TArrayI fCounts; // Number of counts at each level
+ TObjArray fGraphs; // Array of graphs - one for each level
+ TH2* fFrame; // The mother frame
+ private:
+ /** Copy constructor
+ - Not implemented. */
+ AliFMDPatternDetector(const AliFMDPatternDetector&);
+ /** Assignement operator
+ -- Not implemented */
+ AliFMDPatternDetector& operator=(const AliFMDPatternDetector&);
+ void CopyShapes(TObjArray& input, TObjArray& own,
+ Double_t ang=0, Double_t fx=1, Double_t fy=1);
+ /** Our own cache of shapes */
+ TObjArray fInners;
+ /** Our own cache of shapes */
+ TObjArray fOuters;
};
@return @c false on error */
virtual Bool_t Begin(Int_t event);
protected:
+ /** Copy constructor
+ - Not implemented. */
+ AliFMDPattern(const AliFMDPattern&);
+ /** Assignement operator
+ -- Not implemented */
+ AliFMDPattern& operator=(const AliFMDPattern&);
+ virtual void AddMarker(Float_t x, Float_t y, Float_t z,
+ TObject* o, Float_t s, Float_t min, Float_t max)
+ {
+ AliFMDDisplay::AddMarker(x, y, z, o, s, min, max);
+ }
/** Add a marker to the display
@param det Detector
@param rng Ring
@param o Object to refer to
@param s Signal
@param max Maximum of signal */
- virtual void AddMarker(UShort_t det, Char_t rng, UShort_t sec, UShort_t str,
- TObject* o, Float_t s, Float_t max);
+ virtual void AddMarker(UShort_t det, Char_t rng, UShort_t sec,
+ UShort_t str, TObject* o, Float_t s,
+ Float_t min, Float_t max);
+ /** @param hit Hit to process */
virtual Bool_t ProcessHit(AliFMDHit* hit, TParticle*);
+ /** Re-draw the patterns */
virtual void Redisplay();
+ /** Called at the end. */
virtual void AtEnd();
/** Graph to show shape of inner sensor */
- TObjArray fInners;
+ TObjArray fInners; // Graph to show shape of inner sensor
/** Graph to show shape of outer sensor */
- TObjArray fOuters;
+ TObjArray fOuters; // Graph to show shape of outer sensor
/** Max inner radius */
- Float_t fInnerMax;
+ Float_t fInnerMax; // Max inner radius
/** Max outer radius */
- Float_t fOuterMax;
+ Float_t fOuterMax; // Max outer radius
/** FMD1 Pad */
- TPad* fFMD1Pad;
- /** FMD1 Frame */
- Detector fFMD1;
+ TPad* fFMD1Pad; // FMD1 Pad
+ /** FMD1 Frame */
+ AliFMDPatternDetector fFMD1; // FMD1 Frame
/** FMD2 Pad */
- TPad* fFMD2Pad;
- /** FMD2 Frame */
- Detector fFMD2;
+ TPad* fFMD2Pad; // FMD2 Pad
+ /** FMD2 Frame */
+ AliFMDPatternDetector fFMD2; // FMD2 Frame
/** FMD3 Pad */
- TPad* fFMD3Pad;
- /** FMD3 Frame */
- Detector fFMD3;
+ TPad* fFMD3Pad; // FMD3 Pad
+ /** FMD3 Frame */
+ AliFMDPatternDetector fFMD3; // FMD3 Frame
/** Summary pad */
- TPad* fSummary;
+ TPad* fSummary; // Summary pad
/** Text fields */
- TLatex fEvent;
- TLatex fFMD1Sum;
- TLatex fFMD2Sum;
- TLatex fFMD3Sum;
- TLine fLine;
- TLatex fTotal;
+ TLatex fEvent; // Text fields
+ TLatex fFMD1Sum; // Total in FMD1
+ TLatex fFMD2Sum; // Total in FMD1
+ TLatex fFMD3Sum; // Total in FMD1
+ TLine fLine; // Just a line
+ TLatex fTotal; // Total in FMD
- ClassDef(AliFMDPattern,0)
+ ClassDef(AliFMDPattern,0) // Display FMD data as hit-patterns.
};