Changeset 6035


Ignore:
Timestamp:
01/27/05 10:14:55 (20 years ago)
Author:
gaug
Message:
*** empty log message ***
Location:
trunk/MagicSoft/Mars
Files:
2 added
2 deleted
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/MagicSoft/Mars/mjobs/MJCalibrateSignal.cc

    r6031 r6035  
    3434// but this is NOT recommended!
    3535//
    36 // Resource file entries are case sensitive!
    37 //
    3836/////////////////////////////////////////////////////////////////////////////
    3937#include "MJCalibrateSignal.h"
     
    6260#include "MCalibrationRelTimeCam.h"
    6361#include "MCalibrationChargePINDiode.h"
     62#include "MCalibrationHiLoCam.h"
     63
     64#include "MCalibrationChargeCalc.h"
     65#include "MCalibrationRelTimeCalc.h"
     66
     67#include "MCalibrationIntensityChargeCam.h"
     68#include "MCalibrationIntensityBlindCam.h"
     69#include "MCalibrationIntensityRelTimeCam.h"
     70#include "MCalibrationIntensityQECam.h"
     71#include "MBadPixelsIntensityCam.h"
     72
     73#include "MHCalibrationChargeCam.h"
     74#include "MHCalibrationChargeBlindCam.h"
     75#include "MHCalibrationChargePINDiode.h"
     76#include "MHCalibrationRelTimeCam.h"
     77#include "MHCamera.h"
     78
     79#include "MCalibCalcFromPast.h"
    6480
    6581#include "MReadReports.h"
     
    7288#include "MMcPedestalCopy.h"
    7389#include "MPointingPosCalc.h"
     90#include "MInterpolatePointingPos.h"
    7491#include "MPedCalcFromLoGain.h"
    7592#include "MExtractor.h"
    7693#include "MExtractTimeAndCharge.h"
     94#include "MExtractPINDiode.h"
     95#include "MExtractBlindPixel.h"
    7796#include "MFCosmics.h"
    7897#include "MTaskEnv.h"
     
    96115//
    97116MJCalibrateSignal::MJCalibrateSignal(const char *name, const char *title)
    98     : fIsDataCheck(kFALSE)
     117  : fIsDataCheck(kFALSE), fIsInterlaced(kTRUE), fIsRelTimesUpdate(kFALSE),
     118    fIsHiLoCalibration(kTRUE)
    99119{
    100120    fName  = name  ? name  : "MJCalibrateSignal";
     
    102122}
    103123
    104 Bool_t MJCalibrateSignal::WriteResult()
     124Bool_t MJCalibrateSignal::WriteResult(TObjArray &cont)
    105125{
    106126    if (fPathOut.IsNull())
     
    115135
    116136    TFile file(oname, "RECREATE");
    117     if (!file.IsOpen())
    118     {
    119         *fLog << err << "ERROR - Couldn't open file " << oname << " for writing..." << endl;
    120         return kFALSE;
    121     }
    122137
    123138    *fLog << inf << " - MStatusDisplay..." << flush;
     
    129144    *fLog << inf << "ok." << endl;
    130145
    131     return kTRUE;
     146    return fIsInterlaced ? WriteContainer(cont) : kTRUE;
    132147}
    133148
     
    188203Bool_t MJCalibrateSignal::CheckEnvLocal()
    189204{
     205
    190206    SetDataCheck(GetEnv("DataCheck", IsDataCheck()));
     207    SetInterlaced(GetEnv("Interlaced", fIsInterlaced));
     208    SetRelTimesUpdate(GetEnv("RelTimesUpdate", fIsRelTimesUpdate));
     209    SetHiLoCalibration(GetEnv("HiLoCalibration", fIsHiLoCalibration));
     210
    191211    return kTRUE;
    192212}
    193213
    194 Bool_t MJCalibrateSignal::ProcessFile(MPedestalCam &pedcamab, MPedestalCam &pedcam2, MPedestalCam &pedcam)
     214Bool_t MJCalibrateSignal::ProcessFile(MPedestalCam &pedcamab, MPedestalCam &pedcambias,
     215                                      MPedestalCam &pedcamextr)
    195216{
    196217    if (!fSequence.IsValid())
     
    230251
    231252    // Read File
    232     /*
    233      MCalibrationIntensityChargeCam      calcam;
    234      MCalibrationIntensityQECam          qecam;
    235      MCalibrationIntensityBlindCam       bndcam;
    236      MCalibrationIntensityRelTimeCam     tmcam;
    237      */
     253    MCalibrationIntensityChargeCam      ichcam;
     254    MCalibrationIntensityQECam          iqecam;
     255    MCalibrationIntensityBlindCam       iblcam;
     256    MCalibrationIntensityRelTimeCam     itmcam;
     257    MBadPixelsIntensityCam              ibdcam;
     258
     259    TObjArray interlacedcont;
     260    interlacedcont.Add(&ichcam);
     261    interlacedcont.Add(&iqecam);
     262    interlacedcont.Add(&iblcam);
     263    interlacedcont.Add(&itmcam);
     264    interlacedcont.Add(&ibdcam);
     265
     266    MHCalibrationChargeCam      hchacam;
     267    MHCalibrationChargeBlindCam hbndcam;
     268    MHCalibrationChargePINDiode hpndiod;
     269    MHCalibrationRelTimeCam     hrelcam;
     270
     271    hchacam.SetLoGain(kTRUE);
     272    hchacam.SetOscillations(kFALSE);
     273    hrelcam.SetOscillations(kFALSE);
     274
     275    interlacedcont.Add(&hchacam);
     276    interlacedcont.Add(&hbndcam);
     277    interlacedcont.Add(&hpndiod);
     278    if (fIsRelTimesUpdate)
     279      interlacedcont.Add(&hrelcam);
     280
    238281    MCalibrationChargeCam      calcam;
    239282    MCalibrationQECam          qecam;
     
    241284    MCalibrationChargePINDiode pind;
    242285    MCalibrationRelTimeCam     tmcam;
     286    MCalibrationHiLoCam        hilcam;
     287
     288    if (fIsHiLoCalibration)
     289      interlacedcont.Add(&hilcam);     
     290
    243291    MBadPixelsCam              badpix;
    244292
    245293    MExtractor *extractor1=0;
    246294    MExtractor *extractor2=0;
     295    MExtractor *extractor3=0;
    247296    TString geom;
    248297
     
    257306        return kFALSE;
    258307
     308    badpix.Print();
     309
    259310    *fLog << all;
    260311    if (extractor1)
     
    263314        extractor1->Print();
    264315        *fLog << endl;
     316        extractor3 = (MExtractor*)extractor1->Clone();
    265317    }
    266318    else
     
    289341    plist.AddToList(&badcam);
    290342    plist.AddToList(&calibcont);
     343    plist.AddToList(&hilcam);
     344
     345    if (fIsInterlaced)
     346      plist.AddToList(&interlacedcont);
    291347
    292348    // Setup Tasklist
     
    326382        readreal.AddFiles(iter);
    327383
     384    MInterpolatePointingPos pextr;
     385//    pextr.SetDebug();  // take it out
     386    pextr.AddFiles(&iter);
     387   
    328388    MGeomApply             apply; // Only necessary to create geometry
    329389    if (!geom.IsNull())
     
    333393    // Make sure that pedcamab has the correct name
    334394    pedcamab.SetName("MPedestalFundamental");
    335     pedcam.SetName("MPedestalFromExtractorRndm");
    336     pedcam2.SetName("MPedestalFromExtractor");
    337     plist.AddToList(&pedcam);
    338     plist.AddToList(&pedcam2);
     395    pedcamextr.SetName("MPedestalFromExtractorRndm");
     396    pedcambias.SetName("MPedestalFromExtractor");
     397    plist.AddToList(&pedcamextr);
     398    plist.AddToList(&pedcambias);
    339399    plist.AddToList(&pedcamab);
    340400
     
    344404    MFTriggerPattern ftp;
    345405    ftp.RequireCalibration();
    346 
     406    //    ftp.RequireCalibration(kTRUE);
     407    //    ftp.DenyCalibration();
     408    //    ftp.DenyPedestal();
     409    //    ftp.DenyPinDiode();
     410    //    ftp.SetInverted();
    347411    MContinue conttp(&ftp, "ContTrigPattern");
    348412    // --> tlist2
     
    389453    }
    390454    if (extractor2)
    391         extractor2->SetPedestals(&pedcamab);
     455      extractor2->SetPedestals(&pedcamab);
     456
     457    if (extractor3)
     458      extractor3->SetPedestals(&pedcamab);
    392459
    393460    MFCosmics fcosmics;
     
    399466    MTaskEnv taskenv1("ExtractSignal");
    400467    MTaskEnv taskenv2("ExtractTime");
     468    MTaskEnv taskenv3("ExtractInterlaced");
    401469    taskenv1.SetDefault(extractor1);
    402470    taskenv2.SetDefault(extractor2);
     471    taskenv3.SetDefault(extractor3);
     472
    403473    MCalibrateData         calib;
    404474    if (filetype==3) // MC file
     
    419489    }
    420490
     491    MExtractPINDiode        pinext;
     492    MExtractBlindPixel      bldext;
     493
     494    MFTriggerPattern        fcalib("CalibFilter");
     495    MCalibrationChargeCalc  chcalc;
     496    MCalibrationRelTimeCalc recalc;
     497    MCalibCalcFromPast      pacalc;
     498
     499    fcalib.DenyCalibration();
     500    fcalib.SetInverted();
     501
     502    pinext.SetPedestals(&pedcamab);
     503    bldext.SetPedestals(&pedcamab);
     504    chcalc.SetPedestals(&pedcamextr);
     505
     506    pacalc.SetChargeCalc(&chcalc);
     507    if (fIsRelTimesUpdate)
     508      pacalc.SetRelTimeCalc(&recalc);
     509    pacalc.SetCalibrate(&calib);
     510
     511    //
     512    // Intensity Calibration histogramming
     513    //
     514    MFillH filpin("MHCalibrationChargePINDiode", "MExtractedSignalPINDiode",   "FillPINDiode");
     515    MFillH filbnd("MHCalibrationChargeBlindCam", "MExtractedSignalBlindPixel", "FillBlindCam");
     516    MFillH filcam("MHCalibrationChargeCam",      "MExtractedSignalCam",        "FillChargeCam");
     517    MFillH filtme("MHCalibrationRelTimeCam",     "MArrivalTimeCam",            "FillRelTime");
     518    MFillH filhil("MHCalibrationHiLoCam",        "MExtractedSignalCam",        "FillHiLoRatio");
     519
     520    filpin.SetBit(MFillH::kDoNotDisplay);
     521    filbnd.SetBit(MFillH::kDoNotDisplay);
     522    filcam.SetBit(MFillH::kDoNotDisplay);
     523    filtme.SetBit(MFillH::kDoNotDisplay);
     524    filhil.SetBit(MFillH::kDoNotDisplay);
     525
    421526    MCalibrateRelTimes     caltm;
    422527    MBadPixelsCalc         bpcal;
     
    434539    MHCamEvent evt1(2, "PedRmsFLG",   "Pedestal RMS from Lo Gain;;\\sigma_{p} [fadc/sl]");
    435540    MHCamEvent evt2(0, "Extra'd",     "Extracted Signal;;S [fadc/sl]");
    436     //MHCamEvent evt3(4, "PedPhot",     "Calibrated Pedestal;;P [\\gamma]");
     541    MHCamEvent evt3(4, "PedPhot",     "Calibrated Pedestal;;P [\\gamma]");
    437542    MHCamEvent evt4(5, "PedRMS",      "Calibrated Pedestal RMS;;\\sigma_{p} [\\gamma]");
    438543    MHCamEvent evt5(0, "Interp'd",    "Interpolated Signal;;S [\\gamma]");
    439     MHCamEvent evt6(2, "Unsuitable",  "Fraction of unsuitable events per Pixel;;[1]");
     544    MHCamEvent evt6(2, "Unsuitable",  "Unsuitable event ratio;;%");
    440545    MHCamEvent evt7(0, "Times",       "Arrival Time;;T [slice]");
     546    //    MHCamEvent evt8(0, "HiLoConv",    "Ratio Hi-Lo Gain Signal;;Ratio [1]");
     547    //    MHCamEvent evt9(5, "HiLoDiff",    "Time Diff. Hi-Lo Gain Signal;;\\Delta T [3.33ns]");
     548
    441549    evt0.EnableVariance();
    442550    evt1.EnableVariance();
    443551    evt2.EnableVariance();
    444     //evt3.EnableVariance();
     552    evt3.EnableVariance();
    445553    evt4.EnableVariance();
    446554    evt5.EnableVariance();
    447555    evt7.EnableVariance();
     556    //    evt8.EnableVariance();
     557    //    evt9.EnableVariance();
    448558
    449559    MFillH fill0(&evt0, "MPedestalFundamental",   "FillPedFLG");
    450560    MFillH fill1(&evt1, "MPedestalFromExtractor", "FillPedRmsFLG");
    451561    MFillH fill2(&evt2, "MExtractedSignalCam",    "FillExtracted");
    452     //MFillH fill3(&evt3, "MPedPhotFundamental",    "FillPedPhot");
     562    MFillH fill3(&evt3, "MPedPhotFundamental",    "FillPedPhot");
    453563    MFillH fill4(&evt4, "MPedPhotFromExtractor",  "FillPedRMS");
    454564    MFillH fill5(&evt5, "MCerPhotEvt",            "FillInterpolated");
    455565    MFillH fill6(&evt6, "MBadPixelsCam",          "FillUnsuitable");
    456566    MFillH fill7(&evt7, "MArrivalTime",           "FillTimes");
     567    //    MFillH fill8(&evt8, "MCalibrationHiLoCam",    "FillRatio");
     568    //    MFillH fill9(&evt9, "MCalibrationHiLoCam",    "FillDiff");
    457569
    458570    // The second rule is for the case reading raw-files!
     
    494606    write.AddContainer("MTimeTrigger",              "Trigger",    kFALSE);
    495607    // Slow-Control: Drive
    496     write.AddContainer("MPointingPos",              "Drive",      kFALSE);
     608    write.AddContainer("MPointingPos",              "Events",     kFALSE);
    497609    write.AddContainer("MReportDrive",              "Drive",      kFALSE);
    498610    write.AddContainer("MTimeDrive",                "Drive",      kFALSE);
     
    503615    // Now setup tasklist for events
    504616    MTaskList tlist2;
     617
    505618    tlist2.AddToList(&decode);
    506     tlist2.AddToList(&conttp);
    507619    tlist2.AddToList(&apply);
    508620    tlist2.AddToList(&merge);
     
    515627        tlist2.AddToList(&pedlo3);
    516628    }
     629    if (fIsInterlaced)
     630      {
     631        pinext.SetFilter(&fcalib);
     632        bldext.SetFilter(&fcalib);
     633        taskenv3.SetFilter(&fcalib);
     634        pacalc.SetFilter(&fcalib);
     635        filcam.SetFilter(&fcalib);
     636        filtme.SetFilter(&fcalib);
     637        filbnd.SetFilter(&fcalib);
     638        filpin.SetFilter(&fcalib);
     639        chcalc.SetFilter(&fcalib);
     640        recalc.SetFilter(&fcalib);
     641
     642        tlist2.AddToList(&fcalib);
     643        tlist2.AddToList(&pinext);
     644        tlist2.AddToList(&bldext);
     645        tlist2.AddToList(&taskenv3);
     646        tlist2.AddToList(&pacalc);
     647        tlist2.AddToList(&filcam);
     648        if (fIsRelTimesUpdate)
     649          tlist2.AddToList(&filtme);
     650        tlist2.AddToList(&filbnd);
     651        tlist2.AddToList(&filpin);
     652        tlist2.AddToList(&chcalc);
     653        if (fIsRelTimesUpdate)
     654          tlist2.AddToList(&recalc);
     655      }
     656
     657    tlist2.AddToList(&conttp);
     658    if (extractor1)
     659      tlist2.AddToList(&taskenv1);
     660    if (extractor2)
     661      tlist2.AddToList(&taskenv2);
    517662    tlist2.AddToList(&fill0);
    518663    tlist2.AddToList(&fill1);
    519     if (extractor1)
    520         tlist2.AddToList(&taskenv1);
    521     if (extractor2)
    522         tlist2.AddToList(&taskenv2);
    523664    tlist2.AddToList(&contcos);
     665    if (fIsHiLoCalibration)
     666      tlist2.AddToList(&filhil);
    524667    tlist2.AddToList(&fill2);
    525668    tlist2.AddToList(&calib);
    526669    if (extractor2 || extractor1->InheritsFrom("MExtractTimeAndCharge"))
    527670        tlist2.AddToList(&caltm);
     671
    528672    tlist2.AddToList(&bpcal);
    529673    tlist2.AddToList(&treat);
    530674    tlist2.AddToList(&fill6);
    531     //tlist2.AddToList(&fill3);
     675    tlist2.AddToList(&fill3);
    532676    tlist2.AddToList(&fill4);
    533677    tlist2.AddToList(&fill5);
     
    535679        tlist2.AddToList(&fill7);
    536680
     681    if (fIsHiLoCalibration)
     682      {
     683        //      tlist2.AddToList(&fill8);
     684        //      tlist2.AddToList(&fill9);
     685      }
    537686    // Setup List for Drive-tree
    538687    MPointingPosCalc pcalc;
     
    540689    // Now setup main tasklist
    541690    tlist.AddToList(IsDataCheck() ? (MTask*)&rawread : (MTask*)&readreal);
     691    tlist2.AddToList(&pextr);
    542692    tlist.AddToList(&tlist2, IsDataCheck()?"All":"Events");
    543     if (!IsDataCheck())
    544         tlist.AddToList(&pcalc, "Drive");
     693
     694    //
     695    // !!! Replaced by MInterpolatePointingPos !!!
     696    //
     697    //    if (!IsDataCheck())
     698    //        tlist.AddToList(&pcalc, "Drive");
     699
     700
    545701    tlist.AddToList(&write);
    546702
     
    562718    tlist.PrintStatistics();
    563719
    564     if (!WriteResult())
     720    DisplayResult(plist);
     721
     722    if (!WriteResult(interlacedcont))
    565723        return kFALSE;
    566724
     
    570728    return kTRUE;
    571729}
     730
     731
     732void MJCalibrateSignal::DisplayResult(MParList &plist)
     733{
     734
     735    if (!fDisplay)
     736        return;
     737
     738    if (!fIsHiLoCalibration)
     739      return;
     740
     741    //
     742    // Get container from list
     743    //
     744    MGeomCam        &geomcam = *(MGeomCam*)plist.FindObject("MGeomCam");
     745    MCalibrationHiLoCam *cam = (MCalibrationHiLoCam*)plist.FindObject("MCalibrationHiLoCam");
     746
     747    // Create histograms to display
     748    MHCamera disp1 (geomcam, "HiLoConv", "Ratio Amplification HiGain vs. LoGain (Charges)");
     749    MHCamera disp2 (geomcam, "HiLoDiff", "Arrival Time Diff. HiGain vs. LoGain (Times)");
     750
     751    disp1.SetCamContent(*cam,  0);
     752    disp1.SetCamError(  *cam,  1);
     753    disp2.SetCamContent(*cam,  5);
     754    disp2.SetCamError(  *cam,  6);
     755
     756    disp1.SetYTitle("R [1]");
     757    disp2.SetYTitle("\\Delta T [FADC sl.]");
     758
     759
     760    TCanvas &c1 = fDisplay->AddTab("HiLoConv");
     761    c1.Divide(2,3);
     762   
     763    disp1.CamDraw(c1, 1, 2, 1);
     764    disp2.CamDraw(c1, 2, 2, 1);
     765}
     766
  • trunk/MagicSoft/Mars/mjobs/MJCalibrateSignal.h

    r5803 r6035  
    2020{
    2121private:
     22
    2223    Bool_t fIsDataCheck;
    23 
     24    Bool_t fIsInterlaced;               // Distinguish interlaced from other calibration
     25    Bool_t fIsRelTimesUpdate;           // Choose to update relative times from interlaced
     26    Bool_t fIsHiLoCalibration;          // Choose to calibrate the high-gain vs. low-gains
     27   
    2428    Bool_t CheckEnvLocal();
    2529
    26     Bool_t WriteResult();
     30    void   DisplayResult(MParList &plist);
     31
     32    Bool_t WriteResult(TObjArray &cont);
    2733    Bool_t ReadCalibration(TObjArray &o, MBadPixelsCam &bpix,
    2834                           MExtractor* &ext1, MExtractor* &ext2, TString &geom) const;
     
    3642    Bool_t ProcessFile(MPedestalCam &camab, MPedestalCam &cam1, MPedestalCam &cam2);
    3743
     44    void SetInterlaced     ( const Bool_t b=kTRUE )  { fIsInterlaced      = b; }
     45    void SetRelTimesUpdate ( const Bool_t b=kTRUE )  { fIsRelTimesUpdate  = b; }
     46    void SetHiLoCalibration( const Bool_t b=kTRUE )  { fIsHiLoCalibration = b; }
     47
    3848    ClassDef(MJCalibrateSignal, 0) // Tool to create a pedestal file (MPedestalCam)
    3949};
Note: See TracChangeset for help on using the changeset viewer.