Changeset 7611


Ignore:
Timestamp:
03/15/06 16:39:37 (19 years ago)
Author:
snruegam
Message:
*** empty log message ***
Location:
trunk/MagicSoft/Mars
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/MagicSoft/Mars/Changelog

    r7609 r7611  
    1818
    1919                                                 -*-*- END OF LINE -*-*-
     20
     21 2006/03/15 Stefan Ruegamer
     22
     23   * manalysis/MCameraData.cc
     24     - inserted an image cleaning based on the time information
     25     of the shower (CalcCleaningArrivalTime)
     26   * manalysis/MCameraData.h
     27     - made entry for "CalcCleaningArrivalTime"
     28   * mimage/MImgCleanStd.cc
     29     - created entries for the new image cleaning named "Time"
     30   * mimage/MImgCleanStd.h
     31     - inserted entry "kTime"
     32
     33
    2034
    2135 2006/03/14 Daniela Dorner
  • trunk/MagicSoft/Mars/NEWS

    r7603 r7611  
    22
    33 *** Version  <cvs>
     4
     5   - star: Added new image cleaning based on the arrival time of the shower.
     6     The new cleaning can be accessed using the parameter "Time" instead of
     7     the the old one (like "Absolute) in the star.rc-file.
     8     Recommended parameters:
     9     MImgCleanStd.CleanLevel1:  8.2
     10     MImgCleanStd.CleanLevel2:  5
     11     MImgCleanStd.CleanRings:   2
     12     MImgCleanStd.KeepSinglePixels: No
    413
    514   - star: Simplified the calculation of the effective on time. By letting
  • trunk/MagicSoft/Mars/manalysis/MCameraData.cc

    r7082 r7611  
    1818!   Author(s): Thomas Bretz, 10/2003 <mailto:tbretz@astro.uni-wuerzburg.de>
    1919!   Author(s): Hendrik Bartko, 08/2004 <mailto:hbartko@mppmu.mpg.de>
    20 !
    21 !   Copyright: MAGIC Software Development, 2000-2004
     20!   Author(s): Stefan Ruegamer, 03/2006 <mailto:snruegam@astro.uni-wuerzburg.de>
     21!
     22!   Copyright: MAGIC Software Development, 2000-2006
    2223!
    2324!
     
    380381}
    381382
     383void MCameraData::CalcCleaningArrivalTime(const MSignalCam &evt, const MGeomCam &geom)
     384{
     385    const Int_t n = geom.GetNumPixels();
     386
     387    // Reset arrays
     388    fData.Set(n);
     389    fData.Reset();
     390
     391    fValidity.Set(n);
     392    fValidity.Reset();
     393
     394    // check validity of noise
     395    const Int_t entries = evt.GetNumPixels();
     396    TArrayD u(6), w(6);
     397    TArrayI ii(6);
     398
     399    for (int i=0; i<entries; i++)
     400    {
     401        if (evt[i].IsPixelUnmapped())
     402            continue;
     403
     404        const Double_t t0 = evt[i].GetArrivalTime();
     405        const Double_t s0 = evt[i].GetNumPhotons();
     406        const Double_t r0 = geom.GetPixRatio(i);
     407        const Double_t x0 = geom[i].GetX();
     408        const Double_t y0 = geom[i].GetY();
     409
     410        const Double_t e0 = s0<0.01 ? 100 : 1./s0;
     411
     412        const Int_t n2 = geom[i].GetNumNeighbors();
     413
     414        Int_t cnt2=0;
     415        for (int j=0; j<n2; j++)
     416        {
     417            Int_t idx = geom[i].GetNeighbor(j);
     418
     419            if (evt[idx].IsPixelUnmapped())
     420                continue;
     421
     422            const Double_t tj = evt[idx].GetArrivalTime()-t0;
     423            const Double_t sj = evt[idx].GetNumPhotons();
     424            const Double_t rj = geom.GetPixRatio(idx)+r0;
     425            const Double_t xj = geom[idx].GetX()-x0;
     426            const Double_t yj = geom[idx].GetY()-y0;
     427
     428            const Double_t d2 = xj*xj+yj*yj;
     429
     430            const Double_t ej = sj<0.01 ? 100 : 1./sj;
     431
     432            u[cnt2] =  tj*tj/rj;
     433            w[cnt2] =  1./(e0+ej)/d2;         // TYPE I+II
     434            cnt2++;
     435        }
     436
     437        TMath::Sort(cnt2, u.GetArray(), ii.GetArray(), kFALSE);
     438
     439        Double_t sumt = 0;
     440        Double_t sumw = 0;
     441        for (int j=0; j<TMath::Min(cnt2, 3); j++)
     442        {
     443            sumt += u[ii[j]]*w[ii[j]];
     444            sumw += w[ii[j]];
     445        }
     446
     447        const Double_t wuz = TMath::Sqrt(sumt/sumw);
     448
     449        if (TMath::IsNaN(wuz))
     450            *fLog << warn << "WARNING - MCameraData " << sumt << " " << sumw << endl;
     451
     452        Double_t val = s0<0 || TMath::IsNaN(wuz) || wuz<1e-200 ? 0 : s0*r0/wuz;
     453
     454        if ((s0>0 && wuz<1e-200) || val>100)
     455            val=100;
     456
     457        fData[i] = TMath::Log10(val+1)*5;
     458
     459        if (TMath::IsNaN(fData[i]))
     460            //     0                1e-6          0              NaN
     461            *fLog << warn << "WARNING - MCameraData " << sumt << " " << sumw << " " << wuz << " " << val << endl;
     462
     463        fValidity[i] = 1;
     464    }
     465}
     466
    382467// --------------------------------------------------------------------------
    383468//
  • trunk/MagicSoft/Mars/manalysis/MCameraData.h

    r7082 r7611  
    4242                                 const MGeomCam &geom);
    4343    void CalcCleaningAbsolute(const MSignalCam &evt, const MGeomCam &geom);
     44    void CalcCleaningArrivalTime(const MSignalCam &evt, const MGeomCam &geom);
    4445
    4546    const TArrayD &GetData() const { return fData; }
  • trunk/MagicSoft/Mars/mimage/MImgCleanStd.cc

    r7358 r7611  
    1919!   Author(s): Harald Kornmayer, 1/2001
    2020!   Author(s): Nadia Tonello, 4/2003 <mailto:tonello@mppmu.mpg.de>
     21!   Author(s): Stefan Ruegamer, 03/2006 <mailto:snruegam@astro.uni-wuerzburg.de>
    2122!
    22 !   Copyright: MAGIC Software Development, 2000-2003
     23!   Copyright: MAGIC Software Development, 2000-2006
    2324!
    2425!
     
    580581
    581582    fPed=0;
    582     if (fCleaningMethod!=kAbsolute)
     583    if (fCleaningMethod!=kAbsolute && fCleaningMethod!=kTime)
    583584    {
    584585        fPed = (MPedPhotCam*)pList->FindObject(AddSerialNumber(fNamePedPhotCam), "MPedPhotCam");
     
    622623        fData->CalcCleaningAbsolute(*fEvt, *fCam);
    623624        break;
     625    case kTime:
     626        fData->CalcCleaningArrivalTime(*fEvt, *fCam);
     627        break;
    624628    default:
    625629        break;
     
    686690        *fLog << "absolute";
    687691        break;
     692    case kTime:
     693        *fLog << "time";
     694        break;
     695
    688696    }
    689697    *fLog << " cleaning" << endl;
     
    822830        case kProbability: out << "Probability"; break;
    823831        case kAbsolute:    out << "Absolute";    break;
     832        case kTime    :    out << "Time";        break;
    824833        default:
    825834            break;
     
    889898        if (s.BeginsWith("absolute"))
    890899            SetMethod(kAbsolute);
     900        if (s.BeginsWith("time"))
     901            SetMethod(kTime);
    891902    }
    892903
  • trunk/MagicSoft/Mars/mimage/MImgCleanStd.h

    r6855 r7611  
    2323        kDemocratic,
    2424        kProbability,
    25         kAbsolute
     25        kAbsolute,
     26        kTime,
    2627    } CleaningMethod_t;
    2728
     
    3233
    3334    const MGeomCam     *fCam;  //!
    34           MSignalCam  *fEvt;  //!
     35          MSignalCam   *fEvt;  //!
    3536          MPedPhotCam  *fPed;  //!
    3637          MCameraData  *fData; //!
Note: See TracChangeset for help on using the changeset viewer.