Ignore:
Timestamp:
04/29/20 21:48:05 (5 years ago)
Author:
giangdo
Message:
script to synchronise the data from HAWC's Eye and HAWC

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Mars/hawc/extract_singles.C

    r19857 r19951  
    5757{
    5858    Int_t fIntegrationWindow;
    59 
    6059    vector<vector<Single>> fData;
    6160
    6261public:
    63     MSingles(const char *name=NULL, const char *title=NULL) : fIntegrationWindow(30)
     62    MSingles(const char *name=NULL, const char *title=NULL) : fIntegrationWindow(40)
    6463    {
    6564        fName = name ? name : "MSingles";
     
    8887    ClassDef(MSingles, 1)
    8988};
    90 
    9189// Histogram class to extract the baseline
    9290class MHBaseline : public MH
     
    102100
    103101public:
    104     MHBaseline() : fPedestal(0), fSkipStart(20), fSkipEnd(10)
     102    MHBaseline() : fPedestal(0), fSkipStart(10), fSkipEnd(10)
    105103    {
    106104        fName = "MHBaseline";
     
    108106        // Setup the histogram
    109107        fBaseline.SetName("Baseline");
    110         fBaseline.SetTitle("Median spectrum");
     108        fBaseline.SetTitle("Baseline Spectrum");
    111109        fBaseline.SetXTitle("Pixel [idx]");
    112         fBaseline.SetYTitle("Median baseline [mV]");
     110        fBaseline.SetYTitle("Amplitude [mV]");
    113111        fBaseline.SetDirectory(NULL);
    114112    }
     
    282280    TH2F       fTime;
    283281    TProfile2D fPulse;
     282    TH2F       fPulse2D; //plot the extracted singles in a 2D plot vs samples(time)
    284283
    285284    UInt_t fNumEntries;
     
    296295        // Setup histograms
    297296        fSignal.SetName("Signal");
    298         fSignal.SetTitle("pulse integral spectrum");
     297        fSignal.SetTitle("Pulse Integral Spectrum");
    299298        fSignal.SetXTitle("pixel [SoftID]");
    300299        fSignal.SetYTitle("time [a.u.]");
     
    302301
    303302        fTime.SetName("Time");
    304         fTime.SetTitle("arival time spectrum");
     303        fTime.SetTitle("Arrival Time Spectrum");
    305304        fTime.SetXTitle("pixel [SoftID]");
    306305        fTime.SetYTitle("time [a.u.]");
     
    308307
    309308        fPulse.SetName("Pulse");
    310         fPulse.SetTitle("average pulse shape spectrum");
     309        fPulse.SetTitle("Average Pulse Shape Spectrum");
    311310        fPulse.SetXTitle("pixel [SoftID]");
    312311        fPulse.SetYTitle("time [a.u.]");
    313312        fPulse.SetDirectory(NULL);
     313
     314        fPulse2D.SetName("Pulse2D");
     315        fPulse2D.SetTitle("Extracted Pulses");
     316        fPulse2D.SetXTitle("time [a.u.]");
     317        fPulse2D.SetYTitle("amplitude [a.u.]");
     318        fPulse2D.SetDirectory(NULL);
    314319    }
    315320
     
    363368
    364369        // Correct for DRS timing!!
     370
     371        //Setup binning for the average time spectrum
    365372        MBinning binst(roi, -0.5, roi-0.5);
    366373        MH::SetBinning(fTime, binsx, binst);
    367374
     375        //Setup binning for the average pulse spectrum
    368376        MBinning binspy(2*roi, -roi-0.5, roi-0.5);
     377        //MBinning binspy(1024, -522-0.5, 522-0.5);
    369378        MH::SetBinning(fPulse, binsx, binspy);
     379
     380        //Setup binning for the 2D plot amplitude vs time
     381        MBinning bins_time(2*roi, -roi-0.5, roi-0.5);
     382        //MBinning bins_time(1024, -522-0.5, 522-0.5);
     383        MBinning bins_ampl(160, -30, 50); //N_bin is chosen such that 1 DAC = 0.5mV
     384        MH::SetBinning(fPulse2D, bins_time, bins_ampl);
    370385
    371386        return kTRUE;
     
    402417                for (int s=0; s<roi; s++)
    403418                    fPulse.Fill(i, s-tm, ptr[s]);
     419
     420                for (int s=0; s<roi; s++)
     421                    fPulse2D.Fill(s-tm, ptr[s]);
    404422            }
    405423
     
    416434    const TH2 *GetTime() const   { return &fTime; }
    417435    const TH2 *GetPulse() const  { return &fPulse; }
     436    const TH2F *GetPulse2D() const {return &fPulse2D;}
    418437
    419438    UInt_t GetNumEntries() const { return fNumEntries; }
     
    441460        gPad->SetFrameBorderMode(0);
    442461        fPulse.Draw("colz");
     462
     463        pad->cd(4);
     464        gPad->SetBorderMode(0);
     465        gPad->SetFrameBorderMode(0);
     466        fPulse2D.Draw("colz");
    443467    }
    444468
     
    465489        gPad->SetFrameBorderMode(0);
    466490        fPulse.DrawCopy("colz");
     491
     492        pad->cd(4);
     493        gPad->SetBorderMode(0);
     494        gPad->SetFrameBorderMode(0);
     495        fPulse2D.Draw("colz");
    467496    }
    468497
     
    497526    MExtractSingles() : fSingles(0), fPedestal(0), fEvent(0),
    498527        fExtractionRange(64),
    499         fNumAverage(10), fStartSkip(20), fEndSkip(10),
    500         fIntegrationSize(3*10), fMaxSearchWindow(30)
     528        fNumAverage(10), fStartSkip(10), fEndSkip(10),
     529        fIntegrationSize(4*10), fMaxSearchWindow(20)
    501530    {
    502531    }
     
    538567
    539568        const size_t navg              = fNumAverage;
    540         const float  threshold         = fThreshold; 
     569        const float  threshold         = fThreshold;
    541570        const UInt_t start_skip        = fStartSkip;
    542571        const UInt_t end_skip          = fEndSkip;
     
    595624                if (k_max == i+5 || k_max == i + max_search_window-1)
    596625                    continue;
     626
     627                //Make sure the pulse is isolated (area after the maximum is empty)
     628                UInt_t k_falling = k_max+200;
     629                for (UInt_t k_after = k_falling; k_after < k_max +250; k_after++)
     630                {
     631                    if (val[k_after] > val[k_falling] &&
     632                        val[k_after + fNumAverage/2] > val[k_falling])
     633                    continue;
     634                }
    597635
    598636                //search for half maximum before maximum
     
    623661                single.fTime   = k_half_max;
    624662
    625                 // Crossing of the threshold is at 5
     663                // Crossing of the threshold is at 7
    626664                for (UInt_t j=k_half_max; j<k_half_max+integration_size; j++)
    627665                    single.fSignal += ptr[j];
     
    631669                // Add single to list
    632670                result.push_back(single);
     671                break; //accept only one pulse per event
    633672
    634673                // skip falling edge
     
    644683
    645684int extract_singles(
    646                     Int_t        max_dist   = 14,
    647                     Double_t     threshold  = 5,
    648                     const char  *runfile    = "raw/2019/10/27/20191027_",
    649                     int          firstRunID =  6,
    650                     int          lastRunID  =  6,
    651                     const char  *drsfile    = "raw/2019/10/27/20191027_003.drs.fits",
    652                     const char  *outpath    = "."
     685                      Int_t        max_dist   = 14,
     686                      Double_t     threshold  = 5,
     687                      const char  *runfile    = "/home/giangdo/Documents/Master/MA/pulse/data_single_pe/20191027_",
     688                      int          firstRunID =  6,
     689                      int          lastRunID  =  6,
     690                      const char  *drsfile    = "/home/giangdo/Documents/Master/MA/pulse/data_single_pe/20191027_004.drs.fits",
     691                      const char  *outpath    = "/home/giangdo/Documents/Master/MA/pulse/data_single_pe/extracted"
    653692                   )
    654693{
     
    688727
    689728    // map file to use (get that from La Palma!)
    690     const char *map = usemap ? "../hawc/FAMOUSmap171218.txt" : NULL;
     729    const char *map = usemap ? "/home/giangdo/Documents/Master/MA/Software/Mars/hawc/HAWCsEyemap181214.txt" : NULL;
    691730
    692731    // ------------------------------------------------------
     
    856895    const TH2 *htime   = h->GetTime();
    857896    const TH2 *hpulse  = h->GetPulse();
     897    const TH2F *ppulse2d = h->GetPulse2D();
    858898
    859899    d->AddTab("Time");
     
    869909    hp->Draw();
    870910
     911    d->AddTab("2DPulse");
     912    ppulse2d->DrawCopy("colz");
     913
    871914    d->SaveAs(outfile);
    872915
Note: See TracChangeset for help on using the changeset viewer.