#include #include #include #include #include #include #include #include #include "TFile.h" #include "TGraph.h" #include "TGraphErrors.h" #include "TH1F.h" #include "TMath.h" // For global ADC corrections Bool_t ADCcalibration(Int_t,Int_t,Int_t,Int_t&,Int_t&); // For corrections of ADC top/bottom values of the beam hole slats const Char_t *InputFileADCcorrHoleSlats="Adcb_Adct_HoleModule.root"; TH1F *hMedianSlopeADCtb_hole; const Int_t SlatMinHole=50; // in reality, the hole concern slats 51-53 const Int_t SlatMaxHole=54; // but neighbouring slats show similar effects // probably due to brownishing (too much irradiated in the centre) TGraph *gADCcorrHoleSlat[2][200]; Bool_t ADCcorrHoleSlat(Int_t,Int_t,Int_t,Int_t&,Int_t&); // For harmonisation factors of ADC's top/bottom const Char_t *InputFileADCharmonisation="ADCgainHarmonisation.root"; const Int_t SlatMin=25; const Int_t SlatMax=72; const Char_t *ctb[2]={"top","bot"}; TH1F *hp2ADCratio; Bool_t ADCtbHarmonise(Int_t,Int_t,Int_t,Int_t&,Int_t&); Bool_t Multihit(Int_t,Int_t,Int_t,Int_t,Int_t); const Char_t *InputFileMultihitCut="ExtractMultihitCut.root"; const Char_t *InputFileMultihitCutParam="MultihitCutParameters.root"; // here are stored the cut parameters const Float_t ToleranceDeltaxE=0.4; // for clean Zid. (TOF-ADC) maps const Float_t ToleranceDeltaxE_loose=1.; // less hard TGraph *g2DxtxE[200]; TH1F *hxtmin,*hxtmax; // For Z identification const Char_t *InputFileZidGrids="Zgrid_slat64_ElossCorrected_s394.root"; const Char_t *InputFileZidQuality="ZidQuality.dat"; TGraph *gZidGrid[100][200]; Bool_t ZgridAvailable[100][200]; Bool_t BadZresolution[200]; // For TDC calibration Bool_t TDCcalibration(Int_t,Int_t,Int_t,Int_t,Float_t,Int_t,Float_t&,Float_t&,Float_t&,Float_t&); const Char_t *InputFileWalkTDC="WalkTDC_1670-1690.root"; const Float_t DistanceTargetFrontWall=450.; // (cm) - has to be confirmed/precised - 26-04-2012 const Float_t DistanceTargetRearWall=DistanceTargetFrontWall+8.; const Float_t EAproj=400.; // projectile kinetic energy per nucleon (MeV) const Float_t BetaProj=sqrt((1-pow(1+EAproj/931.5,-2))); const Float_t ToFprojFrontWall=DistanceTargetFrontWall/(BetaProj*30.); // (ns) - should be around 21 ns const Float_t ToFprojRearWall=DistanceTargetRearWall/(BetaProj*30.); // (ns) const Float_t MeanRawTDChighZslat64=-104.7; // (ns) - mean value of -(TDCtop+TDCbot)/40.-tstart of Z>10 for reference slat 64 const Float_t TimeOffsetRef[2]={ToFprojFrontWall-MeanRawTDChighZslat64, ToFprojRearWall-MeanRawTDChighZslat64}; TGraph *gWalkTDC[200][2]; // Declarations for TDC walk determination const Char_t *OutputFileWalk="WalkTDC_1670-1690.root"; TGraph *gWalkTDC[200][2]; TH1F *hWalkTDC[200][2]; TH2F *h2WalkTDC[200][2]; TProfile *pWalkTDC[200][2]; const Float_t p1=0.782; // parameters of fit of vs Z in Au@600 A.MeV s254 const Float_t p2=-0.6852; // (y = beam ToF + p1/(x+p2)) const Float_t beta600AMeV=0.542; const Float_t beta400AMeV=0.395; const Float_t p1_400AMeV=p1*beta400AMeV/beta600AMeV; const Float_t ADCMin=0; const Float_t ADCMax=18000; const Int_t NbinsADC=int((ADCMax-ADCMin)/100); const Float_t TDCMin=-60; const Float_t TDCMax=100; const Int_t NbinsTDC=(TDCMax-TDCMin)*5; const Float_t ToFrange=20.; // +/- variation tolerated around mean ToF value for walk calculation Float_t MeanToF[2]; MeanToF[0]=ToFprojFrontWall; MeanToF[1]=ToFprojRearWall;