Ignore:
Timestamp:
06/04/12 18:55:03 (12 years ago)
Author:
Jens Buss
Message:
modified Canvases, add fitfunctions for pulseshape, add chi2test
File:
1 edited

Legend:

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

    r13851 r14064  
    2121#include <TStyle.h>
    2222#include <TString.h>
     23#include <TF1.h>
    2324
    2425#include <stdio.h>
     
    7980        bool testmode
    8081        );
     82
    8183//----------------------------------------------------------------------------
    8284//----------------------------------------------------------------------------
     
    9294    int         npixel              = -1,
    9395    int         pixelSetSize        = 200,
    94     int         maxPulseOrder       = 3,
     96    int         maxPulseOrder       = 1,
    9597    TString     histoOptions        = "SRM",
    9698    bool        ProduceGraphic      = true,
    9799    bool        stats               = true,
    98     bool        saveResults         = true,
     100    bool        saveResults         = false,
    99101//    bool        fitdata             = false,
    100     bool        debugPixel          = false,
     102    bool        debugPixel          = true,
    101103//    int         refresh_rate        = 500,      //refresh rate for canvases
    102104    int         verbosityLevel      = 2        // different verbosity levels can be implemented here
     
    173175
    174176    //Canvas Pad numbering
    175     int PixelCanvasFrameNrs[4]      = {
     177    int PixelCanvasFrameNrs[8]      =
     178    {
    176179        1,  // Top left
    177         2,  // Top right
    178         3,  // bottom left
    179         4   // bootom right
     180        2,  // Top mid left
     181        3,  // Top mid right
     182        4,  // Top right
     183        5,  // bootom left
     184        6,  // bootom mid left
     185        7,  // bottom mid right
     186        8   // bootom right
    180187    };
    181188
    182     //Canvas Pad numbering
    183     int AllpixelCanvasFrameNrs[4]   = {
    184         1,  // Top left
    185         2,  // Top right
    186         3,  // bottom left
    187         4   // bootom right
    188     };
     189//    //Canvas Pad numbering
     190//    int DistributionCanvasFrameNrs[4]   = {
     191//        1,  // Top left
     192//        2,  // Top right
     193//        3,  // bottom left
     194//        4   // bootom right
     195//    };
    189196
    190197    if (ProduceGraphic)
     
    214221            cgpDistributions[pulse_order]
    215222                    = new TCanvas(cName,cTitle, 720,pulse_order*20,720,720);
    216             cgpDistributions[pulse_order]->Divide(2, 2);
     223//            cgpDistributions[pulse_order]->Divide(2, 2);
    217224
    218225            cName   ="cgpPixelPulses";
     
    223230
    224231            cgpPixelPulses[pulse_order]
    225                      = new TCanvas(cName,cTitle, 0,pulse_order*20,720,720);
    226             cgpPixelPulses[pulse_order]->Divide(2, 2);
     232                     = new TCanvas(cName,cTitle, 0,pulse_order*20,1400,1400);
     233            cgpPixelPulses[pulse_order]->Divide(4, 2);
    227234        }
    228235    }
     
    342349                            verbosityLevel,
    343350                            stats,
    344                             "",
     351                            "C",
    345352                            pixel[pixelID]->mPixelOverlayXaxisLeft,
    346353                            pixel[pixelID]->mPixelOverlayXaxisRight ,
     
    425432                if (ProduceGraphic && debugPixel)
    426433                {
     434                    pixel[pixelID]->hPixelEdgeMax[pulse_order]->GetXaxis()->SetLimits(
     435                                0,
     436                                300
     437                                );
     438//                    pixel[pixelID]->ShiftHistoInY(
     439//                                pixel[pixelID]->hPixelEdgeMax[pulse_order],
     440//                                2
     441//                                );
     442
     443
    427444                    pixel[pixelID]->DrawTemplateHistograms(
    428445                                cgpPixelPulses,
     
    434451                                PixelCanvasFrameNrs
    435452                                );
     453
     454                    //-------------------------------------
     455                    //-------------------------------------
     456                    // Test Area
     457                    //-------------------------------------
     458                    //-------------------------------------
     459
     460                    cgpPixelPulses[pulse_order]->cd(6);
     461
     462                    double fit_parameters[3];
     463                    FitFallingEdge(
     464                                "hugo1",
     465                                pixel[pixelID]->hPixelEdgeMax[pulse_order],
     466                                pixel[pixelID]->hPixelEdgeMax[pulse_order]->GetMaximumBin(),
     467                                pixel[pixelID]->hPixelEdgeMax[pulse_order]->GetXaxis()->GetLast(),
     468                                fit_parameters
     469                            );
     470                    cout << "Parameters\t" << fit_parameters[0] << "\n"
     471                            << fit_parameters[1] << "\n"
     472                               << fit_parameters[2] << "\n" << endl;
     473
     474//                    TF1 *func = new TF1("func", template_function, 0, 300, 10);
     475
     476//                    func->SetParameters(
     477//                                -0.5, // bsl
     478//                                pixel[pixelID]->hPixelEdgeMax[pulse_order]->GetXaxis()->GetFirst() + 50,
     479//                                pixel[pixelID]->hPixelEdgeMax[pulse_order]->GetMaximumBin()
     480//                                ); // range
     481
     482
     483
     484//                    func->SetParNames("baseline",
     485//                                      "begin of pol3", "begin of exp",
     486//                                      "exp-factor", "exp-tau", "ext-t0",
     487//                                      "pol3_0", "pol3_1", "pol3_2", "pol3_3"
     488//                                      );
     489//                    pixel[pixelID]->hPixelEdgeMax[pulse_order]->Fit(func);
     490
     491                    TH1F* hTest = new TH1F(
     492                                "hTest",
     493                                "Test",
     494                                pixel[pixelID]->mPixelOverlayXaxisLeft
     495                                + pixel[pixelID]->mPixelOverlayXaxisRight ,
     496                                (-1*pixel[pixelID]->mPixelOverlayXaxisLeft)-0.5,
     497                                pixel[pixelID]->mPixelOverlayXaxisRight-0.5
     498                                );
     499
     500                    hTest->GetXaxis()->SetLimits(
     501                                0,
     502                                300
     503                                );
     504
     505                    for (int bin = 0;
     506                         bin < pixel[pixelID]->hPixelEdgeMax[pulse_order]->GetXaxis()->GetLast();
     507                         bin++
     508                         )
     509                    {
     510                        hTest->SetBinContent( bin, (-1)*(fit_parameters[0]+TMath::Exp(fit_parameters[1]+fit_parameters[2]*(bin))) );
     511                    }
     512
     513                    hTest->Add(pixel[pixelID]->hPixelEdgeMax[pulse_order], 1);
     514
     515                    cgpPixelPulses[pulse_order]->cd(7);
     516                    hTest->Draw();
     517
     518                    for (int bin = 0;
     519                         bin < pixel[pixelID]->hPixelEdgeMax[pulse_order]->GetXaxis()->GetLast();
     520                         bin++
     521                         )
     522                    {
     523                        hTest->SetBinContent( bin, (-1)*(hTest->GetBinContent(bin)) );
     524                    }
     525
     526//                    pixel[pixelID]->hPixelEdgeMax[pulse_order]->Fit(func);
     527
     528                    double fit_parameters2[3];
     529                    FitFallingEdge(
     530                                "hugo2",
     531                                hTest,
     532                                hTest->GetXaxis()->GetFirst()+68,
     533                                hTest->GetXaxis()->GetFirst()+80,
     534                                fit_parameters2
     535                            );
     536
     537                     cgpPixelPulses[pulse_order]->cd(8);
     538
     539                     TH1F* hTest2 = new TH1F(
     540                                 "hTest2",
     541                                 "Test",
     542                                 pixel[pixelID]->mPixelOverlayXaxisLeft
     543                                 + pixel[pixelID]->mPixelOverlayXaxisRight ,
     544                                 (-1*pixel[pixelID]->mPixelOverlayXaxisLeft)-0.5,
     545                                 pixel[pixelID]->mPixelOverlayXaxisRight-0.5
     546                                 );
     547
     548                     hTest2->GetXaxis()->SetLimits(
     549                                 0,
     550                                 300
     551                                 );
     552
     553                    for (int bin = 0;
     554                         bin < pixel[pixelID]->hPixelEdgeMax[pulse_order]->GetXaxis()->GetLast();
     555                         bin++
     556                         )
     557                    {
     558                        hTest2->SetBinContent( bin, (-1)*(hTest->GetBinContent(bin)) );
     559                    }
     560
     561                    double fit_parameters3[3];
     562                    FitRisingEdge(
     563                                "hugo3",
     564                                hTest2,
     565                                hTest2->GetXaxis()->GetFirst()+68,
     566                                hTest2->GetXaxis()->GetFirst()+80,
     567                                fit_parameters3
     568                            );
     569
     570                    hTest2->Draw();
     571
     572
     573                    //-------------------------------------
     574                    //-------------------------------------
     575                    // EOF Test Area
     576                    //-------------------------------------
     577                    //-------------------------------------
     578
     579
    436580                }
     581//                FitMaxPropabilityPuls(
     582//                            pixel[pixelID]->hPixelEdgeMean[pulse_order],
     583//                            verbosityLevel
     584//                            );
    437585                //-------------------------------------
    438586                // Fill Histogramms of Camera
     
    455603                            );
    456604
     605                //-------------------------------------
     606                // Comparisons
     607                //-------------------------------------
     608
     609                //chi2 test
     610                float chi2 =
     611                pixel[pixelID]->hPixelEdgeMean[pulse_order]->Chi2Test(
     612                             pixel[pixelID]->hPixelMean[pulse_order],
     613                            "UUPCHI2"
     614                            );
     615                cout << "p-Value :" << chi2 << endl;
     616                wholeCamera->hChi2EdgetoMax[pulse_order]->Fill(chi2);
     617                cgpDistributions[pulse_order]->cd();
     618                wholeCamera->hChi2EdgetoMax[pulse_order]->Draw();
    457619
    458620                if (verbosityLevel > 2)
     
    486648                if (input=="q\n")
    487649                {
    488                        break;
     650                    return(0);
    489651                }
    490652            }
     653
    491654            if ( saveResults )
    492655            {
     
    594757            wholeCamera->DrawTemplateHistograms(
    595758                        cgpPixelPulses,
    596                         AllpixelCanvasFrameNrs
     759                        PixelCanvasFrameNrs
    597760                        );
    598761
    599762            wholeCamera->DrawEdgeTemplateHistograms(
    600763                        cgpPixelPulses,
    601                         AllpixelCanvasFrameNrs
     764                        PixelCanvasFrameNrs
    602765                        );
    603766        }
     
    630793        TString input = Getline("press <return> to exit: ");
    631794        timer.TurnOff();
    632         if (input=="q\n")
    633         {
    634                break;
    635         }
     795        cout << input ;
    636796    }
    637797
     
    827987    return 0;
    828988}
     989
     990
Note: See TracChangeset for help on using the changeset viewer.