Changeset 7401 for trunk/MagicSoft


Ignore:
Timestamp:
11/15/05 11:36:17 (19 years ago)
Author:
tbretz
Message:
*** empty log message ***
Location:
trunk/MagicSoft/Mars
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/MagicSoft/Mars/Changelog

    r7400 r7401  
    1818
    1919                                                 -*-*- END OF LINE -*-*-
     20 2005/11/15 Thomas Bretz
     21
     22   * macros/optim/optimdisp.C, macros/optim/optimenergy.C,
     23     macros/optim/rfenergyest.C:
     24     - added some more comments
     25     - updated
     26
     27   * mtools/MTFillMatrix.[h,cc]:
     28     - added the possibility to use PreCuts like in MJOptim
     29
     30
     31
    2032 2005/11/14 Daniela Dorner
    2133
  • trunk/MagicSoft/Mars/macros/optim/optimdisp.C

    r7153 r7401  
     1/* More explanations at the end of the file */
    12void optimdisp()
    23{
    3     MJOptimizeDisp opt;
    4     opt.SetDebug(2);
    5     opt.SetOptimizer(MJOptimize::kSimplex);
    6     opt.EnableTestTrain();
     4    MJOptimizeDisp opt;                     // Initialize optimization class
     5    opt.SetDebug(2);                        // Choose the level of output
     6    opt.SetOptimizer(MJOptimize::kMigrad);  // Choose the fit algorithm (see MJOptimize)
     7    opt.EnableTestTrain();                  // Split sample into test and train
    78
    89    // -------------------- Setup ----------------------------
    9     //opt.AddParameter("1-(MHillas.fWidth/MHillas.fLength)");
    10     opt.AddParameter("atan(1./(1-(MHillas.fWidth/MHillas.fLength)))");
    11     //opt.AddParameter("log10(MNewImagePar.fLeakage1+1)");
     10    opt.AddParameter("1-(MHillas.fWidth/MHillas.fLength)"); // M[0]
     11    opt.AddParameter("log10(MNewImagePar.fLeakage1+1)");    // M[1]
    1212
    13     opt.FixParameter(0, 0.743871,  0,  2);  //0.562676
    14     opt.FixParameter(1, 0.329471,  0,  2);  //0.317315
    15     opt.FixParameter(2, 1.500002,  0, 10);  //1.55754
     13    opt.SetParameter(0,  1.30871);                          // Setup [0]
     14    opt.SetParameter(1,  5.81119);                          // Setup [1]
     15    opt.SetParameter(2,  0.763486);                         // Setup [2]
    1616
    17     // Leakage==0: RMS = 0.030
    18     // Leakage>0:  RMS = 0.010
    19 
    20     // all: 0.029 (0.605991, 0.332266, 1.50825)
    21 
    22     //char *r = "([0]+(pow(M[1],[1])*[2]))/M[0]";
    23     //char *r = "([0]+(pow(M[1],[1])*[2]))*M[0]";
    24     //char *r = "[0]*M[0]";
    25     char *r = "[0]/M[0]";
     17    char *r = "([0]+([1]*pow(M[1], [2])))*M[0]";            // Rule to calc Disp
    2618
    2719    // -------------------- Run ----------------------------
     
    3022    opt.SetDisplay(d);
    3123
    32     opt.AddPreCut("MNewImagePar.fLeakage1<0.0001");
     24    /*
     25     -------------------- Magic-Cuts ----------------------
     26     MFMagicCuts cuts;
     27     cuts.SetHadronnessCut(MFMagicCuts::kArea);
     28     cuts.SetThetaCut(MFMagicCuts::kOn);
     29
     30     TArrayD arr(10);
     31     arr[0]=  1.3245;
     32     arr[1]=  0.208700;
     33     arr[2]=  0.229200;
     34     arr[3]=  5.305200;
     35     arr[4]=  0.098930;
     36     arr[5]= -0.082950;
     37     arr[6]=  8.2957;
     38     arr[7]=  0.8677;
     39
     40     cuts.SetVariables(arr);
     41
     42     opt.AddPreCut(&cuts);
     43
     44     -------------------- Other cuts ----------------------
     45     opt.AddPreCut("MNewImagePar.fLeakage1<0.0001");
     46    */
     47
    3348    opt.RunDisp("ganymedmcpart.root", r);
    3449}
     50
     51/* ------------------ Good strategy -------------------
     52 1) first fix parameters:
     53      opt.FixParameter(1,  0);
     54      opt.FixParameter(2,  1);
     55    and process only showers without leakage
     56      opt.AddPreCut("MNewImagePar.fLeakage1<0.0001");
     57 2) release parameters 1 and 2 and fix 0 to the result of 1)
     58      opt.FixParameter(0,  0.8362);
     59      opt.SetParameter(1,  2.0);
     60      opt.SetParameter(2,  0.8);
     61    and process only showers with leakage
     62      opt.AddPreCut("MNewImagePar.fLeakage1>0.0001");
     63 3) release all parameters and start with the result of 1) and 2)
     64      opt.SetParameter(0,  0.8362);
     65      opt.SetParameter(1,  5.84);
     66      opt.SetParameter(2,  0.76);
     67    and process all showers. (Comment out opt.PreCuts())
     68 */
  • trunk/MagicSoft/Mars/macros/optim/optimenergy.C

    r7170 r7401  
    1818    opt.SetDisplay(d);
    1919
    20     //opt.AddPreCut("MNewImagePar.fLeakage1<0.0001");
     20    /*
     21     -------------------- Magic-Cuts ----------------------
     22     MFMagicCuts cuts;
     23     cuts.SetHadronnessCut(MFMagicCuts::kArea);
     24     cuts.SetThetaCut(MFMagicCuts::kOn);
     25
     26     TArrayD arr(10);
     27     arr[0]=  1.3245;
     28     arr[1]=  0.208700;
     29     arr[2]=  0.229200;
     30     arr[3]=  5.305200;
     31     arr[4]=  0.098930;
     32     arr[5]= -0.082950;
     33     arr[6]=  8.2957;
     34     arr[7]=  0.8677;
     35
     36     cuts.SetVariables(arr);
     37
     38     opt.AddPreCut(&cuts);
     39
     40     -------------------- Other cuts ----------------------
     41     opt.AddPreCut("MPointingPos.fZd<7");
     42    */
     43
    2144    opt.RunEnergy("ganymedmcpart.root", r);
    2245}
  • trunk/MagicSoft/Mars/macros/optim/rfenergyest.C

    r7396 r7401  
    11void rfenergyest()
    22{
    3     MSequence seqtst("~/Software/Mars/mranforest/sequencemc-test.txt");
    4     MSequence seqtrn("~/Software/Mars/mranforest/sequencemc-train.txt");
     3    MSequence seqtst("~/Software/mc/sequencemc-test.txt");
     4    MSequence seqtrn("~/Software/mc/sequencemc-train.txt");
    55
    66    if (!seqtst.IsValid())
     
    2222
    2323    MDirIter iter, iter2;
    24     seqtrn.SetupDatRuns(iter,  MSequence::kImages, "~/Software/mc");
    25     seqtst.SetupDatRuns(iter2, MSequence::kImages, "~/Software/mc");
     24    seqtrn.SetupDatRuns(iter,  MSequence::kImages, "~/Software/mc/img-abs");
     25    seqtst.SetupDatRuns(iter2, MSequence::kImages, "~/Software/mc/img-abs");
    2626
    2727    read.AddFiles(iter);
     
    6060    fill.SetReader(&read);
    6161
     62    /* ---------- It doesn't seem to improve anything ----------
     63     MFMagicCuts cuts;
     64
     65     cuts.SetHadronnessCut(MFMagicCuts::kArea);
     66     cuts.SetThetaCut(MFMagicCuts::kOn);
     67
     68     TArrayD arr(10);
     69     arr[0]=  1.3245;
     70     arr[1]=  0.208700;
     71     arr[2]=  0.229200;
     72     arr[3]=  5.305200;
     73     arr[4]=  0.098930;
     74     arr[5]= -0.082950;
     75     arr[6]=  8.2957;
     76     arr[7]=  0.8677;
     77
     78     cuts.SetVariables(arr);
     79
     80     fill.AddPreCut(&cuts);
     81
     82     --------------- Use the cuts also in test-loop ----------------
     83     */
     84
    6285    if (!fill.Process())
    6386        return;
     
    7194    MBinning b(32, 10, 100000, "BinningEnergyEst", "log");
    7295    /*
    73     if (!rf.TrainMultiRF(train, b.GetEdgesD()))    // classification
     96    if (!rf.TrainMultiRF(train, b.GetEdgesD()))    // classification with one tree per bin
    7497        return;
    7598
    76     if (!rf.TrainSingleRF(train, b.GetEdgesD()))   // classification
     99    if (!rf.TrainSingleRF(train, b.GetEdgesD()))   // classification into different bins
    77100        return;
    78101    */
    79     if (!rf.TrainSingleRF(train))                  // regression
     102    if (!rf.TrainSingleRF(train))                  // regression (best choice)
    80103        return;
    81104
     
    90113
    91114    MHEnergyEst hist;
     115    //MContinue cont(&cuts);
     116    //cont.SetInverted();
    92117    MFillH fillh(&hist);
    93118
    94119    tlist.AddToList(&read2);
     120    //tlist.AddToList(&cont);
    95121    tlist.AddToList(&rf);
    96122    tlist.AddToList(&fillh);
  • trunk/MagicSoft/Mars/mtools/MTFillMatrix.cc

    r7130 r7401  
    1818!   Author(s): Thomas Bretz, 12/2003 <mailto:tbretz@astro.uni-wuerzburg.de>
    1919!
    20 !   Copyright: MAGIC Software Development, 2000-2003
     20!   Copyright: MAGIC Software Development, 2000-2005
    2121!
    2222!
     
    8181#include <TFile.h>
    8282
     83// environment
    8384#include "MHMatrix.h"
    8485
     
    8687#include "MLogManip.h"
    8788
     89// eventloop
    8890#include "MParList.h"
    8991#include "MTaskList.h"
    9092#include "MEvtLoop.h"
    9193
     94// tasks
    9295#include "MRead.h"
    9396#include "MFillH.h"
    9497#include "MContinue.h"
     98
     99// filters
     100#include "MF.h"
    95101#include "MFilterList.h"
    96102#include "MFEventSelector.h"
     
    174180        delete fReference;
    175181}
     182
     183//------------------------------------------------------------------------
     184//
     185// Add a cut which is used to fill the matrix, eg "MMcEvt.fOartId<1.5"
     186// (The rule is applied, nit inverted: The matrix is filled with
     187// the events fullfilling the condition)
     188//
     189void MTFillMatrix::AddPreCut(const char *rule)
     190{
     191    MFilter *f = new MF(rule);
     192    f->SetBit(kCanDelete);
     193    AddPreCut(f);
     194}
     195
     196//------------------------------------------------------------------------
     197//
     198// Add a cut which is used to fill the matrix. If kCanDelete is set
     199// MJOptimize takes the ownership.
     200//
     201void MTFillMatrix::AddPreCut(MFilter *f)
     202{
     203    fPreCuts.Add(f);
     204}
     205
    176206
    177207// --------------------------------------------------------------------------
     
    236266
    237267    //
     268    // Continue for PreCuts
     269    //
     270    MFilterList list;
     271    list.SetName("PreCuts");
     272    if (!list.AddToList(fPreCuts))
     273        *fLog << err << "ERROR - Calling MFilterList::AddToList for fPreCuts failed!" << endl;
     274
     275    MContinue cont0(&list);
     276    cont0.SetInverted();
     277
     278    //
    238279    // Continue for all events which are not (SetInverted())
    239280    // selected by the 'selector'
     
    268309    // entries in MTaskList
    269310    tlist.AddToList(fReader);        // Read events
     311    if (fPreCuts.GetEntries()>0)
     312        tlist.AddToList(&cont0);     // PreCuts
    270313    if (fReference && selector)
    271314        tlist.AddToList(&cont);      // select a sample of events
Note: See TracChangeset for help on using the changeset viewer.