14 #include "TSpectrum.h"
15 #include "TObjArray.h"
19 #include "TVirtualFitter.h"
20 #include "TPavesText.h"
40 TString FitType =
"CBDS";
42 if(Opt.Contains(
"baseline"))
45 CrystalName.ToLower();
47 if(Opt.Contains(
"all") || Opt.Contains(CrystalName))
51 if(Opt.Contains(
"calib"))
53 if(Opt.Contains(
"gaus")) FitType =
"Gaus";
64 cout<<
"Seg"<<
"\t\t\t"<<
"GausMean"<<
"\t\t"<<
"FWHM"<<
endl;
66 TCanvas *CurrentCanvas = gPad->GetCanvas();
69 while(CurrentCanvas->cd(Pad) != CurrentCanvas->cd(Pad+1))
72 CurrentCanvas->cd(Pad);
77 CurrentCanvas->Update();
78 CurrentCanvas->Modified();
80 ofstream FileOut(((TString)
"FitResults/" +
fCrystalName +
"_Baselines.fit"));
81 FileOut<<
"#Seg"<<
"\t"<<
"GausMean"<<
"\t"<<
"FWHM"<<
endl;
82 for(
int i=0 ; i<38 ; i++)FileOut<<i<<
"\t"<<
TabMean[i]<<
"\t\t"<<
TabFWHM[i]<<endl;
105 cout<<
"Seg"<<
"\t\t\t"<<
"GausMean"<<
"\t\t"<<
"FWHM"<<
endl;
109 TObjArray *array = Name.Tokenize(
"_");
110 TObject *LastToken = array->At(array->GetLast());
112 HistNbr = ((TString)LastToken->GetName()).Atoi();
116 TString SegName = HistPosition.
SegName;
118 double Mean = FS->
GetMean().at(0);
119 double FWHM = FS->
GetFWHM().at(0);
124 if(SegName.Contains(
"Core"))cout<<
"Seg "<<HistNbr<<
"("<<SegName<<
") :\t"<<Mean<<
"\t\t"<<FWHM<<
endl;
125 else cout<<
"Seg "<<HistNbr<<
"("<<SegName<<
") : \t"<<Mean<<
"\t\t"<<FWHM<<
endl;
128 else if(gPad->GetListOfPrimitives()->GetSize()>1)
131 TObjArray *array = Name.Tokenize(
"_");
132 TObject *LastToken = array->At(array->GetLast());
134 HistNbr = ((TString)LastToken->GetName()).Atoi();
138 TString SegName = HistPosition.
SegName;
140 if(SegName.Contains(
"Core"))cout<<
"Seg "<<HistNbr<<
"("<<SegName<<
") :\t"<<0<<
"\t\t"<<0<<
"\t Broken Segment"<<
endl;
141 else cout<<
"Seg "<<HistNbr<<
"("<<SegName<<
") : \t"<<0<<
"\t\t"<<0<<
"\t Broken Segment"<<
endl;
152 TString opt = (TString)option;
155 if(opt.Contains(
"same",TString::kIgnoreCase)) c = (TCanvas*)gPad->GetCanvas();
159 TString Title =
"Mapping of the baselines for crystal " +
fCrystalName;
169 for(
int i=0 ; i<
fNSg ; i++)
173 TPad *pad = (TPad*)c->cd(HistPosition.
PadNmbr);
177 TPaveText *p = (TPaveText*)pad->GetListOfPrimitives()->FindObject(
"InfoPad");
179 h = ((TH1*)ListOfHists->At(i));
180 h->GetXaxis()->SetLabelSize(0.07);
181 h->GetYaxis()->SetLabelSize(0.07);
184 for(
int k=0 ; k<pad->GetListOfPrimitives()->GetSize() ; k++)
186 if(pad->GetListOfPrimitives()->At(k)->InheritsFrom(
"TH1"))col++;
199 for(
int i=0 ; i<
fNC ; i++)
203 TPad *pad = (TPad*)c->cd(HistPosition.
PadNmbr);
207 TPaveText *p = (TPaveText*)pad->GetListOfPrimitives()->FindObject(
"InfoPad");
209 h = ((TH1*)ListOfHists->At(fNSg+i));
210 h->GetXaxis()->SetLabelSize(0.07);
211 h->GetYaxis()->SetLabelSize(0.07);
214 for(
int k=0 ; k<pad->GetListOfPrimitives()->GetSize() ; k++)
216 if(pad->GetListOfPrimitives()->At(k)->InheritsFrom(
"TH1"))col++;
229 if(!opt.Contains(
"same"))
vector< PadPos > fHistPositionList
void FitSelected(Option_t *FitType="CBDS", bool all=false)
std::vector< double > GetMean()
bool fDefinePersoBackground
TList * fListOfLibrairies
void FitAll(Option_t *FitType="CBDS")
LoupOnPad, a class to Loupe on a Pad in a Canvas with many pads in it.
virtual void SetLoupe(bool loupeon=true)
void SetPersoBackground(int NumberIterations=100, int Direction=TSpectrum::kBackDecreasingWindow, int FilterOrder=TSpectrum::kBackOrder8, bool Smoothing=true, int smoothingWindow=TSpectrum::kBackSmoothing3, bool Compton=false)
TCanvas * BuildSegmentedCanvas(TString CanvasName, TString CanvasTitle)
void SetPersoBackground(int NumberIterations=100, int Direction=TSpectrum::kBackDecreasingWindow, int FilterOrder=TSpectrum::kBackOrder8, bool Smoothing=true, int smoothingWindow=TSpectrum::kBackSmoothing3, bool Compton=false)
BaselineWatcher(const char *name, const char *title)
void ShowBaselinesMap(int LibraryNumber=0, Option_t *option="")
void GetCurrentHistogram()
std::vector< double > GetFWHM()
ADF::LogMessage & endl(ADF::LogMessage &log)
virtual void Exec(Option_t *option)