Changeset 6874 for trunk/MagicSoft/Mars


Ignore:
Timestamp:
03/23/05 09:42:31 (20 years ago)
Author:
tbretz
Message:
*** empty log message ***
Location:
trunk/MagicSoft/Mars
Files:
16 edited

Legend:

Unmodified
Added
Removed
  • trunk/MagicSoft/Mars/Changelog

    r6873 r6874  
    2121
    2222                                                 -*-*- END OF LINE -*-*-
     23 2005/03/23 Thomas Bretz
     24
     25   * ganymed.cc:
     26     - implemented wobble-mode option
     27
     28   * mhflux/MAlphaFitter.[h,cc]:
     29     - fixed a problem in wobble mode (number of on- minus number
     30       of off-entries where calculated as 0)
     31     - added some additional resource options for scaling
     32     - added some missing const-qualifiers
     33
     34   * mhflux/MHAlpha.cc:
     35     - some cosmetic change to output
     36
     37   * mjobs/MDataSet.[h,cc]:
     38     - added the possibility to add a source name for wobble mode
     39       (preliminary)
     40     - added reading from *.edb catalog
     41
     42   * mjobs/MJCalibTest.cc, mjobs/MJCalibrateSignal.cc,
     43     mjobs/MJCalibration.cc, mjobs/MJPedestal.cc:
     44     - replaced iter.Print("all") by iter.Print()
     45
     46   * mjobs/MJCut.[h,cc]:
     47     - implemented wobble mode
     48     - implemented getting source position
     49
     50   * mpointing/MSrcPosCalc.[h,cc]:
     51     - always writa the anti-source position into the parameter list, too
     52     - implemented wobble mode (exchange source and anti-source position)
     53
     54
     55
    2356 2005/03/22 Thomas Bretz
    2457
  • trunk/MagicSoft/Mars/NEWS

    r6869 r6874  
    9797       the shower image (MNewImagePar2)
    9898
     99     - implemented wobble-mode in ganymed
     100
    99101
    100102
  • trunk/MagicSoft/Mars/ganymed.cc

    r6604 r6874  
    4848    gLog << " Root Options:" << endl;
    4949    gLog << "   -b                        Batch mode (no graphical output to screen)" << endl<<endl;
     50    gLog << " Operation Mode:" << endl;
     51    gLog << "   --wobble                  Wobble Mode" << endl << endl;
    5052    gLog << " Options:" << endl;
    5153    gLog.Usage();
     
    6466    gLog << "   --res[=filename]          Enable writing of result file (surviving events)" << endl;
    6567    gLog << "   --write-only              Only write output files. No histograms filled." << endl;
    66     gLog << "   --print-seq               Print Sequences information" << endl;
     68    gLog << "   --print-ds                Print Dataset information" << endl;
    6769    gLog << "   --print-files             Print Files taken from Sequences ('+' found, '-' missing)" << endl;
    6870    gLog << "   --config=ganymed.rc       Resource file [default=ganymed.rc]" << endl;
     
    103105    const TString kConfig       = arg.GetStringAndRemove("--config=", "ganymed.rc");
    104106
    105     const Bool_t  kPrintSeq     = arg.HasOnlyAndRemove("--print-seq");
     107    const Bool_t  kPrintSeq     = arg.HasOnlyAndRemove("--print-ds");
    106108    const Bool_t  kPrintFiles   = arg.HasOnlyAndRemove("--print-files");
    107109    const Bool_t  kDebugMem     = arg.HasOnlyAndRemove("--debug-mem");
     
    114116    const Bool_t  kOverwrite    = arg.HasOnlyAndRemove("-f");
    115117    //const Bool_t  kForceExec  = arg.HasOnlyAndRemove("-ff");
     118
     119    const Bool_t  kModeWobble   = arg.HasOnlyAndRemove("--wobble");
    116120
    117121    const Int_t   kNumAnalysis  = arg.GetIntAndRemove("--n=", -1);
     
    215219    job.SetNameResultFile(kNameResult);
    216220    job.EnableWriteOnly(kWriteOnly);
     221    job.EnableWobbleMode(kModeWobble);
    217222    if (kWriteSummary) // Don't change flag set in SetNameSummaryFile
    218223        job.EnableStorageOfSummary();
  • trunk/MagicSoft/Mars/mhflux/MAlphaFitter.cc

    r6282 r6874  
    213213}
    214214
    215 Bool_t MAlphaFitter::Fit(TH1D &hon, TH1D &hof, Double_t alpha, Bool_t paint)
    216 {
    217     /*
    218      Clear();
    219      if (hon.GetEntries()==0)
    220      return kFALSE;
    221      */
    222 
     215Bool_t MAlphaFitter::Fit(const TH1D &hon, const TH1D &hof, Double_t alpha, Bool_t paint)
     216{
    223217    TH1D h(hon);
    224     h.Add(&hof, -1);
     218    h.Add(&hof, -1); // substracts also number of entries!
     219    h.SetEntries(hon.GetEntries());
    225220
    226221    MAlphaFitter fit(*this);
     
    558553        txt = txt.Strip(TString::kBoth);
    559554        txt.ToLower();
    560         if (txt==(TString)"Significance")
     555        if (txt==(TString)"significance")
    561556            fStrategy = kSignificance;
    562         if (txt==(TString)"SignificanceChi2")
     557        if (txt==(TString)"significancechi2")
    563558            fStrategy = kSignificanceChi2;
    564559        rc = kTRUE;
    565560    }
    566561
    567     return rc;
    568 }
     562    if (IsEnvDefined(env, prefix, "ScaleMode", print))
     563    {
     564        TString txt = GetEnvValue(env, prefix, "ScaleMode", "");
     565        txt = txt.Strip(TString::kBoth);
     566        txt.ToLower();
     567        if (txt==(TString)"none")
     568            fScaleMode = kNone;
     569        if (txt==(TString)"entries")
     570            fScaleMode = kEntries;
     571        if (txt==(TString)"integral")
     572            fScaleMode = kIntegral;
     573        if (txt==(TString)"offregion")
     574            fScaleMode = kOffRegion;
     575        if (txt==(TString)"leastsquare")
     576            fScaleMode = kLeastSquare;
     577        if (txt==(TString)"userscale")
     578            fScaleMode = kUserScale;
     579        rc = kTRUE;
     580    }
     581    if (IsEnvDefined(env, prefix, "Scale", print))
     582    {
     583        fScaleUser = GetEnvValue(env, prefix, "Scale", fScaleUser);
     584        rc = kTRUE;
     585    }
     586
     587    return rc;
     588}
  • trunk/MagicSoft/Mars/mhflux/MAlphaFitter.h

    r6283 r6874  
    125125
    126126    Bool_t Fit(TH1D &h, Bool_t paint=kFALSE);
    127     Bool_t Fit(TH1D &on, TH1D &off, Double_t alpha, Bool_t paint=kFALSE);
     127    Bool_t Fit(const TH1D &on, const TH1D &off, Double_t alpha, Bool_t paint=kFALSE);
    128128    Bool_t Fit(TH1D &on, TH1D *off, Double_t alpha, Bool_t paint=kFALSE)
    129129    {
  • trunk/MagicSoft/Mars/mhflux/MHAlpha.cc

    r6283 r6874  
    827827    //Bool_t rc = fFit.Fit(*h);
    828828    //delete h;
     829
    829830    if (!fFit.FitAlpha(fHAlpha, fOffData))
    830831    {
    831         *fLog << warn << "Histogram empty." << endl;
     832        *fLog << warn << "MAlphaFitter - Fit failed..." << endl;
    832833        return kTRUE;
    833834    }
  • trunk/MagicSoft/Mars/mjobs/MDataSet.cc

    r6453 r6874  
    6868
    6969#include <stdlib.h>
     70#include <fstream>
    7071
    7172#include <TEnv.h>
     
    7778
    7879#include "MRead.h"
     80#include "MAstro.h"
    7981#include "MDirIter.h"
    8082#include "MSequence.h"
     83#include "MPointingPos.h"
    8184
    8285ClassImp(MDataSet);
     
    113116        TString name = env.GetValue(Form("Sequence%08d.File", num[i]), "");
    114117        TString dir  = env.GetValue(Form("Sequence%08d.Dir",  num[i]), "");
     118
     119        gSystem->ExpandPathName(name);
     120        gSystem->ExpandPathName(dir);
    115121
    116122        if (name.IsNull())
     
    160166    Split(str, fNumSequencesOff);
    161167
    162 
    163168    ResolveSequences(env, fNumSequencesOn,  fSequencesOn);
    164169    ResolveSequences(env, fNumSequencesOff, fSequencesOff);
    165170
    166171
     172    fNameSource = env.GetValue("SourceName", "");
     173    fCatalog    = env.GetValue("Catalog",    "~/Software/data/magic_favorites.edb");
    167174
    168175    //Print();
     
    205212    gLog << endl;
    206213
     214    gLog << "SourceName: " << fNameSource << endl;
     215    gLog << "Catalog:    " << fCatalog << endl;
     216
    207217    if (!TString(o).Contains("files", TString::kIgnoreCase))
    208218        return;
     
    242252    }
    243253
     254    if (gLog.GetDebugLevel()>4)
     255    {
     256        gLog << dbg << "Files which are searched:" << endl;
     257        files.Print();
     258    }
     259
    244260    return read.AddFiles(files)>0;
    245261}
     
    261277    return AddSequencesToList(fSequencesOff, read, id, raw);
    262278}
     279
     280Bool_t MDataSet::GetSourcePos(MPointingPos &pos) const
     281{
     282    if (!HasSource())
     283        return kFALSE;
     284
     285    TString catalog(fCatalog);
     286    gSystem->ExpandPathName(catalog);
     287
     288    ifstream fin(catalog);
     289    if (!fin)
     290    {
     291        gLog << err << "Cannot open file " << catalog << ": ";
     292        gLog << strerror(errno) << endl;
     293        return kFALSE;
     294    }
     295
     296    TString ra,dec,epoch;
     297
     298    Int_t n = 0;
     299    while (1)
     300    {
     301        TString line;
     302        line.ReadLine(fin);
     303        if (!fin)
     304            break;
     305
     306        n++;
     307        line = line.Strip(TString::kBoth);
     308
     309        if (!line.BeginsWith(fNameSource))
     310            continue;
     311
     312        // CrabNebula,f|L|K0,5:34:32.0,22:0:52,-1.0,2000
     313
     314        for (int i=0; i<6; i++)
     315        {
     316            const Ssiz_t p = line.First(',');
     317            if (p<0 && i<5)
     318            {
     319                gLog << err << "Not enough arguments in line #" << n << endl;
     320                return kFALSE;
     321            }
     322
     323            switch (i)
     324            {
     325            case 0:
     326            case 1:
     327            case 4:
     328                break;
     329            case 2:
     330                ra = line(0, p);
     331                break;
     332            case 3:
     333                dec = line(0, p);
     334                break;
     335            case 5:
     336                epoch = line;
     337                break;
     338            }
     339            line.Remove(0, p+1);
     340        }
     341
     342        if (line.First(',')>=0)
     343        {
     344            gLog << err << "Too much arguments in line #" << n << endl;
     345            return kFALSE;
     346        }
     347        break;
     348    }
     349
     350    if (epoch!=(TString)"2000")
     351    {
     352        gLog << err << "Epoch not 2000... not supported." << endl;
     353        return kFALSE;
     354    }
     355
     356    Double_t r,d;
     357    if (!MAstro::Coordinate2Angle(ra, r))
     358    {
     359        gLog << err << "ERROR - Interpreting right ascension: " << ra << endl;
     360        return kFALSE;
     361    }
     362    if (!MAstro::Coordinate2Angle(dec, d))
     363    {
     364        gLog << err << "ERROR - Interpreting declination: " << dec << endl;
     365        return kFALSE;
     366    }
     367
     368    pos.SetSkyPosition(r, d);
     369    pos.SetTitle(fNameSource);
     370
     371    return kTRUE;
     372}
  • trunk/MagicSoft/Mars/mjobs/MDataSet.h

    r6453 r6874  
    1111
    1212class MRead;
     13class MPointingPos;
    1314
    1415class MDataSet : public MParContainer
     
    2324    TList fSequencesOff;      // list of names and paths of off-sequences
    2425
     26
     27    TString  fNameSource;     // Name of source from catalog
     28    TString  fCatalog;        // edb catalog (magic_favourites.edb)
     29
     30
    2531    void Split(TString &runs, TArrayI &data) const;
    2632    void ResolveSequences(TEnv &env, const TArrayI &num, TList &list) const;
     
    3137    MDataSet(const char *fname);
    3238
    33     void Print(Option_t *o="") const;
    34 
     39    // Getter
    3540    Bool_t IsValid() const { return fNumAnalysis!=(UInt_t)-1; }
    3641
     42    UInt_t GetNumSequencesOn() const  { return fNumSequencesOn.GetSize(); }
     43    UInt_t GetNumSequencesOff() const { return fNumSequencesOff.GetSize(); }
     44
     45    Bool_t HasOffSequences() const { return GetNumSequencesOff()>0; }
     46
     47    UInt_t GetNumAnalysis() const { return fNumAnalysis; }
     48    void   SetNumAnalysis(UInt_t num) { fNumAnalysis=num; }
     49
     50    Bool_t HasSource() const { return !fNameSource.IsNull(); }
     51    Bool_t GetSourcePos(MPointingPos &pos) const;
     52
     53    // Setter
    3754    static Bool_t AddSequencesToList(const TList &list, MRead &read, char *id="I", Bool_t raw=kFALSE);
    3855
     
    4158    Bool_t AddFilesOff(MRead &read, char *id="I", Bool_t raw=kFALSE) const;
    4259
    43     UInt_t GetNumSequencesOn() const  { return fNumSequencesOn.GetSize(); }
    44     UInt_t GetNumSequencesOff() const { return fNumSequencesOff.GetSize(); }
    45 
    46     Bool_t HasOffSequences() const { return GetNumSequencesOff()>0; }
    47 
    48     // Getter
    49     UInt_t GetNumAnalysis() const { return fNumAnalysis; }
    50     void   SetNumAnalysis(UInt_t num) { fNumAnalysis=num; }
     60    // TObject
     61    void Print(Option_t *o="") const;
    5162
    5263    ClassDef(MDataSet, 0)
  • trunk/MagicSoft/Mars/mjobs/MJCalibTest.cc

    r6872 r6874  
    330330            {
    331331                *fLog << dbg << "Files which are searched:" << endl;
    332                 iter.Print("all");
     332                iter.Print();
    333333            }
    334334          return kFALSE;
  • trunk/MagicSoft/Mars/mjobs/MJCalibrateSignal.cc

    r6872 r6874  
    330330            {
    331331                *fLog << dbg << "Files which are searched:" << endl;
    332                 iter.Print("all");
     332                iter.Print();
    333333            }
    334334            return kFALSE;
  • trunk/MagicSoft/Mars/mjobs/MJCalibration.cc

    r6872 r6874  
    17661766            {
    17671767                *fLog << dbg << "Files which are searched:" << endl;
    1768                 iter.Print("all");
     1768                iter.Print();
    17691769            }
    17701770            return kFALSE;
  • trunk/MagicSoft/Mars/mjobs/MJCut.cc

    r6820 r6874  
    5858#include "MDataSet.h"
    5959#include "MParameters.h"
     60#include "MPointingPos.h"
    6061#include "MObservatory.h"
    6162
     
    7071MJCut::MJCut(const char *name, const char *title)
    7172    : fStoreSummary(kFALSE), fStoreResult(kFALSE), fWriteOnly(kFALSE),
    72     fEstimateEnergy(0), fCalcHadronness(0)
     73    fIsWobble(kFALSE), fEstimateEnergy(0), fCalcHadronness(0)
    7374{
    7475    fName  = name  ? name  : "MJCut";
     
    243244    EnableStorageOfSummary(GetEnv("SummaryFile", fStoreSummary));
    244245    EnableStorageOfResult(GetEnv("ResultFile", fStoreResult));
     246    EnableWobbleMode(GetEnv("WobbleMode", fIsWobble));
    245247
    246248    return kTRUE;
     
    307309    MObservatory obs;
    308310    plist.AddToList(&obs);
     311
     312    // Possible source position (eg. Wobble Mode)
     313    MPointingPos source("MSourcePos");
     314    if (set.GetSourcePos(source))
     315    {
     316        plist.AddToList(&source);
     317        *fLog << inf << "Using Source Position: " << source.GetTitle() << endl;
     318    }
     319    else
     320        *fLog << inf << "No source position applied..." << endl;
    309321
    310322    // Initialize default binnings
     
    323335    MAlphaFitter fit;
    324336    plist.AddToList(&fit);
     337    if (fIsWobble)
     338        fit.SetScaleMode(MAlphaFitter::kNone);
    325339
    326340    MFillH falpha("MHAlphaOff [MHAlpha]", "MHillasSrc", "FillAlpha");
     
    342356    readoff.AddTree("Drive");
    343357    readoff.AddTree("EffectiveOnTime");
    344     set.AddFilesOff(readoff);
     358    if (fIsWobble)
     359        set.AddFilesOn(readoff);
     360    else
     361        set.AddFilesOff(readoff);
    345362
    346363    const TString path(Form("%s/", fPathOut.Data()));
     
    375392    // How to get source position from off- and on-data?
    376393    MSrcPosCalc scalc;
     394    if (fIsWobble)
     395        scalc.SetWobbleMode(); /********************/
    377396    MHillasCalc hcalc;
     397    MHillasCalc hcalc2("MHillasCalcAnti");
    378398    hcalc.SetFlags(MHillasCalc::kCalcHillasSrc);
     399    hcalc2.SetFlags(MHillasCalc::kCalcHillasSrc);
     400    hcalc2.SetNameHillasSrc("MHillasSrcAnti");
     401    hcalc2.SetNameSrcPosCam("MSrcPosAnti");
    379402
    380403    MTaskList tlist2;
    381404    tlist2.AddToList(&scalc);
    382405    tlist2.AddToList(&hcalc);
     406    if (fIsWobble)
     407        tlist2.AddToList(&hcalc2);
    383408    tlist2.AddToList(&taskenv1);
    384409    tlist2.AddToList(&taskenv2);
     
    414439        return kFALSE;
    415440
    416     if (set.HasOffSequences())
     441    if (set.HasOffSequences() || fIsWobble)
    417442    {
    418443        // Execute first analysis
     
    427452        if (!evtloop.GetDisplay())
    428453        {
    429             *fLog << err << GetDescriptor() << ": Execution stopped by used." << endl;
     454            *fLog << err << GetDescriptor() << ": Execution stopped by user." << endl;
    430455            return kFALSE;
    431456        }
     
    439464    set.AddFilesOn(readon);
    440465
     466    if (fIsWobble)
     467        scalc.SetWobbleMode(kFALSE); /********************/
     468
    441469    MFillH fill1b("MHHillasOnPre  [MHHillas]", "MHillas", "FillHillasPre");
    442470    MFillH fill2b("MHHillasOnPost [MHHillas]", "MHillas", "FillHillasPost");
    443471    fill1b.SetNameTab("PreCut");
    444472    fill2b.SetNameTab("PostCut");
    445     fill1b.SetDrawOption(set.HasOffSequences()?"same":"");
    446     fill2b.SetDrawOption(set.HasOffSequences()?"same":"");
     473    fill1b.SetDrawOption(set.HasOffSequences()||fIsWobble?"same":"");
     474    fill2b.SetDrawOption(set.HasOffSequences()||fIsWobble?"same":"");
    447475
    448476    MFillH falpha2("MHAlpha", "MHillasSrc", "FillAlpha");
  • trunk/MagicSoft/Mars/mjobs/MJCut.h

    r6464 r6874  
    1616    Bool_t  fStoreResult;
    1717    Bool_t  fWriteOnly;
     18    Bool_t  fIsWobble;
    1819
    1920    TString fNameSummary;
     
    4243    void EnableStorageOfResult(Bool_t b=kTRUE)   { fStoreResult  = b; } // See SetNameResult
    4344    void EnableWriteOnly(Bool_t b=kTRUE)         { fWriteOnly    = b; }
     45    void EnableWobbleMode(Bool_t b=kTRUE)        { fIsWobble     = b; }
    4446
    4547    void SetNameSummaryFile(const char *name="");
  • trunk/MagicSoft/Mars/mjobs/MJPedestal.cc

    r6872 r6874  
    979979            {
    980980                *fLog << dbg << "Files which are searched:" << endl;
    981                 iter.Print("all");
     981                iter.Print();
    982982            }
    983983            return kFALSE;
  • trunk/MagicSoft/Mars/mpointing/MSrcPosCalc.cc

    r6346 r6874  
    1717!
    1818!   Author(s): Thomas Bretz 3/2004 <mailto:tbretz@astro.uni-wuerzburg.de>
    19 !             Abelardo Moralejo 1/2005 <mailto:moralejo@pd.infn.it>
     19!   Author(s): Abelardo Moralejo 1/2005 <mailto:moralejo@pd.infn.it>
    2020!
    2121!   Copyright: MAGIC Software Development, 2000-2004
     
    9090MSrcPosCalc::MSrcPosCalc(const char *name, const char *title)
    9191    : fObservatory(NULL), fPointPos(NULL), fSourcePos(NULL), fSrcPosCam(NULL),
    92     fGeom(NULL), fTime(NULL)
     92    fSrcPosAnti(NULL), fGeom(NULL), fTime(NULL), fIsWobbleMode(kFALSE)
    9393{
    9494    fName  = name  ? name  : "MSrcPosCalc";
     
    149149    fSrcPosCam = (MSrcPosCam*)pList->FindCreateObj("MSrcPosCam");
    150150    if (!fSrcPosCam)
     151        return kFALSE;
     152
     153    fSrcPosAnti = (MSrcPosCam*)pList->FindCreateObj("MSrcPosCam", "MSrcPosAnti");
     154    if (!fSrcPosAnti)
    151155        return kFALSE;
    152156
     
    260264  // coordinates, since this transformation ignores precession and nutation effects.
    261265  const MAstroSky2Local conv(*fTime, *fObservatory);
    262 
    263266  pos *= conv;
    264267
     
    284287  // Calculate source position in camera, and convert to mm:
    285288  TVector2 v = CalcXYinCamera(pos0, pos)*fGeom->GetCameraDist()*1000;
    286 
    287   fSrcPosCam->SetXY(v);
     289  if (fIsWobbleMode)
     290  {
     291      fSrcPosAnti->SetXY(v);
     292      v *= -1;
     293      fSrcPosCam->SetXY(v);
     294  }
     295  else
     296  {
     297      fSrcPosCam->SetXY(v);
     298      v *= -1;
     299      fSrcPosAnti->SetXY(v);
     300  }
    288301
    289302  //     v *= fGeom->GetConvMm2Deg();
  • trunk/MagicSoft/Mars/mpointing/MSrcPosCalc.h

    r6346 r6874  
    2828    MPointingPos *fSourcePos;
    2929    MSrcPosCam   *fSrcPosCam;
     30    MSrcPosCam   *fSrcPosAnti;
    3031    MGeomCam     *fGeom;
    3132    MTime        *fTime;
     33
     34    Bool_t fIsWobbleMode;
    3235
    3336    // MSrcPosCalc
     
    5255    void SetSourcePos(Double_t ra, Double_t dec);
    5356    void SetOwner(Bool_t b=kTRUE) { b ? SetBit(kIsOwner) : ResetBit(kIsOwner); } // Make MSrcPosCalc owner of fSourcePos
     57    void SetWobbleMode(Bool_t b=kTRUE) { fIsWobbleMode = b; }
    5458
    5559    ClassDef(MSrcPosCalc, 0) // Calculates the source position in the camera
Note: See TracChangeset for help on using the changeset viewer.