Ignore:
Timestamp:
03/27/01 11:34:04 (24 years ago)
Author:
tbretz
Message:
*** empty log message ***
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/MagicSoft/Mars/manalysis/MHillas.cc

    r701 r702  
    2020ClassImp(MHillas)
    2121
    22     MHillas::MHillas(const char *name, const char *title) : fEllipse(NULL)
     22MHillas::MHillas(const char *name, const char *title) :
     23    fAlpha(0), fTheta(0), fWidth(0), fLength(0), fSize(0), fDist(0), fEllipse(NULL)
    2324{
    2425    *fName  = name  ? name  : "MHillas";
     
    3637{
    3738    *fLog << "Hillas Parameter:" << endl;
    38     *fLog << " - Alpha  = " << fAlpha  << endl;
     39    *fLog << " - Alpha  = " << fabs(fAlpha)  << endl;
    3940    *fLog << " - Width  = " << fWidth  << endl;
    4041    *fLog << " - Length = " << fLength << endl;
     42    *fLog << " - Size   = " << fSize   << endl;
    4143    *fLog << " - Dist   = " << fDist   << endl;
     44}
     45
     46void MHillas::Paint(Option_t *)
     47{
     48    if (!fEllipse)
     49        return;
     50
     51    fEllipse->Paint();
    4252}
    4353
     
    6070    fEllipse->SetLineWidth(2);
    6171    fEllipse->Draw();
     72
     73    /*
     74     This is from TH1
     75     TString opt = option;
     76   opt.ToLower();
     77   if (gPad && !opt.Contains("same")) {
     78      //the following statement is necessary in case one attempts to draw
     79      //a temporary histogram already in the current pad
     80      if (TestBit(kCanDelete)) gPad->GetListOfPrimitives()->Remove(this);
     81      gPad->Clear();
     82   }
     83   AppendPad(opt.Data());
     84   */
    6285}
    6386
     
    138161
    139162    //
    140     // resolve four-fold ambiguity of solution
     163    // calculate the length of the two axis
    141164    //
    142165    float axis1 =  2.0*c*s*sigmaxy + c*c*sigmaxx + s*s*sigmayy; // [mm^2]
     
    148171    //
    149172    // check for numerical negatives
     173    // (very small number can get negative by chance)
    150174    //
    151175    if (axis1 < 0) axis1=0;
     
    153177
    154178    //
    155     // check the rotation of the axis (maybe turn by 90ø)
    156     //
    157     const int   rotation = axis1<axis2;
    158 
    159     fLength = rotation ? sqrt(axis2) : sqrt(axis1);     // [mm]
    160     fWidth  = rotation ? sqrt(axis1) : sqrt(axis2);     // [mm]
    161 
    162     fAlpha  = rotation ?
    163         fabs(atan((-xmean*c - ymean*s)/(c*ymean - s*xmean))) :
    164         fabs(atan(( ymean*c - xmean*s)/(c*xmean + s*ymean))) ;
    165 
    166         // [deg]
    167 
    168     fAlpha *= kRad2Deg;                                  // [deg]
    169 
    170     fDist   = sqrt(xmean*xmean + ymean*ymean);           // [mm]
    171 
    172     fTheta  = atan(ymean/xmean);                         // [rad]
    173     if (xmean<0) fTheta += kPI;                          // [rad]
    174 }
     179    // calculate the main Hillas parameters
     180    //
     181    // fLength, fWidth describes the two axis of the ellipse
     182    // fAlpha is the angle between the length-axis and the center
     183    //    of the camera
     184    // fDist is the distance between the center of the camera and the
     185    //    denter of the ellipse
     186    //
     187    const int rotation = axis1<axis2;
     188
     189    fLength = rotation ? sqrt(axis2) : sqrt(axis1);  // [mm]
     190    fWidth  = rotation ? sqrt(axis1) : sqrt(axis2);  // [mm]
     191
     192    const float a = c*xmean + s*ymean;
     193    const float b = c*ymean - s*xmean;
     194
     195    fAlpha  = rotation ? atan(a/b) : atan(-b/a);     // [rad]
     196    fAlpha *= kRad2Deg;                              // [deg]
     197
     198    fDist   = sqrt(xmean*xmean + ymean*ymean);       // [mm]
     199
     200    fTheta  = atan(ymean/xmean);                     // [rad]
     201    if (xmean<0) fTheta += kPI;                      // [rad]
     202}
Note: See TracChangeset for help on using the changeset viewer.