X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=FMD%2FAliFMDDisplay.h;h=cbcd00d3dbdf40e2972a655862fe8f53e44eb1b1;hb=49ed65adc66d2e032460836a3ffdab94d97ecad1;hp=937db3ff24d79bdfa26357ef85c6bd6e63543a60;hpb=42f1b2f58c7412f4914c2eeaaf691707aeac83b7;p=u%2Fmrichter%2FAliRoot.git diff --git a/FMD/AliFMDDisplay.h b/FMD/AliFMDDisplay.h index 937db3ff24d..cbcd00d3dbd 100644 --- a/FMD/AliFMDDisplay.h +++ b/FMD/AliFMDDisplay.h @@ -20,6 +20,7 @@ // #include "AliFMDInput.h" #include +#include class TCanvas; class TPad; class TButton; @@ -34,98 +35,183 @@ class TH1; class AliFMDDisplay : public AliFMDInput { public: - /** Constructor - @param onlyFMD Only show the FMD - @param gAliceFile galice file*/ + /** + * Constructor + * + * @param onlyFMD Only show the FMD + * @param gAliceFile galice file + */ AliFMDDisplay(Bool_t onlyFMD=kTRUE, const char* gAliceFile="galice.root"); - /** DTOR */ + /** + * DTOR + */ virtual ~AliFMDDisplay(); - /** Singleton access function - @return Singleton object. */ + /** + * Singleton access function + * + * @return Singleton object. + */ static AliFMDDisplay* Instance(); - /** Continue to next event */ + /** + * Continue to next event + */ void Continue() { fWait = kFALSE; } - /** Zoom mode */ + /** + * Run throug events as fast as possible + */ + void Start() { fContinous = kTRUE; fWait = kFALSE; } + /** + * Pause the processing + */ + void Pause() { fContinous = kFALSE; fWait = kTRUE; } + /** + * Zoom mode + */ void Zoom() { fZoomMode = kTRUE; } - /** Pick mode */ + /** + * Pick mode + */ void Pick() { fZoomMode = kFALSE; } - /** Redisplay the event */ + /** + * Redisplay the event + */ virtual void Redisplay(); // *MENU* - /** Break */ + /** + * Break + */ virtual void Break(); - /** Render in 3D */ + /** + * Render in 3D + */ virtual void Render(); - /** Change cut */ + /** + * Change cut + */ virtual void ChangeCut(); - /** Change cut */ + /** + * Change cut + */ virtual void ChangeFactor(); - /** Called when a mouse or similar event happens in the display. - @param event Event type - @param px where the event happened in pixels along X - @param py where the event happened in pixels along Y */ + /** + * Called when a mouse or similar event happens in the display. + * + * @param event Event type + * @param px where the event happened in pixels along X + * @param py where the event happened in pixels along Y + */ virtual void ExecuteEvent(Int_t event, Int_t px, Int_t py); - /** Calculate distance from point @f$ (p_x,p_y)@f$ to this object. - @param px Pixel X coordinate - @param py Pixel Y coordinate - @return distance. */ - virtual Int_t DistancetoPrimitive(Int_t px, Int_t py); - /** Paint into canvas - @param option Not used */ + /** + * Paint into canvas + * + * @param option Not used + */ virtual void Paint(Option_t* option="") { (void)option; } - /** Initialize - @return @c false on error */ + /** + * Initialize + * + * @return @c false on error + */ virtual Bool_t Init(); - /** Called at beginning of an event - @param event Event number - @return @c false on error */ + /** + * Called at beginning of an event + * + * @param event Event number + * @return @c false on error + */ virtual Bool_t Begin(Int_t event); - /** Called at end of an event - @return @c false on error */ + /** + * Called at end of an event + * + * @return @c false on error + */ virtual Bool_t End(); - /** Visualize a hit - @param hit Hit - @param p Track - @return @c false on error */ + /** + * Visualize a hit + * + * @param hit Hit + * @param p Track + * @return @c false on error + */ virtual Bool_t ProcessHit(AliFMDHit* hit, TParticle* p); - /** Visualize a digit - @param digit Digit to draw - @return @c false on error */ + /** + * Visualize a digit + * + * @param digit Digit to draw + * @return @c false on error + */ virtual Bool_t ProcessDigit(AliFMDDigit* digit); - /** Visualize a summable digit - @param sdigit Summable digit to draw - @return @c false on error */ + /** + * Visualize a summable digit + * + * @param sdigit Summable digit to draw + * @return @c false on error + */ virtual Bool_t ProcessSDigit(AliFMDSDigit* sdigit); - /** Visualize a raw digit - @param digit Raw digit. - @return @c false on error */ - virtual Bool_t ProcessRaw(AliFMDDigit* digit); - /** Visualize a reconstructed point. - @param recpoint Reconstructed point - @return @c false on error */ + /** + * Visualize a raw digit + * + * @param digit Raw digit. + * @return @c false on error + */ + virtual Bool_t ProcessRawDigit(AliFMDDigit* digit); + /** + * Visualize a raw digit + * + * @param digit Raw digit. + * @return @c false on error + */ + virtual Bool_t ProcessRawCalibDigit(AliFMDDigit* digit); + /** + * Visualize a reconstructed point. + * + * @param recpoint Reconstructed point + * @return @c false on error + */ virtual Bool_t ProcessRecPoint(AliFMDRecPoint* recpoint); - /** Process ESD data for the FMD. Users should overload this to - deal with ESD data. - @param d Detector number (1-3) - @param r Ring identifier ('I' or 'O') - @param s Sector number (0-19, or 0-39) - @param t Strip number (0-511, or 0-255) - @param eta Psuedo-rapidity - @param mult Psuedo-multiplicity - @return @c false on error */ + /** + * Process ESD data for the FMD. Users should overload this to + * deal with ESD data. + * + * @param d Detector number (1-3) + * @param r Ring identifier ('I' or 'O') + * @param s Sector number (0-19, or 0-39) + * @param t Strip number (0-511, or 0-255) + * @param eta Psuedo-rapidity + * @param mult Psuedo-multiplicity + * + * @return @c false on error + */ virtual Bool_t ProcessESD(UShort_t d, Char_t r, UShort_t s, UShort_t t, Float_t eta, Float_t mult); - /** Look up a color index, based on the value @a x and the maximum - value of @a x - @param x Value - @param max Maximum (for example 1023 for digits) - @return @c false on error */ + /** + * Look up a color index, based on the value @a x and the maximum + * value of @a x + * + * @param x Value + * @param max Maximum (for example 1023 for digits) + * @return @c false on error + */ virtual Int_t LookupColor(Float_t x, Float_t min, Float_t max) const; + + /** + * Set range of displayed values + */ + virtual void SetCut(Float_t l=0., Float_t h=1.); //*MENU* + /** + * Set the noise factor + * + * @param f Noise factor + */ + virtual void SetFactor(Float_t f=1); protected: - /** Copy constructor - @param o Object to copy from */ + /** + * Copy constructor + * + * @param o Object to copy from + */ AliFMDDisplay(const AliFMDDisplay& o) : AliFMDInput(o), fWait(kFALSE), @@ -150,41 +236,96 @@ protected: fSpec(0), fSpecCut(0), fAux(0), - fReturn(kFALSE) + fReturn(kFALSE), + fContinous(kFALSE), + fTimeout(), + fInitialMin(0), + fInitialMax(1), + fInitialFactor(3./10) { } - /** Assignment operator - @return Reference to this object */ + /** + * Assignment operator + * + * @return Reference to this object + */ AliFMDDisplay& operator=(const AliFMDDisplay&) { return *this; } - /** Add a marker to the display - @param x X position - @param y Y position - @param z Z position - @param o Object to refer to - @param s Signal - @param max Maximum of signal */ + /** + * Add a marker to the display + * + * @param x X position + * @param y Y position + * @param z Z position + * @param o Object to refer to + * @param s Signal + * @param max Maximum of signal + */ virtual void AddMarker(Float_t x, Float_t y, Float_t z, TObject* o, Float_t s, Float_t min, Float_t max); - /** Add a marker to the display - @param det Detector - @param rng Ring - @param sec Sector - @param str Strip - @param o Object to refer to - @param s Signal - @param max Maximum of signal */ + /** + * Add a marker to the display + * + * @param det Detector + * @param rng Ring + * @param sec Sector + * @param str Strip + * @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 min, Float_t max); - /** Show only the FMD detectors. */ + /** + * Show only the FMD detectors. + */ void ShowOnlyFMD(); - /** Make base canvas */ + /** + * Make base canvas + */ virtual void MakeCanvas(const char** which); + /** + * Make AUX canvas + * + */ virtual void MakeAux(); + /** + * Draw AUX canvas + * + */ virtual void DrawAux(); + /** + * Set the ROOT event loop to idle + * + */ virtual void Idle(); + /** + * Called at end of event loop + * + */ virtual void AtEnd(); + /** + * Whether a point is inside + * + * @param v Point + * @param min Minimum + * @param max Maximum + * + * @return true if @a v is inside cut + */ virtual Bool_t InsideCut(Float_t v, const Float_t& min, const Float_t& max) const; + /** + * Get the ADC threshold + * + * @param d Detector + * @param r Ring + * @param s Sector + * @param t Strip + * + * @return The threshold + */ + virtual Double_t GetADCThreshold(UShort_t d, Char_t r, + UShort_t s, UShort_t t) const; static AliFMDDisplay* fgInstance; // Static instance Bool_t fWait; // Wait until user presses `Continue' @@ -210,6 +351,21 @@ protected: TH1* fSpecCut; // Cut spectra TCanvas* fAux; // Aux canvas. Bool_t fReturn; // Stop + Bool_t fContinous; // Run continuous - do not stop + TTimer fTimeout; // Timeout + Float_t fInitialMin;// Initial minimum + Float_t fInitialMax;// Initial maximum + Float_t fInitialFactor;//Initial factor + + struct Range_t { + UInt_t fNbins; // Number of bins + Float_t fLow; // Low cut + Float_t fHigh; // High cut + }; + static const Range_t fgkEdepRange; // Energy loss range + static const Range_t fgkAdcRange; // ADC counts range + static const Range_t fgkMultRange; // Multiplicity range + ClassDef(AliFMDDisplay,0) // FMD specialised event display };