Changeset 6924


Ignore:
Timestamp:
04/11/05 16:15:08 (20 years ago)
Author:
tbretz
Message:
*** empty log message ***
Location:
trunk/MagicSoft/Mars
Files:
5 edited

Legend:

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

    r6499 r6924  
    4646//  through.
    4747//
    48 MMatrixLoop::MMatrixLoop(MHMatrix *mat, const char *name, const char *title) : fMatrix(mat)
     48MMatrixLoop::MMatrixLoop(MHMatrix *mat, const char *name, const char *title) : fMatrix(mat), fOperationMode(kDefault)
    4949{
    5050    fName  = name  ? name  : gsDefName.Data();
     
    7575Int_t MMatrixLoop::PreProcess(MParList *plist)
    7676{
    77     fNumRow = 0;
     77    fNumRow = fOperationMode==kOdd ? 1 : 0;
    7878
    7979    return fMatrix ? kTRUE : kFALSE;
     
    8787Int_t MMatrixLoop::Process()
    8888{
    89     return fMatrix->SetNumRow(fNumRow++);
     89    const Int_t rc = fMatrix->SetNumRow(fNumRow);
     90    fNumRow += fOperationMode==kDefault ? 1 : 2;
     91    return rc;
    9092}
  • trunk/MagicSoft/Mars/manalysis/MMatrixLoop.h

    r6499 r6924  
    1010class MMatrixLoop : public MRead
    1111{
     12public:
     13    enum OperationMode_t {
     14        kDefault,
     15        kEven,
     16        kOdd
     17    };
    1218private:
    1319    // MMatrixLoop
     
    1723    MHMatrix *fMatrix;
    1824    Int_t     fNumRow;    //! Number of dimensions of histogram
     25
     26    Byte_t fOperationMode;
    1927
    2028    // MRead
     
    3341    MMatrixLoop(MHMatrix *mat, const char *name=NULL, const char *title=NULL);
    3442
     43    void SetOperationMode(OperationMode_t mode) { fOperationMode = mode; }
     44
    3545    ClassDef(MMatrixLoop, 0) // Task 'reading' events from a MHMatrix
    3646};
  • trunk/MagicSoft/Mars/mhflux/MHEnergyEst.cc

    r6917 r6924  
    7878    fHResolution.SetDirectory(NULL);
    7979    fHResolution.SetName("EnergyRes");
    80     fHResolution.SetTitle("Histogram in \\frac{\\Delta E}{E_{mc}} vs E_{est} and E_{mc}");
     80    fHResolution.SetTitle("Histogram in \\frac{\\Delta lg(E)}{lg(E_{mc})} vs E_{est} and E_{mc}");
    8181    fHResolution.SetXTitle("E_{est} [GeV]");
    8282    fHResolution.SetYTitle("E_{mc} [GeV]");
    83     fHResolution.SetZTitle("\\frac{E_{est} - E_{mc}}{E_{mc}}");
     83    fHResolution.SetZTitle("\\frac{lg(E_{est}) - lg(E_{mc})}{lg(E_{mc})}");
    8484
    8585    fHImpact.SetDirectory(NULL);
    8686    fHImpact.SetName("Impact");
    87     fHImpact.SetTitle("\\frac{\\Delta E}{E} vs Impact parameter");
     87    fHImpact.SetTitle("\\frac{\\Delta lg(E)}{lg(E)} vs Impact parameter");
    8888    fHImpact.SetXTitle("Impact parameter [m]");
    89     fHImpact.SetYTitle("\\frac{E_{est} - E_{mc}}{E_{mc}}");
     89    fHImpact.SetYTitle("\\frac{lg(E_{est}) - lg(E_{mc})}{lg(E_{mc})}");
    9090
    9191    fHEnergy.Sumw2();
     
    9797    binst.SetEdgesCos(50, 0, 60);
    9898    binsi.SetEdges(10, 0, 400);
    99     binsr.SetEdges(10, 0, 1);
     99    binsr.SetEdges(50, -1.3, 1.3);
    100100
    101101    SetBinning(&fHEnergy,     &binse, &binse, &binst);
     
    164164    const Double_t imp   = fMatrix ? GetVal(1) : fMcEvt->GetImpact()/100;
    165165    const Double_t theta = fMatrix ? GetVal(2) : fMcEvt->GetTelescopeTheta()*TMath::RadToDeg();
    166     const Double_t res   = (eest-etru)/etru;
     166    const Double_t res   = (log10(eest)-log10(etru));///log10(etru);
     167    const Double_t resE   = (eest-etru)/etru;
    167168
    168169    fHEnergy.Fill(eest, etru, theta, w);
    169     fHResolution.Fill(eest, etru, TMath::Abs(res), w);
    170     fHImpact.Fill(imp, TMath::Abs(res), w);
    171 
    172     fChisq += TMath::Abs(res);//*res;
     170    fHResolution.Fill(eest, etru, resE, w);
     171    fHImpact.Fill(imp, resE, w);
     172
     173    fChisq += res*res;
    173174    fBias  += res;
    174175
     
    181182    fBias  /= GetNumExecutions();
    182183
    183     Double_t res = fChisq; //TMath::Sqrt(fChisq - fBias*fBias);
    184 
    185     fResult->SetVal(TMath::IsNaN(res)?0:res);/// GetNumExecutions());
    186 
    187     *fLog << all << "Mean Energy Resoltuion: " << Form("%.1f%%", fResult->GetVal()*100) << endl;
    188     *fLog << all << "Energy Bias at:         " << Form("%.1f%%", fBias*100) << endl;
     184    Double_t sigma = TMath::Sqrt(fChisq);//+TMath::Abs(fBias);
     185    fResult->SetVal(sigma);
     186
     187    *fLog << all << "Mean log10(Energy) Resoltion: " << Form("%.1f%%", TMath::Sqrt(fChisq-fBias*fBias)*100) << endl;
     188    *fLog << all << "Mean log10(Energy) Bias:      " << Form("%.1f%%", fBias*100) << endl;
    189189
    190190    return kTRUE;
     
    239239            }
    240240
    241             //pad->GetPad(1)->GetPad(2)->cd(2);
     241            pad->GetPad(1)->GetPad(2)->cd(2);
     242            /*=*/fHResolution.ProjectionZ("Resolution");
    242243            ///*h =*/ fHImpact.ProjectionX("Impact", -1, 9999, "e");
    243244        }
     
    294295    gPad->SetBorderMode(0);
    295296    gPad->SetLogx();
     297    gPad->SetGridx();
     298    gPad->SetGridy();
    296299
    297300    //gROOT->GetListOfCleanups()->Add(gPad); // WHY?
     
    301304    h2->SetBit(kCanDelete);
    302305    h2->SetFillColor(kBlue);
     306    h2->SetLineColor(kRed);
    303307
    304308    TH1D *h1 = h2->ProfileX(Form("Prof%s", h.GetName()), -1, 9999, "s");
     
    310314    h1->SetStats(kFALSE);
    311315
    312  
    313     //h1->Draw("E3");
    314     h2->Draw();
     316    h2->Draw("");
     317    h1->Draw("E3same");
    315318    h1->Draw("Chistsame");
    316319
     
    346349    gPad->SetBorderMode(0);
    347350
     351    gPad->SetGridx();
     352    gPad->SetGridy();
    348353    gPad->SetLogx();
    349354    h = (TH1D*)fHEnergy.Project3D("ey");
     
    376381    pad3->Divide(2, 1, 1e-10, 1e-10);
    377382    pad3->cd(1);
    378     gPad->SetBorderMode(0);/*
     383    gPad->SetBorderMode(0);
     384    gPad->SetGridx();
     385    gPad->SetGridy();
     386    h = fHEnergy.Project3D("ez");
     387    h->SetTitle("Zenith Angle Distribution");
     388    h->SetBit(TH1::kNoStats);
     389    h->SetDirectory(NULL);
     390    h->SetXTitle("\\Theta [\\circ]");
     391    h->SetBit(kCanDelete);
     392    h->Draw();
     393
     394    pad3->cd(2);
     395    gPad->SetBorderMode(0);
     396    gPad->SetGridx();
     397    gPad->SetGridy();
     398    /*
    379399    h = fHImpact.ProjectionX("Impact", -1, 9999, "e");
    380400    h->SetBit(TH1::kNoStats);
     
    384404    h->SetBit(kCanDelete);
    385405    h->Draw();*/
    386     h = fHEnergy.Project3D("ez");
    387     h->SetTitle("Distribution of Theta");
    388     h->SetBit(TH1::kNoStats);
     406    // ----------------------------------------
     407    h = fHResolution.ProjectionZ("Resolution");
     408    //h->SetXTitle("\\frac{lg(E_{est}) - lg(E_{mc})}{lg(E_{mc})}");
     409    h->SetYTitle("Counts");
     410    h->SetTitle("Distribution of \\Delta lg(E) / lg(E_{mc})");
    389411    h->SetDirectory(NULL);
    390     h->SetXTitle("\\Theta [\\circ]");
    391412    h->SetBit(kCanDelete);
    392     h->Draw();
    393 
    394     pad3->cd(2);
    395     gPad->SetBorderMode(0);
     413    h->GetXaxis()->SetRangeUser(-1.3, 1.3);
     414    h->Draw("");
     415    // ----------------------------------------
    396416
    397417    pad->cd(2);
     
    413433    h = MakePlot(fHResolution, "zy");
    414434    h->SetXTitle("E_{mc} [GeV]");
    415     h->SetYTitle("\\frac{E_{est} - E_{mc}}{E_{mc}}");
    416     h->SetTitle("Energy resolution \\Delta E / E vs Monte Carlo energy E_{mc}");
    417     h->SetMinimum(0);
    418     h->SetMaximum(1);
     435    h->SetYTitle("\\frac{lg(E_{est}) - lg(E_{mc})}{lg(E_{mc})}");
     436    h->SetTitle("Energy resolution \\Delta lg(E) / lg(E) vs Monte Carlo energy E_{mc}");
     437    h->SetMinimum(-1.3);
     438    h->SetMaximum(1.3);
    419439
    420440    pad2->cd(3);
    421441    h = MakePlot(fHResolution, "zx");
    422442    h->SetXTitle("E_{est} [GeV]");
    423     h->SetYTitle("\\frac{E_{est} - E_{mc}}{E_{mc}}");
    424     h->SetTitle("Energy Resolution \\Delta E / E vs estimated Energy E_{est}");
    425     h->SetMinimum(0);
    426     h->SetMaximum(1);
     443    h->SetYTitle("\\frac{lg(E_{est}) - lg(E_{mc})}{lg(E_{mc})}");
     444    h->SetTitle("Energy Resolution \\Delta lg(E) / lg(E) vs estimated Energy E_{est}");
     445    h->SetMinimum(-1.3);
     446    h->SetMaximum(1.3);
    427447}
    428448
  • trunk/MagicSoft/Mars/mjobs/MJOptimize.cc

    r6907 r6924  
    228228}
    229229
    230 MJOptimize::MJOptimize() : fDebug(-1), fNumEvents(0), fType(kSimplex), fNumMaxCalls(0), fTolerance(0)
     230MJOptimize::MJOptimize() : fDebug(-1), fNumEvents(0), fType(kSimplex), fNumMaxCalls(0), fTolerance(0), fTestTrain(kFALSE)
    231231{
    232232    fRules.SetOwner();
     
    642642    }
    643643
     644    MMatrixLoop *loop = dynamic_cast<MMatrixLoop*>(parlist.FindTask("MRead"));
     645
    644646    TString txt("Starting ");
    645647    switch (fType)
     
    666668    *fLog << inf << "Number of Parameters: " << fParameters.GetSize() << endl;
    667669
     670    // In case the reader is the matrix loop and testrain is enabled
     671    // switch on even mode...
     672    if (loop && fTestTrain)
     673        loop->SetOperationMode(MMatrixLoop::kEven);
     674
    668675    if (!Optimize(evtloop))
    669676        return kFALSE;
     
    672679
    673680    fEvtLoop->SetDisplay(fDisplay);
    674     return Fcn(fParameters);
     681    if (!Fcn(fParameters))
     682        return kFALSE;
     683
     684    // In case the reader is the matrix loop and testrain is enabled
     685    // switch on odd mode...
     686    if (!loop || !fTestTrain)
     687        return kTRUE;
     688
     689    loop->SetOperationMode(MMatrixLoop::kOdd);
     690
    675691    // Done already in Fcn
    676692    // list.SetVariables(fParameters);
     693    return Fcn(fParameters);
    677694}
    678695
  • trunk/MagicSoft/Mars/mjobs/MJOptimize.h

    r6896 r6924  
    8484    UInt_t  fNumMaxCalls;
    8585    Float_t fTolerance;
     86    Bool_t  fTestTrain;
    8687
    8788    Bool_t Optimize(MEvtLoop &evtloop);
     
    108109    void SetNumMaxCalls(UInt_t num=0) { fNumMaxCalls=num; }
    109110    void SetTolerance(Float_t tol=0)  { fTolerance=tol; }
     111    void EnableTestTrain(Bool_t b=kTRUE) { fTestTrain=b; }
    110112
    111113    // Parameter access
Note: See TracChangeset for help on using the changeset viewer.