Ignore:
Timestamp:
03/19/13 09:34:32 (12 years ago)
Author:
Jens Buss
Message:
fill additional distribution histogtrams
File:
1 edited

Legend:

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

    r15118 r15121  
    225225        int         maxPulseOrder       = 6,
    226226        //---------------{stacking parameters}---------------
    227         TString     histoOptions        = "SRM",
     227        TString     histoOptions        = "SRMTILDAP",
    228228        int         AmplWindowWidth     = 8,       //Width of Window for selection of pulses to histograms
    229229        float       GainMean            = 12,
     
    731731                    vector<Region>* pZXings = zerosearch( gVcfd2 , 1 , 8);
    732732                    // pZXings means "zero cross ings"
    733                     EnlargeRegion(*pZXings, 10, 10);
    734                     findAbsMaxInRegions(*pZXings, gVslide);
    735                     removeMaximaBelow( *pZXings, minPulseAmplitude);
    736                     removeMaximaAbove( *pZXings, maxPulseAmplitude);
    737                     removeRegionWithMaxOnEdge( *pZXings, timeLineEdgeWidth);
    738                     removeRegionOnFallingEdge( *pZXings, FallingEdgeWidth);
     733
     734                    int init_reg_size = pZXings->size();
     735                    int curr_reg_size = initial_region_size;
     736                    int step = 0;
     737                    pixel[pixelID]->hDiscartedPulses->Fill(step, init_reg_size - curr_reg_size);
     738
     739                    //enlare the search window
     740                    curr_reg_size = EnlargeRegion(*pZXings, 10, 10);
     741                    pixel[pixelID]->hDiscartedPulses->Fill(step++, init_reg_size - curr_reg_size);
     742
     743                    // find the the max position of a peak
     744                    curr_reg_size = findAbsMaxInRegions(*pZXings, gVslide);
     745                    pixel[pixelID]->hDiscartedPulses->Fill(step++, init_reg_size - curr_reg_size);
     746
     747                    //do a small after pulse analysis, fill in delayed pulses
     748                    // +++++++++++++++++++++++++++++++++++++++++++++++++++++++
     749                    vector<Region>::iterator reg_it = pZXings->begin();
     750                    int first_pos = pZXings->begin()->maxPos;
     751                    while( reg_it != pZXings->end() )
     752                    {
     753                        float minimum = 0.0;
     754                        for (int sl = reg_it->maxPos; sl < 1; i--)
     755                        {
     756                            if (gVcfd2[sl] > 0 && gVcfd2[sl-2] <= 0 && gVcfd2[sl-4] < 0)
     757                            {
     758                                minimum = gVcfd2[sl-2];
     759                                break;
     760                            }
     761                        }
     762
     763                        pixel[pixelID]->hAfterPulses->Fill(
     764                                    reg_it->maxPos - first_pos,
     765                                    reg_it->maxVal - minimum
     766                                    );
     767                    }
     768                    // +++++++++++++++++++++++++++++++++++++++++++++++++++++++
     769
     770                    // remove peaks below 1 p.e.
     771                    curr_reg_size = removeMaximaBelow( *pZXings, minPulseAmplitude);
     772                    pixel[pixelID]->hDiscartedPulses->Fill(step++, init_reg_size - curr_reg_size);
     773
     774                    // remove peaks above that are larger tha the largest amplitude to be studied
     775                    curr_reg_size = removeMaximaAbove( *pZXings, maxPulseAmplitude);
     776                    pixel[pixelID]->hDiscartedPulses->Fill(step++, init_reg_size - curr_reg_size);
     777
     778                    // remove pulses at the pipeline fringes
     779                    curr_reg_size = removeRegionWithMaxOnEdge( *pZXings, timeLineEdgeWidth);
     780                    pixel[pixelID]->hDiscartedPulses->Fill(step++, init_reg_size - curr_reg_size);
     781
     782                    // remove "Afterpulses" from pulse list
     783                    curr_reg_size = removeRegionOnFallingEdge( *pZXings, FallingEdgeWidth);
     784                    pixel[pixelID]->hDiscartedPulses->Fill(step++, init_reg_size - curr_reg_size);
     785
    739786                    // Calculate the position (sample) of a pulses half maximum
    740                     findTimeOfHalfMaxLeft(*pZXings, gVslide, gBSLMean, beginRisingEdge, endRisingEdge, verbosityLevel );
    741                     //sometimes pulses where found with a very flat slope, DISMISS them
    742                     removeRegionWithToFlatSlope(*pZXings, risingEdgeMinSlope);
     787                    curr_reg_size = findTimeOfHalfMaxLeft(*pZXings, gVslide, gBSLMean, beginRisingEdge, endRisingEdge, verbosityLevel );
     788                    pixel[pixelID]->hDiscartedPulses->Fill(step++, init_reg_size - curr_reg_size);
     789
     790                    //sometimes pulses where found with a very flat slope, DISCARD them
     791                    curr_reg_size = removeRegionWithToFlatSlope(*pZXings, risingEdgeMinSlope);
     792                    pixel[pixelID]->hDiscartedPulses->Fill(step++, init_reg_size - curr_reg_size);
    743793                    if (verbosityLevel > 2) cout << "...done" << endl;
     794
     795                    // Fill arrival times into histograms
     796                    vector<Region>::iterator it = pZXings->begin();
     797                    while( it != pZXings->end() )
     798                    {
     799                        pixel[pixelID]->hMaxPos->Fill(      it->maxPos);
     800                        pixel[pixelID]->hEdgePos->Fill(     it->halfRisingEdgePos);
     801                        pixel[pixelID]->hEdgeSlope->Fill(   it->slopeOfRisingEdge);
     802                        pixel[pixelID]->hIntercept->Fill(   it->interceptRisingEdge);
     803                        pixel[pixelID]->hEdgeLength->Fill(  it->lengthOfRisingEdge);
     804                        pixel[pixelID]->hMaxAmpl->Fill(     it->maxVal);
     805                        ++it;
     806                    }
    744807
    745808    //-----------------------------------------------------------------------------
     
    11451208            for ( int pos = Left; pos < Right; pos++)
    11461209            {
    1147                 if (pos > reg->maxPos + 2)
     1210                if (pos > reg->maxPos + 1)
    11481211                {
    11491212                    if ( pos+5 >= Right )
     
    11561219                    }
    11571220                    slope_of_follow = (gVcorr[pos+5] - gVcorr[pos+1])/5;
    1158 
    11591221                    if (slope_of_follow > 1)
    11601222                    {
     
    11651227                CurrentPixel->hMaxProfile[order_of_pulse]->Fill( pos - (reg->maxPos), gVcorr[pos]) ;
    11661228            }
     1229
    11671230            //Histograms for Edge Overlay
     1231            int last_pos = 0;
     1232            bool ap_cutoff = false;
     1233            slope_of_follow = 0.0;
     1234
    11681235            for ( int pos = EdgeLeft; pos < EdgeRight; pos++)
    11691236            {
    1170                 if (pos > reg->maxPos + 2)
     1237                if (pos > reg->maxPos + 1)
    11711238                {
    11721239                    // check if the current slice is close to the end of the overlay window
    11731240                    if ( pos+5 >= Right )
    11741241                    {
     1242                        ap_cutoff = false;
    11751243                        break;
    11761244                    }
     
    11801248                    if (gVcorr[pos+1] > average_of_max)
    11811249                    {
     1250                        ap_cutoff = true;
    11821251                        break;
    11831252                    }
     
    11871256                    if (slope_of_follow > 1)
    11881257                    {
     1258                        ap_cutoff = true;
    11891259                        break;
    11901260                    }
     
    12001270                CurrentPixel->hEdgeOverlay[order_of_pulse]->Fill( pos - (reg->halfRisingEdgePos), gVcorr[pos]) ;
    12011271                CurrentPixel->hEdgeProfile[order_of_pulse]->Fill( pos - (reg->halfRisingEdgePos), gVcorr[pos]) ;
     1272            }
     1273
     1274            CurrentPixel->hPulseLength->Fill(last_pos - (reg->halfRisingEdgePos));
     1275            if (ap_cutoff)
     1276            {
     1277                CurrentPixel->hPulseLengthAPcutoff->Fill(last_pos - (reg->halfRisingEdgePos));
     1278            }
     1279            else
     1280            {
     1281                CurrentPixel->hPulseLengthTLcutoff->Fill(last_pos - (reg->halfRisingEdgePos));
    12021282            }
    12031283
Note: See TracChangeset for help on using the changeset viewer.