Ignore:
Timestamp:
03/15/04 15:12:34 (21 years ago)
Author:
tbretz
Message:
*** empty log message ***
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/MagicSoft/Mars/mmain/MEventDisplay.cc

    r3440 r3503  
    3232// root
    3333//
     34#include <TFile.h>               // TFile
    3435#include <TList.h>               // TList::Add
    3536#include <TStyle.h>              // gStyle->SetOptStat
     
    7879// Container
    7980//
    80 #include "MHillas.h"             // MHillas::Print(const MGeomCam&)
    81 #include "MHillasExt.h"          // MHillasExt::Print(const MGeomCam&)
    82 #include "MHillasSrc.h"          // MHillasSrc::Print(const MGeomCam&)
    83 #include "MHEvent.h"             // MHEvent
    84 #include "MHCamera.h"            // MHCamera
    85 #include "MRawEvtData.h"         // MRawEvtData
    86 #include "MArrivalTimeCam.h"     // MArrivalTimeCam
    87 #include "MBadPixelsCam.h"       // MBadPixelsCam
     81#include "MHillas.h"               // MHillas::Print(const MGeomCam&)
     82#include "MHillasExt.h"            // MHillasExt::Print(const MGeomCam&)
     83#include "MHillasSrc.h"            // MHillasSrc::Print(const MGeomCam&)
     84#include "MHEvent.h"               // MHEvent
     85#include "MHCamera.h"              // MHCamera
     86#include "MRawEvtData.h"           // MRawEvtData
     87#include "MArrivalTimeCam.h"       // MArrivalTimeCam
     88#include "MBadPixelsCam.h"         // MBadPixelsCam
     89#include "MPedPhotCam.h"           // MPedPhotCam
     90#include "MCalibrationChargeCam.h" // MCalibrationChargeCam
    8891
    8992ClassImp(MEventDisplay);
     
    9396//  Constructor.
    9497//
    95 MEventDisplay::MEventDisplay(const char *filename) : MStatusDisplay()
     98MEventDisplay::MEventDisplay(const char *fname, const char *pname, const char *cname) : MStatusDisplay()
    9699{
    97100    //
    98101    // Setup Task list for hillas calculation
    99102    //
    100     SetupTaskList("Events", filename);
     103    SetupTaskList("Events", fname, pname, cname);
    101104
    102105    //
    103106    // Add MEventDisplay GUI elements to the display
    104107    //
    105     AddUserFrame(filename);
     108    AddUserFrame(fname);
    106109
    107110    //
     
    134137//  preprocess tasks and read in first event (process)
    135138//
    136 void MEventDisplay::SetupTaskList(const char *tname, const char *fname)
    137 {
     139void MEventDisplay::SetupTaskList(const char *tname, const char *fname,
     140                                  const char *pname, const char *cname)
     141{
     142    MCalibrationChargeCam *ccam=0;
     143    MPedPhotCam           *pcam=0;
     144
     145    MBadPixelsCam *badpix = new MBadPixelsCam;
     146
     147    TFile file(pname, "READ");
     148    if (!file.IsZombie())
     149        pcam = new MPedPhotCam;
     150    if (pcam)
     151    {
     152        if (pcam->Read()<=0)
     153        {
     154            delete pcam;
     155            pcam = NULL;
     156        }
     157
     158        if (file.FindKey("MBadPixelsCam"))
     159        {
     160            MBadPixelsCam bad;
     161            if (bad.Read()>0)
     162                badpix->Merge(bad);
     163        }
     164    }
     165    file.Close();
     166    file.Open(cname, "READ");
     167    if (!file.IsZombie())
     168        ccam = new MCalibrationChargeCam;
     169    if (ccam)
     170    {
     171        if (ccam->Read()<=0)
     172        {
     173            delete ccam;
     174            ccam = NULL;
     175        }
     176
     177        if (file.FindKey("MBadPixelsCam"))
     178        {
     179            MBadPixelsCam bad;
     180            if (bad.Read()>0)
     181                badpix->Merge(bad);
     182        }
     183    }
     184    file.Close();
     185
    138186    //
    139187    // Setup an empty job, with a reader task only.
     
    154202    plist->SetOwner();
    155203    plist->AddToList(tlist);
    156 
    157     MBadPixelsCam *badpix = new MBadPixelsCam;
    158204    plist->AddToList(badpix);
     205    if (pcam)
     206        plist->AddToList(pcam);
     207    if (ccam)
     208        plist->AddToList(ccam);
    159209
    160210    fEvtLoop = new MEvtLoop;
     
    180230    evt8->SetName("Arrival Time");
    181231
     232    // This makes sure, that the containers are deleted...
    182233    plist->AddToList(evt1);
    183234    plist->AddToList(evt2);
     
    189240    plist->AddToList(evt8);
    190241
    191 
    192     MMcPedestalCopy   *pcopy = new MMcPedestalCopy;
    193     MMcPedestalNSBAdd *pdnsb = new MMcPedestalNSBAdd;
    194242    MCerPhotAnal2     *nanal = new MCerPhotAnal2;
    195243    MFillH            *fill1 = new MFillH(evt1, "MCerPhotEvt", "MFillH1");
     
    203251    MHillasCalc       *hcalc = new MHillasCalc;
    204252    MHillasSrcCalc    *scalc = new MHillasSrcCalc;
    205     MArrivalTimeCalc  *tcalc = new MArrivalTimeCalc;
    206     MFillH            *fill7 = new MFillH(evt7, "MRawEvtData",  "MFillH7");
    207     MFillH            *fill8 = new MFillH(evt8, "MArrivalTimeCam", "MFillH8");
    208 
    209     MFilter *f1=new MFDataMember("MRawRunHeader.fRunType", '>', 255.5);
    210     MFilter *f2=new MFDataMember("MRawRunHeader.fRunType", '<', 255.5);
    211     f1->SetName("MFMonteCarlo");
    212     f2->SetName("MFRealData");
    213 
    214     MExtractSignal* sigextract = new MExtractSignal();
    215     sigextract->SetRange(5, 9, 5, 9);
    216 
    217     MMcCalibrationUpdate* mccalibupdate = new MMcCalibrationUpdate;
    218     mccalibupdate->SetOuterPixelsGainScaling(kFALSE);
    219     MCalibrate* mccalib = new MCalibrate;
    220 
    221     // MC
    222     sigextract->SetFilter(f1);
    223     mccalibupdate->SetFilter(f1);
    224     mccalib->SetFilter(f1);
    225 
    226     // Data
    227     nanal->SetFilter(f2);
    228 
    229     tlist->AddToList(f1);
    230     tlist->AddToList(f2);
    231     tlist->AddToList(pcopy);
    232     tlist->AddToList(pdnsb);
    233 
    234     tlist->AddToList(sigextract);
    235     tlist->AddToList(mccalibupdate);
    236     tlist->AddToList(mccalib);
    237 
    238     tlist->AddToList(nanal);
     253
     254    // If no pedestal or no calibration file is availble
     255    if (!pcam || !ccam)
     256    {
     257        MFilter *f1=new MFDataMember("MRawRunHeader.fRunType", '>', 255.5);
     258        MFilter *f2=new MFDataMember("MRawRunHeader.fRunType", '<', 255.5);
     259        f1->SetName("MFMonteCarlo");
     260        f2->SetName("MFRealData");
     261
     262        MMcPedestalCopy   *pcopy = new MMcPedestalCopy;
     263        MMcPedestalNSBAdd *pdnsb = new MMcPedestalNSBAdd;
     264
     265        MExtractSignal* extra = new MExtractSignal();
     266        extra->SetRange(5, 9, 5, 9);
     267
     268        MMcCalibrationUpdate* mcupd = new MMcCalibrationUpdate;
     269        mcupd->SetOuterPixelsGainScaling(kFALSE);
     270
     271        MCalibrate* mccal = new MCalibrate;
     272
     273        // MC
     274        extra->SetFilter(f1);
     275        mcupd->SetFilter(f1);
     276        mccal->SetFilter(f1);
     277
     278        // Data
     279        nanal->SetFilter(f2);
     280
     281        // TaskList
     282        tlist->AddToList(f1);
     283        tlist->AddToList(f2);
     284        tlist->AddToList(pcopy);
     285        tlist->AddToList(pdnsb);
     286
     287        tlist->AddToList(extra);
     288        tlist->AddToList(mcupd);
     289        tlist->AddToList(mccal);
     290
     291        tlist->AddToList(nanal);
     292    }
     293    else
     294    {
     295        MCalibrate* calib = new MCalibrate;
     296        tlist->AddToList(calib);
     297    }
    239298
    240299    tlist->AddToList(fill1);
     
    248307    tlist->AddToList(hcalc);
    249308    tlist->AddToList(scalc);
    250     tlist->AddToList(tcalc);
    251     tlist->AddToList(fill7);
    252     tlist->AddToList(fill8);
     309    if (!pcam || !ccam)
     310    {
     311        MArrivalTimeCalc  *tcalc = new MArrivalTimeCalc;
     312        MFillH            *fill7 = new MFillH(evt7, "MRawEvtData",     "MFillH7");
     313        MFillH            *fill8 = new MFillH(evt8, "MArrivalTimeCam", "MFillH8");
     314        tlist->AddToList(tcalc);
     315        tlist->AddToList(fill7);
     316        tlist->AddToList(fill8);
     317    }
    253318
    254319    //
     
    408473    MGeomCam    *geom  = (MGeomCam*)   plist->FindObject("MGeomCam");
    409474    MRawEvtData *raw   = (MRawEvtData*)plist->FindObject("MRawEvtData");
    410     if (!raw)
    411         return;
    412475
    413476    //
     
    436499        reader->DecEventNum();
    437500
    438     } while (raw->GetNumPixels()<1 && dir!=0);
     501    } while (raw && raw->GetNumPixels()<1 && dir!=0);
    439502
    440503    //
Note: See TracChangeset for help on using the changeset viewer.