FairRoot/PandaRoot
Functions
OmegaQuadrupoleFourEnergiesCombination.C File Reference

Go to the source code of this file.

Functions

TString CompleteFilename (TString mu, TString Q, TString Psf)
 
Double_t GetWidthkeV (TF1 *func, Double_t Whichwidth=0.5)
 
Double_t QuadGausPlusStep (Double_t *x, Double_t *par)
 
int OmegaQuadrupoleFourEnergiesCombination (TString mu="-2.5", TString Q="-2.8", TString Psf="1", TString Filename1="/data/work/kpha1/steinen/Gamma/Ana/CombinedData/Combined_Ana_Geo43_E0.5189MeV_Evts2860000_FileEvts11440_Gen1_ST12_mu-2.5,Q-2.8_OQP_Psf1.root", TString Filename2="/data/work/kpha1/steinen/Gamma/Ana/CombinedData/Combined_Ana_Geo43_E0.5198MeV_Evts2580000_FileEvts10320_Gen1_ST12_mu-2.5,Q-2.8_OQP_Psf1.root", TString Filename3="/data/work/kpha1/steinen/Gamma/Ana/CombinedData/Combined_Ana_Geo43_E0.5208MeV_Evts2330000_FileEvts9320_Gen1_ST12_mu-2.5,Q-2.8_OQP_Psf1.root", TString Filename4="/data/work/kpha1/steinen/Gamma/Ana/CombinedData/Combined_Ana_Geo43_E0.5215MeV_Evts2110000_FileEvts8440_Gen1_ST12_mu-2.5,Q-2.8_OQP_Psf1.root")
 

Function Documentation

TString CompleteFilename ( TString  mu,
TString  Q,
TString  Psf 
)

Definition at line 1 of file OmegaQuadrupoleFourEnergiesCombination.C.

References TString.

Referenced by AnalyseThetaRadiusCorrelation(), GammaSpectraAnalysis_CableTest(), GammaSpectraAnalysis_NoH(), GammaSpectraAnalysis_NoH_Split(), and GammaSpectraAnalysis_NoH_Task().

5 {
6  TString FileEnd = "mu"+mu+",Q"+Q+"_OQP_Psf"+Psf+".root";
7  return FileEnd;
8 
9 }
Double_t GetWidthkeV ( TF1 *  func,
Double_t  Whichwidth = 0.5 
)

Definition at line 11 of file OmegaQuadrupoleFourEnergiesCombination.C.

References Double_t, and CAMath::Max().

Referenced by OmegaQuadrupoleFourEnergiesCombination().

12 {
13  Double_t Max = func->GetMaximum();
14  //cout << "max"<<Max<<endl;
15  //cout << "Xmax"<<func->GetMaximumX()<<endl;
16 
17  Double_t XMin = func->GetX(Max*Whichwidth,func->GetMaximumX()-0.20,func->GetMaximumX());
18  Double_t XMax = func->GetX(Max*Whichwidth,func->GetMaximumX(),func->GetMaximumX()+0.20);
19 
20  return (XMax-XMin)*1000;
21 }
TF1 * func
Double_t
static T Max(const T &x, const T &y)
Definition: PndCAMath.h:36
int OmegaQuadrupoleFourEnergiesCombination ( TString  mu = "-2.5",
TString  Q = "-2.8",
TString  Psf = "1",
TString  Filename1 = "/data/work/kpha1/steinen/Gamma/Ana/CombinedData/Combined_Ana_Geo43_E0.5189MeV_Evts2860000_FileEvts11440_Gen1_ST12_mu-2.5,Q-2.8_OQP_Psf1.root",
TString  Filename2 = "/data/work/kpha1/steinen/Gamma/Ana/CombinedData/Combined_Ana_Geo43_E0.5198MeV_Evts2580000_FileEvts10320_Gen1_ST12_mu-2.5,Q-2.8_OQP_Psf1.root",
TString  Filename3 = "/data/work/kpha1/steinen/Gamma/Ana/CombinedData/Combined_Ana_Geo43_E0.5208MeV_Evts2330000_FileEvts9320_Gen1_ST12_mu-2.5,Q-2.8_OQP_Psf1.root",
TString  Filename4 = "/data/work/kpha1/steinen/Gamma/Ana/CombinedData/Combined_Ana_Geo43_E0.5215MeV_Evts2110000_FileEvts8440_Gen1_ST12_mu-2.5,Q-2.8_OQP_Psf1.root" 
)

Definition at line 39 of file OmegaQuadrupoleFourEnergiesCombination.C.

References Double_t, GetWidthkeV(), i, out, Outfile(), outfile, QuadGausPlusStep(), sqrt(), and TString.

