Ignore:
Timestamp:
01/31/13 11:51:16 (12 years ago)
Author:
Jens Buss
Message:
rising edge synamic range calulation
File:
1 edited

Legend:

Unmodified
Added
Removed
  • fact/tools/rootmacros/zerosearch.C

    r13614 r14803  
    220220    int VerbosityLevel)
    221221{
    222 if ( FallingEdgeWidth < 1){
    223     if (VerbosityLevel > 0){
    224       cout << " removeRegionOnFallingEdge: FallingEdgeWidth  < 1" << endl;
    225       cout << " FallingEdgeWidth =" << FallingEdgeWidth << endl;
    226       cout << "returning." << endl;
    227     return regions.size();
    228     }
    229   }
     222    //throw exceptions
     223    if ( FallingEdgeWidth < 1){
     224        if (VerbosityLevel > 0){
     225            cout << " removeRegionOnFallingEdge: FallingEdgeWidth  < 1" << endl;
     226            cout << " FallingEdgeWidth =" << FallingEdgeWidth << endl;
     227            cout << "returning." << endl;
     228            return regions.size();
     229        }
     230    }
     231    //throw exceptions
    230232    if (regions.size() < 1){
    231233        if (VerbosityLevel > 3)
     
    260262    if (EdgeWidth < 1){
    261263        if (VerbosityLevel > 0){
    262             cout << "removeReginWithMaximaOnEdge: EdgeWidth < 1" << endl;
     264            cout << "removeRegionWithMaximaOnEdge: EdgeWidth < 1" << endl;
    263265            cout << "EdgeWidth=" << EdgeWidth << endl;
    264266            cout << "returning." << endl;
     
    466468        // ALARM check for out of range values...
    467469
    468 
     470        bool passed = false;
     471        for (int slice=reg->maxPos;
     472                    slice > 1; --slice)
     473        {
     474            if ( data[slice] < 0.9*data[reg->maxPos] && !passed)
     475            {
     476                beginRisingEdge = reg->maxPos - slice;
     477                passed = true;
     478            }
     479
     480            if ( data[slice] < 0.1*data[reg->maxPos])
     481            {
     482                endRisingEdge = reg->maxPos - slice;
     483                passed = false;
     484                reg->lengthOfRisingEdge=endRisingEdge - beginRisingEdge;
     485                break;
     486            }
     487        }
     488
     489
     490        //calculate mean of x and y coordinate
    469491        for (int slice=reg->maxPos - beginRisingEdge;
    470492                    slice > reg->maxPos - endRisingEdge; --slice)
     
    478500        xmean /= counter;
    479501        ymean /= counter;
     502
    480503        if (VerbosityLevel > 2) cout << "## xmean: " << xmean << endl;
    481504        if (VerbosityLevel > 2) cout << "## ymean: " << ymean << endl;
    482505
     506        cov = 0.0;
     507        var = 0.0;
     508
    483509        for (int slice=reg->maxPos - beginRisingEdge;
    484510                    slice > reg->maxPos - endRisingEdge; --slice)
    485511        {
    486             cov = (data[slice] - ymean) * (slice - xmean);
    487             var = (slice - xmean) * (slice - xmean);
     512            cov += (data[slice] - ymean) * (slice - xmean);
     513            var += (slice - xmean) * (slice - xmean);
    488514        }
    489515        if (VerbosityLevel > 2) cout << "## cov: " << cov << endl;
     
    492518        slope = cov / var;
    493519        intercept = ymean - slope * xmean;
     520
    494521        // now calculate, where the fittet line crosses the threshold
    495522        pos_of_thr_Xing = (thr - intercept) / slope;
Note: See TracChangeset for help on using the changeset viewer.