library: libGraf #include "TCurlyArc.h"

# TCurlyArc

class description - source file - inheritance tree (.pdf)

## class TCurlyArc : public TCurlyLine

| Inheritance Chart:
`TObject`
`TAttLine`
`TAttFill`
| <- | `TPolyLine`
| <- | `TCurlyLine`
| <- | `TCurlyArc` |

        public:

                          TCurlyArc()
                          TCurlyArc(Double_t x1, Double_t y1, Double_t rad, Double_t phimin, Double_t phimax, Double_t wl = .02, Double_t amp = .01)
                          TCurlyArc(const TCurlyArc&)
                  virtual ~TCurlyArc()
             virtual void Build()
           static TClass* Class()
            virtual Int_t DistancetoPrimitive(Int_t px, Int_t py)
             virtual void ExecuteEvent(Int_t event, Int_t px, Int_t py)
          static Double_t GetDefaultAmplitude()
            static Bool_t GetDefaultIsCurly()
          static Double_t GetDefaultWaveLength()
                 Double_t GetPhimax() const
                 Double_t GetPhimin() const
                 Double_t GetRadius() const
          virtual TClass* IsA() const
               TCurlyArc& operator=(const TCurlyArc&)
             virtual void SavePrimitive(ofstream& out, Option_t*)
             virtual void SetCenter(Double_t x1, Double_t y1)
              static void SetDefaultAmplitude(Double_t Amplitude)
              static void SetDefaultIsCurly(Bool_t IsCurly)
              static void SetDefaultWaveLength(Double_t WaveLength)
             virtual void SetPhimax(Double_t phimax)
             virtual void SetPhimin(Double_t phimin)
             virtual void SetRadius(Double_t radius)
             virtual void ShowMembers(TMemberInspector& insp, char* parent)
             virtual void Streamer(TBuffer& b)
                     void StreamerNVirtual(TBuffer& b)

### Data Members

        private:

                 Double_t fR1                  Radius of arc
                 Double_t fPhimin              start phi (degrees)
                 Double_t fPhimax              end phi (degrees)
                 Double_t fTheta               used internally
          static Double_t fgDefaultWaveLength  default wavelength
          static Double_t fgDefaultAmplitude   default amplitude
            static Bool_t fgDefaultIsCurly     default curly type

## Class Description

     This class implements curly or wavy arcs typically used to draw Feynman diagrams.
     Amplitudes and wavelengths may be specified in the constructors,
     via commands or interactively from popup menus.
     The class make use of TCurlyLine by inheritance, ExecuteEvent methods
     are highly inspired from the methods used in TPolyLine and TArc.
     The picture below has been generated by the tutorial feynman.

/* */

    ________________________________________________________________________

TCurlyArc(Double_t x1, Double_t y1, Double_t rad, Double_t phimin, Double_t phimax, Double_t wl, Double_t amp) : fR1(rad), fPhimin(phimin),fPhimax(phimax)

     create a new TCurlyarc with center (x1, y1) and radius rad.
     The wavelength and amplitude are given in percent of the line length
     phimin and phimax are given in degrees.

void Build()

    *-*-*-*-*-*-*-*-*-*-*Create a curly (Gluon) or wavy (Gamma) arc*-*-*-*-*-*
    *-*                  ===========================================

Int_t DistancetoPrimitive(Int_t px, Int_t py)

    *-*-*-*-*-*-*-*-*-*-*Compute distance from point px,py to an arc*-*-*-*
    *-*                  ===========================================
      Compute the closest distance of approach from point px,py to this arc.
      The distance is computed in pixels units.

       static Int_t ncalls = 0;
    *-*- Compute distance of point to center of arc

void ExecuteEvent(Int_t event, Int_t px, Int_t py)

    *-*-*-*-*-*-*-*-*-*-*Execute action corresponding to one event*-*-*-*
    *-*                  =========================================
      This member function is called when a TCurlyArc is clicked with the locator

      If Left button clicked on one of the line end points, this point
         follows the cursor until button is released.

      if Middle button clicked, the line is moved parallel to itself
         until the button is released.

void SavePrimitive(ofstream &out, Option_t *)

     Save primitive as a C++ statement(s) on output stream out

void SetCenter(Double_t x, Double_t y)

void SetRadius(Double_t x)

void SetPhimin(Double_t x)

void SetPhimax(Double_t x)

void SetDefaultWaveLength(Double_t WaveLength)

void SetDefaultAmplitude(Double_t Amplitude)

void SetDefaultIsCurly(Bool_t IsCurly)

Double_t GetDefaultWaveLength()

Double_t GetDefaultAmplitude()

Bool_t GetDefaultIsCurly()

### Inline Functions

                   void ~TCurlyArc()
              TCurlyArc TCurlyArc(Double_t x1, Double_t y1, Double_t rad, Double_t phimin, Double_t phimax, Double_t wl = .02, Double_t amp = .01)
               Double_t GetRadius() const
               Double_t GetPhimin() const
               Double_t GetPhimax() const
                TClass* Class()
                TClass* IsA() const
                   void ShowMembers(TMemberInspector& insp, char* parent)
                   void Streamer(TBuffer& b)
                   void StreamerNVirtual(TBuffer& b)
              TCurlyArc TCurlyArc(const TCurlyArc&)
             TCurlyArc& operator=(const TCurlyArc&)

Author: Otto Schaile 20/11/99
Last update: root/graf:$Name: $:$Id: TCurlyArc.cxx,v 1.7 2005/04/20 14:59:38 brun Exp $
Copyright (C) 1995-2000, Rene Brun and Fons Rademakers. *