48 {
49 // TString Filename1 ="Combined_Ana_Geo43_E0.5*MeV_Evts2860000_FileEvts11440_Gen1_ST12_"+CompleteFilename(mu,Q,Psf);
50 // TString Filename2 ="Combined_Ana_Geo43_E0.5*MeV_Evts2580000_FileEvts10320_Gen1_ST12_"+CompleteFilename(mu,Q,Psf);
51 // TString Filename3 ="Combined_Ana_Geo43_E0.5*MeV_Evts2330000_FileEvts9320_Gen1_ST12_"+CompleteFilename(mu,Q,Psf);
52 // TString Filename4 ="Combined_Ana_Geo43_E0.5*MeV_Evts2110000_FileEvts8440_Gen1_ST12_"+CompleteFilename(mu,Q,Psf);
53 
54 
55  andi::setCustomStyle();
56 
57  TString Path = "/data/work/kpha1/steinen/Gamma/Ana/CombinedData/";
58  TString Filenames[4];
59 
60  Filenames[0]=Filename1;
61  Filenames[1]=Filename2;
62  Filenames[2]=Filename3;
63  Filenames[3]=Filename4;
64 
65  cout<< Filenames[0].Data()<<endl;
66  TFile *InputFiles[4];
67  TFile *OutputFile;
68  TH1D *hAddUp;// = new TH1D("hGammaSpectrumCombined","Combined Gamma spectrum; Energy [MeV];Counts [a.u.]",7000,1,0.7)
69  TH1D *hTemporary[4];
70  TF1 *fGausFit[4];
71  //TF1 *fGausFitCombined = new TF1("fGausFitCombined","gaus(0)+gaus(3)+gaus(6)+gaus(9)+pol2(12)",0.515,0.525);
72  TF1 *fGausFitCombined = new TF1("fGausFitCombined",QuadGausPlusStep,0.515,0.525,13);
73  TString Fitname;
74  TCanvas *canCombo= new TCanvas("cCombo","cCombo",800,600);
75  TCanvas *canAdd= new TCanvas("cAdd","cAdd",800,600);
76  TCanvas *can[4];
77  can[0]=new TCanvas("c0","c0",800,600);
78  can[1]=new TCanvas("c1","c1",800,600);
79  can[2]=new TCanvas("c2","c2",800,600);
80  can[3]=new TCanvas("c3","c3",800,600);
81  for (int i = 0; i<4; i++)
82  {
83  InputFiles[i]= new TFile(Filenames[i].Data());
84  InputFiles[i]->GetObject("GamEnergy;1",hTemporary[i]);
85  hTemporary[i]->SetDirectory(0);
86  InputFiles[i]->Close();
87  canCombo->cd();
88 
89  hTemporary[i]->Draw();
90  can[i]->cd();
91  Fitname.Form("fGausFit%d",i);
92  fGausFit[i]= new TF1(Fitname.Data(),"gaus",0.515,0.525);
93  hTemporary[i]->Fit(Fitname.Data(),"r");
94  for (int j=0;j<3;j++)
95  fGausFitCombined->SetParameter(3*i+j,fGausFit[i]->GetParameter(j));
96  fGausFitCombined->FixParameter(1+3*i,fGausFitCombined->GetParameter(1+3*i));
97  hTemporary[i]->Draw("");
98  }
99  hAddUp = new TH1D("hAddUp","4 lines added up;Energy [MeV];Counts [a.u.]",6000,0,0.6);
100  for(int i = 0; i<4;i++)
101  {
102  hAddUp->Add(hTemporary[i],1);
103  }
104  canAdd->cd();
105  fGausFitCombined->SetLineColor(kRed);
106  hAddUp->Fit("fGausFitCombined","r");
107  //hAddUp->Draw();
108 
109  //fGausFitCombined->Draw("same");
110 
111  for(int i = 0; i<4;i++)
112  {
113  fGausFit[i]->Draw("same");
114  cout <<"gaus " << i << endl;
115  //cout << fGausFit[i]->GetParameter(0) << "\t" << fGausFitCombined->GetParameter(0+i*3) << endl;
116  //cout << fGausFit[i]->GetParameter(1) << "\t" << fGausFitCombined->GetParameter(1+i*3) << endl;
117  //cout << fGausFit[i]->GetParameter(2) << "\t" << fGausFitCombined->GetParameter(2+i*3) << endl;
118  }
119 
120  Double_t Mean =fGausFitCombined->Mean(0.516,0.524);
121  Double_t StandardDev =sqrt(fGausFitCombined->Variance(0.516,0.524));
122  //Double_t Dip = fGausFitCombined->GetMinimumX(fGausFit[1]->GetParameter(1),fGausFit[2]->GetParameter(1)); // the dip does not work for mu = -2.0, there is simply no dip!!!
123  Double_t Skewness = fGausFitCombined->CentralMoment(3,0.516,0.524);
124  Double_t Kurtosis = fGausFitCombined->CentralMoment(4,0.516,0.524);
125  Double_t MaxX = fGausFitCombined->GetMaximumX(0.516,0.524);
126  cout <<GetWidthkeV(fGausFitCombined,0.5)<<endl;
127  cout <<GetWidthkeV(fGausFitCombined,0.3)<<endl;
128  cout <<GetWidthkeV(fGausFitCombined,0.1)<<endl;
129  cout <<"Variance"<<StandardDev<<endl;
130  cout <<"Mean"<<Mean<<endl;
131  //cout << "Dip"<< Dip<<endl;
132  cout <<"Skewness"<<Skewness<<endl;
133  cout <<"Kurtosis"<<Kurtosis<<endl;
134 
135  //cout << "mu" << "\t"<<"Q"<<"\t"<<"Psf"<< "\t"<< "Mean" << "\t" << "StandardDev" << "\t" << "Dip" << endl;
136  //cout << mu.Data() << "\t"<<Q.Data()<<"\t"<<Psf.Data()<< "\t"<< Mean << "\t" << StandardDev << "\t" << Dip << endl;
137 
138  TString Outfile = Path + "OmegaResults/OmegaResults.txt";
139  ifstream outfile (Outfile.Data()); // check if file exist, if not, header line will be written later on
140  bool FileExists =outfile.good();
141  outfile.close();
142  ofstream outfile2 (Outfile.Data(),std::ofstream::app|std::ofstream::out);
143  if (!FileExists)
144  outfile2 << "mu" << "\t"<<"Q"<<"\t"<<"Psf"<< "\t"<< "MeanPos" << "\t" << "StandardDev" << "\t" << "Skewness"<< "\t" << "Kurtosis" << "\t" << "MaximumX" << endl;
145  outfile2<< mu.Data() << "\t"<<Q.Data()<<"\t"<<Psf.Data()<< "\t"<< Mean << "\t" << StandardDev << "\t" << Skewness <<"\t" << Kurtosis<< "\t" << MaxX << endl;
146  outfile2.close();
147 
148  TString RootOutName = Path + "/OmegaResults/mu"+mu+"_Q"+Q +"__Psf"+Psf+".root" ;
149  TFile *RootOutfile = new TFile(RootOutName.Data(),"RECREATE");
150  hAddUp->Write();
151  fGausFitCombined->Write();
152  canAdd->Write();
153  for(int i = 0;i<4; i++)
154  {
155  fGausFit[i]->Write();
156  hTemporary[i]->Write();
157  can[i]->Write();
158  }
159  RootOutfile->Close();
160  return 0;
161 }
Int_t i
Definition: run_full.C:25
friend F32vec4 sqrt(const F32vec4 &a)
Definition: P4_F32vec4.h:29
std::ofstream Outfile("../data/Lars/0999_1001_85.hit", ios_base::app)
Double_t
TFile * out
Definition: reco_muo.C:20
Double_t GetWidthkeV(TF1 *func, Double_t Whichwidth=0.5)
TString outfile
Double_t QuadGausPlusStep(Double_t *x, Double_t *par)
Double_t QuadGausPlusStep ( Double_t x,
Double_t par 
)

