Ignore:
Timestamp:
01/31/13 12:27:57 (12 years ago)
Author:
Jens Buss
Message:
renamed global variables, addded quality cuts, fixed bug, raw were used
but spikeremoved should, number of entries set to number of insertzed
pulses
File:
1 edited

Legend:

Unmodified
Added
Removed
  • fact/tools/rootmacros/PulseTemplates/FPulseOverlay_filelist.C

    r14782 r14809  
    179179//void SaveHistograms( const char*, const char*, TObjArray*, int );
    180180
    181 void FillHistograms(Pixel*, vector<Region>*, int, int, int , int );
     181void FillHistograms(Pixel*, vector<Region>*, int, int, int , bool , int verbosityLevel );
    182182void DrawTestHistograms( int);
    183183bool ProduceDebugHistos( vector<Region> *pZXings);
    184 bool  UseThisPulse( int, int, int, float, int, int);
     184bool  UseThisPulse( int, int, int, float, float bslMean, int maxPulseOrder, int verbosityLevel);
    185185void UpdateCanvases( int, int, bool);
    186186void DeletePixelCanvases( int, int );
     
    211211//----------------------------------------------------------------------------
    212212int FPulseOverlay_filelist(
    213         TString     inputPath           = "raw/2012/03/09/",
    214         TString     sequenzFileName = "/home/jbuss/macros/isdc_rootmacros/PulseTemplates/seq",
    215 //        TString     dataFileSuffix      = ".fits.gz",
     213        TString     inputPath           = "raw/2012/08/02/",
     214        TString     sequenzFileName = "/home_nfs/isdc/jbbuss/analysis/pulseShape/lists/20120802templ_vs_0mV.csv",
    216215//        int         firstRunId          = 18,
    217 //        int         nRuns               = 50,
     216        int         nRuns               = -1,
    218217//        TString     drsfilename         = "20120309_012.drs.fits.gz",
    219         TString     OutputPath          = "analysis/FPulseTemplate/20120309_018/Overlay/",
    220         TString     OutRootFileName     = "20120309_018.root",
     218        TString     OutputPath          = "analysis/pulseShape/",
     219        TString     OutRootFileName     = "20120802_0mV_newSelectAlg.root",
    221220        int         firstevent          = 1,        // Hast to be between 1 and infinity NOT 0!!!!
    222         int         nevents             = 100,
     221        int         nevents             = -1,
    223222        int         firstpixel          = 0,
    224         int         npixel              = 2,
     223        int         npixel              = 1,
    225224        int         pixelSetSize       = 150,
    226         int         maxPulseOrder       = 1,
    227         int         verbosityLevel      = 6,        // different verbosity levels can be implemented here
     225        int         maxPulseOrder       = 6,
     226        int         verbosityLevel      = 0,        // different verbosity levels can be implemented here
    228227        TString     histoOptions        = "SRM",
    229         int         AmplWindowWidth     = 14,       //Width of Window for selection of pulses to histograms
    230         float       GainMean            = 9,
    231         float       BSLMean             = -1,        //4 Histogramms will be drawn, decide how far pulsehights differ from eachother
     228        int         AmplWindowWidth     = 7,       //Width of Window for selection of pulses to histograms
     229        float       GainMean            = 11,
     230        float       BSLMean             = -2,        //4 Histogramms will be drawn, decide how far pulsehights differ from eachother
    232231        int         avg1                = 8,
    233232        int         avg2                = 8,
    234         int         OverlayWindowLeft   = 70,
    235         int         OverlayWindowRight  = 230,
    236         bool        ProduceGraphic      = true,
     233        int         OverlayWindowLeft   = 1024,
     234        int         OverlayWindowRight  = 1024,
     235        bool            select_pulses   = false,
     236        bool        ProduceGraphic      = false,
    237237        bool        spikeDebug          = false,
    238238        bool        debugPixel          = false,
    239         bool        stats               = false,
    240         bool        saveResults         = false,
     239        bool        stats               = true,
     240        bool        saveResults         = true,
    241241        bool        testmode            = false,
    242242        int         refresh_rate        = 500      //refresh rate for canvases
     
    244244{
    245245//-----------------------------------------------------------------------------
     246// configuration
     247//-----------------------------------------------------------------------------
     248
     249    float minPulseAmplitude     = 0.3*(GainMean-BSLMean);
     250    float maxPulseAmplitude     = 2*(GainMean-BSLMean)*maxPulseOrder;
     251    int   timeLineEdgeWidth     = 2;
     252    int   FallingEdgeWidth      = 200;
     253    int   beginRisingEdge       = 5;
     254    int   endRisingEdge         = 10;
     255    float   risingEdgeMinSlope    = 0.5;
     256
     257//-----------------------------------------------------------------------------
    246258// prepare datafiles
    247259//-----------------------------------------------------------------------------
    248260
    249261    inputPath       = SetHostsPaths(false, inputPath );
     262
     263    TString     fitsFileSuffix      = ".fits.gz";
     264    TString     drsFileSuffix       = ".drs.fits.gz";
    250265
    251266    // declare the data file
     
    260275    vector<TString> drsFileNames;
    261276
     277    cout << "...reading sequnezfile" << endl;
    262278    ReadSequenzFile(
    263279            sequenzFileName,
     
    270286    //fill vector of fits files to read
    271287    cout << "generating file list:" << endl;
     288    if(nRuns < fitsFileNames.size() && nRuns != -1)
     289    {
     290        fitsFileNames.resize(   nRuns);
     291        drsFileNames.resize(    nRuns);
     292    }
     293
    272294    for (unsigned int fileNr = 0; fileNr < fitsFileNames.size(); fileNr++)
    273295    {
     
    288310        TString fits_filename = inputPath;
    289311        fits_filename.Append(fitsFileNames.at(fileNr));
     312        fits_filename.Append(fitsFileSuffix);
    290313        TString drs_filename = inputPath;
    291314        drs_filename.Append(drsFileNames.at(fileNr));
     315        drs_filename.Append(drsFileSuffix);
    292316        cout << "\n\t fits:\t" << fits_filename;
    293317        cout << "\n\t drs:\t" << drs_filename << endl;
     
    321345         << " drs: "
    322346         << drsFileNames.size() << endl;
     347
     348    if (fitsFileNames.size() < 1) return 1;
    323349
    324350//----------------------------------------------------------------------------
     
    462488// Main Cycle
    463489//-----------------------------------------------------------------------------
     490    cout << "------------------Main cylcle------------------------------" << endl;
     491
     492    if(npixel == -1) npixel = 1439;
    464493
    465494    if ( pixelSetSize == -1 )
     
    468497    }
    469498    int lastPixelOfSet = 0;
     499    cout << "check " << npixel << endl;
    470500//-------------------------------------
    471501// Loop over Pixel Sets
     
    497527        //-------------------------------------
    498528
     529        cout << "loop over files" << endl;
    499530        for( unsigned int fileId = 0; fileId < fitsFileNames.size(); fileId++ )
    500531        {
     
    597628                }
    598629
    599                 cout << "\t\t success!" << endl;
    600630    //--------------------------------------------------------------------
    601631    // Loops over every Pixel of a Set of Pixels
     
    622652    // Create individual Pixel
    623653    //-------------------------------------
    624                     if (ev == firstevent)
     654                    if (ev == firstevent && fileId == 0)
    625655                    {
    626656                        pixel[pixelID] = new Pixel(
     
    680710
    681711    //-------------------------------------
    682     // SeagRCh vor Zero crossings
     712    // Search vor Zero crossings
    683713    //-------------------------------------
    684714                    if (verbosityLevel > 2) cout << endl << "...seagRChing zero crossings" ;
     
    691721                    EnlargeRegion(*pZXings, 10, 10);
    692722                    findAbsMaxInRegions(*pZXings, gVslide);
    693                     removeMaximaBelow( *pZXings, 3.0);
    694                     removeRegionWithMaxOnEdge( *pZXings, 2);
    695                     removeRegionOnFallingEdge( *pZXings, 100);
    696                     findTimeOfHalfMaxLeft(*pZXings, gVslide, gBSLMean, 5, 10, verbosityLevel );
    697                     removeRegionWithToFlatSlope(*pZXings, 0.5);
     723                    removeMaximaBelow( *pZXings, minPulseAmplitude);
     724                    removeMaximaAbove( *pZXings, maxPulseAmplitude);
     725                    removeRegionWithMaxOnEdge( *pZXings, timeLineEdgeWidth);
     726                    removeRegionOnFallingEdge( *pZXings, FallingEdgeWidth);
     727                    // Calculate the position (sample) of a pulses half maximum
     728                    findTimeOfHalfMaxLeft(*pZXings, gVslide, gBSLMean, beginRisingEdge, endRisingEdge, verbosityLevel );
     729                    //sometimes pulses where found with a very flat slope, DISMISS them
     730                    removeRegionWithToFlatSlope(*pZXings, risingEdgeMinSlope);
    698731                    if (verbosityLevel > 2) cout << "...done" << endl;
    699732
     
    713746    //                            histoOptions,
    714747                                maxPulseOrder,
     748                                select_pulses,
    715749                                verbosityLevel
    716750                                );
     
    9941028        int             eventNumber,
    9951029        int             maxPulseOrder,
     1030        bool            select_pulses,
    9961031        int             verbosityLevel
    9971032        )
    9981033{
     1034    //entry counters
     1035    int maxOverlayEntries   = 0;
     1036    int edgeOverlayEntries  = 0;
     1037    int maxProfileEntries   = 0;
     1038    int edgeProfileEntries  = 0;
     1039
     1040
     1041
     1042
    9991043    if (verbosityLevel > 2) cout << endl << "...filling pulse histograms" ;
    10001044    if (verbosityLevel > 3) cout << endl << "...EventNR " << eventNumber ;
     
    10201064        if (Left < 0)                           Left        =   0;
    10211065        if (EdgeLeft < 0)                       EdgeLeft    =   0;
    1022         if (Right > (int)gAmeas.size() )         Right       =   gAmeas.size();
    1023         if (EdgeRight > (int)gAmeas.size() )     EdgeRight   =   gAmeas.size();
     1066        if (Right > (int)gVcorr.size() )         Right       =   gVcorr.size();
     1067        if (EdgeRight > (int)gVcorr.size() )     EdgeRight   =   gVcorr.size();
    10241068
    10251069
     
    10331077                        AmplWindowWidth,
    10341078                        gGainMean,
     1079                        gBSLMean,
    10351080                        maxPulseOrder,
    10361081                        verbosityLevel
     
    10421087            }
    10431088        }
     1089        if (select_pulses){
     1090            order_of_pulse = 0;
     1091            use_this_peak = true;
     1092        }
    10441093        //Fill histograms
    10451094        if (use_this_peak)
    10461095        {
     1096            //get number of entries of used histograms
     1097            maxOverlayEntries   = CurrentPixel->hMaxOverlay[order_of_pulse]->GetEntries();
     1098            edgeOverlayEntries  = CurrentPixel->hEdgeOverlay[order_of_pulse]->GetEntries();
     1099            maxProfileEntries   = CurrentPixel->hMaxProfile[order_of_pulse]->GetEntries();
     1100            edgeProfileEntries  = CurrentPixel->hEdgeProfile[order_of_pulse]->GetEntries();
     1101
     1102
    10471103            //Histograms for Distributions
    10481104            if (CurrentPixel->mOptions.Contains("S") )
     
    10701126            for ( int pos = Left; pos < Right; pos++)
    10711127            {
    1072                 CurrentPixel->hMaxOverlay[order_of_pulse]->Fill( pos - (reg->maxPos), gAmeas[pos]) ;
    1073                 CurrentPixel->hMaxProfile[order_of_pulse]->Fill( pos - (reg->maxPos), gAmeas[pos]) ;
     1128                CurrentPixel->hMaxOverlay[order_of_pulse]->Fill( pos - (reg->maxPos), gVcorr[pos]) ;
     1129                CurrentPixel->hMaxProfile[order_of_pulse]->Fill( pos - (reg->maxPos), gVcorr[pos]) ;
    10741130            }
    10751131            //Histograms for Edge Overlay
    10761132            for ( int pos = EdgeLeft; pos < EdgeRight; pos++)
    10771133            {
    1078                 CurrentPixel->hEdgeOverlay[order_of_pulse]->Fill( pos - (reg->halfRisingEdgePos), gAmeas[pos]) ;
    1079                 CurrentPixel->hEdgeProfile[order_of_pulse]->Fill( pos - (reg->halfRisingEdgePos), gAmeas[pos]) ;
     1134                CurrentPixel->hEdgeOverlay[order_of_pulse]->Fill( pos - (reg->halfRisingEdgePos), gVcorr[pos]) ;
     1135                CurrentPixel->hEdgeProfile[order_of_pulse]->Fill( pos - (reg->halfRisingEdgePos), gVcorr[pos]) ;
    10801136            }
     1137
     1138            //set histogram entries
     1139            CurrentPixel->hMaxOverlay[order_of_pulse]->SetEntries(  maxOverlayEntries +1  );
     1140            CurrentPixel->hEdgeOverlay[order_of_pulse]->SetEntries( edgeOverlayEntries +1 );
     1141            CurrentPixel->hMaxProfile[order_of_pulse]->SetEntries(  maxProfileEntries +1  );
     1142            CurrentPixel->hEdgeProfile[order_of_pulse]->SetEntries( edgeProfileEntries +1 );
    10811143
    10821144            if (verbosityLevel > 2) cout << "...done" << endl;
     
    10991161        int             AmplWindowWidth,
    11001162        float           gainMean,
     1163        float           bslMean,
    11011164        int             maxPulseOrder,
    11021165        int             verbosityLevel
     
    11051168    //determine if pulse is of given order
    11061169bool use_this_peak = false;
    1107         if (gAmeas[maxPos] >= ((gainMean*(order+1)) - (AmplWindowWidth/2))
    1108             && gAmeas[maxPos] < ((gainMean*(order+1)) + AmplWindowWidth/2))
     1170        if (gVcorr[maxPos] >= ((gainMean*(order+1)) - bslMean - (AmplWindowWidth/2))
     1171            && gVcorr[maxPos] < ((gainMean*(order+1)) -bslMean + AmplWindowWidth/2))
    11091172        {
    11101173            if (verbosityLevel > 3) cout << "...#" << order ;
Note: See TracChangeset for help on using the changeset viewer.