Definition at line 26 of file OmegaQuadrupoleFourEnergiesCombination.C.

References Double_t, and CAMath::Sqrt().

Referenced by OmegaQuadrupoleFourEnergiesCombination().

27 {
28 
29  Double_t Gausian1 = par[0] * TMath::Exp(- 0.5*pow((x[0] - par[1])/par[2],2)); // par[0]: amplitude, par[1]: x[0]0; par[2]: sigma
30  Double_t Gausian2 = par[3] * TMath::Exp(- 0.5*pow((x[0] - par[4])/par[5],2)); // par[0]: amplitude, par[1]: x[0]0; par[2]: sigma
31  Double_t Gausian3 = par[6] * TMath::Exp(- 0.5*pow((x[0] - par[7])/par[8],2)); // par[0]: amplitude, par[1]: x[0]0; par[2]: sigma
32  Double_t Gausian4 = par[9] * TMath::Exp(- 0.5*pow((x[0] - par[10])/par[11],2)); // par[0]: amplitude, par[1]: x[0]0; par[2]: sigma
33  Double_t SmoothedStep = par[12] * TMath::Erfc( (x[0] - par[1]) /(TMath::Sqrt(2)*par[2])); // par[3]: amplitude
34 
35  return Gausian1+Gausian2+Gausian3+Gausian4+SmoothedStep ;
36 }
static T Sqrt(const T &x)
Definition: PndCAMath.h:37
Double_t par[3]
Double_t
Double_t x