From b8e5739068d6895785ed5e2f724634c0b61baf0e Mon Sep 17 00:00:00 2001 From: dberzano Date: Wed, 11 Feb 2015 22:07:11 +0100 Subject: [PATCH] doxy: converted remaining macro images in TPCbase --- TPC/TPCbase/AliTPCCalibViewer.cxx | 244 +++++++----------- TPC/TPCbase/AliTPCSpaceCharge3D.cxx | 28 +- .../imgdoc/AliTPCCalibViewer_cxx_0eb126d.C | 30 +++ .../imgdoc/AliTPCCalibViewer_cxx_0eb126d.png | Bin 0 -> 8564 bytes .../imgdoc/AliTPCCalibViewer_cxx_f68daaf.C | 24 ++ .../imgdoc/AliTPCCalibViewer_cxx_f68daaf.png | Bin 0 -> 8324 bytes .../imgdoc/AliTPCCorrection_cxx_e4df765.C | 2 +- .../imgdoc/AliTPCSpaceCharge3D_cxx_2829f39.C | 11 + .../AliTPCSpaceCharge3D_cxx_2829f39.png | Bin 0 -> 15888 bytes 9 files changed, 160 insertions(+), 179 deletions(-) create mode 100644 TPC/TPCbase/imgdoc/AliTPCCalibViewer_cxx_0eb126d.C create mode 100644 TPC/TPCbase/imgdoc/AliTPCCalibViewer_cxx_0eb126d.png create mode 100644 TPC/TPCbase/imgdoc/AliTPCCalibViewer_cxx_f68daaf.C create mode 100644 TPC/TPCbase/imgdoc/AliTPCCalibViewer_cxx_f68daaf.png create mode 100644 TPC/TPCbase/imgdoc/AliTPCSpaceCharge3D_cxx_2829f39.C create mode 100644 TPC/TPCbase/imgdoc/AliTPCSpaceCharge3D_cxx_2829f39.png diff --git a/TPC/TPCbase/AliTPCCalibViewer.cxx b/TPC/TPCbase/AliTPCCalibViewer.cxx index 279f122b536..be3bf6d552b 100644 --- a/TPC/TPCbase/AliTPCCalibViewer.cxx +++ b/TPC/TPCbase/AliTPCCalibViewer.cxx @@ -15,21 +15,21 @@ /// \class AliTPCCalibViewer +/// \brief Class for viewing/visualizing TPC calibration data /// -/// Class for viewing/visualizing TPC calibration data -/// base on TTree functionality for visualization +/// base on TTree functionality for visualization /// -/// Create a list of AliTPCCalPads, arrange them in an TObjArray. -/// Pass this TObjArray to MakeTree and create the calibration Tree -/// While craating this tree some statistical information are calculated -/// Open the viewer with this Tree: AliTPCCalibViewer v("CalibTree.root") -/// Have fun! -/// EasyDraw("CETmean~-CETmean_mean", "A", "(CETmean~-CETmean_mean)>0") +/// Create a list of AliTPCCalPads, arrange them in an TObjArray. +/// Pass this TObjArray to MakeTree and create the calibration Tree +/// While craating this tree some statistical information are calculated +/// Open the viewer with this Tree: AliTPCCalibViewer v("CalibTree.root") +/// Have fun! +/// EasyDraw("CETmean~-CETmean_mean", "A", "(CETmean~-CETmean_mean)>0") /// -/// If you like to click, we recommand you the -/// AliTPCCalibViewerGUI +/// If you like to click, we recommand you the +/// AliTPCCalibViewerGUI /// -/// THE DOCUMENTATION IS STILL NOT COMPLETED !!!! +/// THE DOCUMENTATION IS STILL NOT COMPLETED !!!! /// /// ROOT includes @@ -309,14 +309,14 @@ const char* AliTPCCalibViewer::AddAbbreviations(const Char_t *c, Bool_t printDra //_____________________________________________________________________________ Int_t AliTPCCalibViewer::EasyDraw(const char* drawCommand, const char* sector, const char* cuts, const char* drawOptions, Bool_t writeDrawCommand) const { - /// easy drawing of data, use '~' for abbreviation of '.fElements' - /// example: EasyDraw("CETmean~-CETmean_mean", "A", "(CETmean~-CETmean_mean)>0") - /// sector: sector-number - only the specified sector will be drwawn - /// 'A'/'C' or 'a'/'c' - side A/C will be drawn - /// 'ALL' - whole TPC will be drawn, projected on one side - /// cuts: specifies cuts - /// drawOptions: draw options like 'same' - /// writeDrawCommand: write the command, that is passed to TTree::Draw + /// easy drawing of data, use '~' for abbreviation of '.fElements' + /// example: EasyDraw("CETmean~-CETmean_mean", "A", "(CETmean~-CETmean_mean)>0") + /// sector: sector-number - only the specified sector will be drwawn + /// 'A'/'C' or 'a'/'c' - side A/C will be drawn + /// 'ALL' - whole TPC will be drawn, projected on one side + /// cuts: specifies cuts + /// drawOptions: draw options like 'same' + /// writeDrawCommand: write the command, that is passed to TTree::Draw TString drawStr(drawCommand); TString sectorStr(sector); @@ -401,12 +401,12 @@ Int_t AliTPCCalibViewer::EasyDraw(const char* drawCommand, const char* sector, c Int_t AliTPCCalibViewer::EasyDraw(const char* drawCommand, Int_t sector, const char* cuts, const char* drawOptions, Bool_t writeDrawCommand) const { - /// easy drawing of data, use '~' for abbreviation of '.fElements' - /// example: EasyDraw("CETmean~-CETmean_mean", 34, "(CETmean~-CETmean_mean)>0") - /// sector: sector-number - only the specified sector will be drwawn - /// cuts: specifies cuts - /// drawOptions: draw options like 'same' - /// writeDrawCommand: write the command, that is passed to TTree::Draw + /// easy drawing of data, use '~' for abbreviation of '.fElements' + /// example: EasyDraw("CETmean~-CETmean_mean", 34, "(CETmean~-CETmean_mean)>0") + /// sector: sector-number - only the specified sector will be drwawn + /// cuts: specifies cuts + /// drawOptions: draw options like 'same' + /// writeDrawCommand: write the command, that is passed to TTree::Draw if (sector >= 0 && sector < 72) { return EasyDraw(drawCommand, Form("%i", sector), cuts, drawOptions, writeDrawCommand); @@ -418,14 +418,14 @@ Int_t AliTPCCalibViewer::EasyDraw(const char* drawCommand, Int_t sector, const c //_____________________________________________________________________________ Int_t AliTPCCalibViewer::EasyDraw1D(const char* drawCommand, const char* sector, const char* cuts, const char* drawOptions, Bool_t writeDrawCommand) const { - /// easy drawing of data, use '~' for abbreviation of '.fElements' - /// example: EasyDraw("CETmean~-CETmean_mean", "A", "(CETmean~-CETmean_mean)>0") - /// sector: sector-number - the specified sector will be drwawn - /// 'A'/'C' or 'a'/'c' - side A/C will be drawn - /// 'ALL' - whole TPC will be drawn, projected on one side - /// cuts: specifies cuts - /// drawOptions: draw options like 'same' - /// writeDrawCommand: write the command, that is passed to TTree::Draw + /// easy drawing of data, use '~' for abbreviation of '.fElements' + /// example: EasyDraw("CETmean~-CETmean_mean", "A", "(CETmean~-CETmean_mean)>0") + /// sector: sector-number - the specified sector will be drwawn + /// 'A'/'C' or 'a'/'c' - side A/C will be drawn + /// 'ALL' - whole TPC will be drawn, projected on one side + /// cuts: specifies cuts + /// drawOptions: draw options like 'same' + /// writeDrawCommand: write the command, that is passed to TTree::Draw TString drawStr(drawCommand); TString sectorStr(sector); @@ -478,12 +478,12 @@ Int_t AliTPCCalibViewer::EasyDraw1D(const char* drawCommand, const char* sector, Int_t AliTPCCalibViewer::EasyDraw1D(const char* drawCommand, Int_t sector, const char* cuts, const char* drawOptions, Bool_t writeDrawCommand) const { - /// easy drawing of data, use '~' for abbreviation of '.fElements' - /// example: EasyDraw("CETmean~-CETmean_mean", 34, "(CETmean~-CETmean_mean)>0") - /// sector: sector-number - the specified sector will be drwawn - /// cuts: specifies cuts - /// drawOptions: draw options like 'same' - /// writeDrawCommand: write the command, that is passed to TTree::Draw + /// easy drawing of data, use '~' for abbreviation of '.fElements' + /// example: EasyDraw("CETmean~-CETmean_mean", 34, "(CETmean~-CETmean_mean)>0") + /// sector: sector-number - the specified sector will be drwawn + /// cuts: specifies cuts + /// drawOptions: draw options like 'same' + /// writeDrawCommand: write the command, that is passed to TTree::Draw if (sector >= 0 && sector < 72) { return EasyDraw1D(drawCommand, Form("%i",sector), cuts, drawOptions, writeDrawCommand); @@ -872,11 +872,11 @@ Int_t AliTPCCalibViewer::Integrate(const char* drawCommand, Int_t sector, /// if "igma == 0" and "sigmaMax == 0" the whole histogram is integrated /// "sigmaStep": the binsize of the generated histogram, -1 means, that the maximal reasonable stepsize is used /// The actual work is done on the array. + /// + /// \f[ + /// f(x, \mu, \sigma) \Rightarrow S(t, \mu, \sigma) = \int_{-\infty}^{\mu + t \sigma} f(x, \mu, \sigma) dx / \int_{-\infty}^{+\infty} f(x, \mu, \sigma) dx + /// \f] - /* Begin_Latex - f(x, #mu, #sigma) #Rightarrow S(t, #mu, #sigma) = #int_{-#infty}^{#mu + t #sigma} f(x, #mu, #sigma) dx / #int_{-#infty}^{+#infty} f(x, #mu, #sigma) dx - End_Latex - */ if (sector >= 0 && sector < 72) { return Integrate(drawCommand, Form("%i", sector), cuts, sigmaMax, plotMean, plotMedian, plotLTM, sigmas, sigmaStep); } @@ -893,11 +893,11 @@ Int_t AliTPCCalibViewer::IntegrateOld(const char* drawCommand, const char* secto /// if "igma == 0" and "sigmaMax == 0" the whole histogram is integrated /// "sigmaStep": the binsize of the generated histogram, -1 means, that the maximal reasonable stepsize is used /// The actual work is done on the array. + /// + /// \f[ + /// f(x, \mu, \sigma) \Rightarrow S(t, \mu, \sigma) = \int_{-\infty}^{\mu + t \sigma} f(x, \mu, \sigma) dx / \int_{-\infty}^{+\infty} f(x, \mu, \sigma) dx + /// \f] - /* Begin_Latex - f(x, #mu, #sigma) #Rightarrow S(t, #mu, #sigma) = #int_{-#infty}^{#mu + t #sigma} f(x, #mu, #sigma) dx / #int_{-#infty}^{+#infty} f(x, #mu, #sigma) dx - End_Latex - */ Double_t ltmFraction = 0.8; @@ -978,11 +978,10 @@ Int_t AliTPCCalibViewer::Integrate(const char* drawCommand, const char* sector, /// if "igma == 0" and "sigmaMax == 0" the whole histogram is integrated /// "sigmaStep": the binsize of the generated histogram, -1 means, that the maximal reasonable stepsize is used /// The actual work is done on the array. - - /* Begin_Latex - f(x, #mu, #sigma) #Rightarrow S(t, #mu, #sigma) = #int_{-#infty}^{#mu + t #sigma} f(x, #mu, #sigma) dx / #int_{-#infty}^{+#infty} f(x, #mu, #sigma) dx - End_Latex - */ + /// + /// \f[ + /// f(x, \mu, \sigma) \Rightarrow S(t, \mu, \sigma) = \int_{-\infty}^{\mu + t \sigma} f(x, \mu, \sigma) dx / \int_{-\infty}^{+\infty} f(x, \mu, \sigma) dx + /// \f] Double_t ltmFraction = 0.8; @@ -1190,11 +1189,10 @@ Int_t AliTPCCalibViewer::GetBin(Float_t value, Int_t nbins, Double_t binLow, Dou /// Returns the 'bin' for 'value' /// The interval between 'binLow' and 'binUp' is divided into 'nbins' equidistant bins /// avoid index out of bounds error: 'if (bin < binLow) bin = binLow' and vice versa - - /* Begin_Latex - GetBin(value) = #frac{nbins - 1}{binUp - binLow} #upoint (value - binLow) +1 - End_Latex - */ + /// + /// \f[ + /// GetBin(value) = \frac{nbins - 1}{binUp - binLow} \upoint (value - binLow) +1 + /// \f] Int_t bin = TMath::Nint( (Float_t)(value - binLow) / (Float_t)(binUp - binLow) * (nbins-1) ) + 1; // avoid index out of bounds: @@ -1206,7 +1204,7 @@ Int_t AliTPCCalibViewer::GetBin(Float_t value, Int_t nbins, Double_t binLow, Dou Double_t AliTPCCalibViewer::GetLTM(Int_t n, const Double_t *const array, Double_t *const sigma, Double_t fraction){ - /// returns the LTM and sigma + /// returns the LTM and sigma Double_t *ddata = new Double_t[n]; Double_t mean = 0, lsigma = 0; @@ -1231,45 +1229,13 @@ TH1F* AliTPCCalibViewer::SigmaCut(TH1F *const histogram, Float_t mean, Float_t s /// sigmaStep: the binsize of the generated histogram, -1 means, that the maximal reasonable stepsize is used /// pm: Decide weather \f$t > 0\f$ (first case) or \f$t\f$ arbitrary (secound case) /// The actual work is done on the array. - - /* Begin_Latex - f(x, #mu, #sigma) #Rightarrow S(t, #mu, #sigma) = (#int_{#mu}^{#mu + t #sigma} f(x, #mu, #sigma) dx + #int_{#mu}^{#mu - t #sigma} f(x, #mu, #sigma) dx) / (#int_{-#infty}^{+#infty} f(x, #mu, #sigma) dx), for t > 0 - or - f(x, #mu, #sigma) #Rightarrow S(t, #mu, #sigma) = #int_{#mu}^{#mu + t #sigma} f(x, #mu, #sigma) dx / #int_{-#infty}^{+#infty} f(x, #mu, #sigma) dx - End_Latex - Begin_Macro(source) - { - Float_t mean = 0; - Float_t sigma = 1.5; - Float_t sigmaMax = 4; - gROOT->SetStyle("Plain"); - TH1F *distribution = new TH1F("Distrib1", "Distribution f(x, #mu, #sigma)", 1000,-5,5); - TRandom rand(23); - for (Int_t i = 0; i <50000;i++) distribution->Fill(rand.Gaus(mean, sigma)); - Float_t *ar = distribution->GetArray(); - - TCanvas* macro_example_canvas = new TCanvas("cAliTPCCalibViewer1", "", 350, 350); - macro_example_canvas->Divide(0,3); - TVirtualPad *pad1 = macro_example_canvas->cd(1); - pad1->SetGridy(); - pad1->SetGridx(); - distribution->Draw(); - TVirtualPad *pad2 = macro_example_canvas->cd(2); - pad2->SetGridy(); - pad2->SetGridx(); - - TH1F *shist = AliTPCCalibViewer::SigmaCut(distribution, mean, sigma, sigmaMax); - shist->SetNameTitle("Cumulative","Cumulative S(t, #mu, #sigma)"); - shist->Draw(); - TVirtualPad *pad3 = macro_example_canvas->cd(3); - pad3->SetGridy(); - pad3->SetGridx(); - TH1F *shistPM = AliTPCCalibViewer::SigmaCut(distribution, mean, sigma, sigmaMax, -1, kTRUE); - shistPM->Draw(); - return macro_example_canvas; - } - End_Macro - */ + /// + /// \f[ + /// f(x, \mu, \sigma) \Rightarrow S(t, \mu, \sigma) = (\int_{\mu}^{\mu + t \sigma} f(x, \mu, \sigma) dx + \int_{\mu}^{\mu - t \sigma} f(x, \mu, \sigma) dx) / (\int_{-\infty}^{+\infty} f(x, \mu, \sigma) dx), for t > 0 + /// or + /// f(x, \mu, \sigma) \Rightarrow S(t, \mu, \sigma) = \int_{\mu}^{\mu + t \sigma} f(x, \mu, \sigma) dx / \int_{-\infty}^{+\infty} f(x, \mu, \sigma) dx + /// \f] + /// ![Picture from ROOT macro](AliTPCCalibViewer_cxx_0eb126d.png) Float_t *array = histogram->GetArray(); Int_t nbins = histogram->GetXaxis()->GetNbins(); @@ -1368,37 +1334,10 @@ TH1F* AliTPCCalibViewer::Integrate(TH1F *const histogram, Float_t mean, Float_t /// if "igma == 0" and "sigmaMax == 0" the whole histogram is integrated /// "sigmaStep": the binsize of the generated histogram, -1 means, that the maximal reasonable stepsize is used /// The actual work is done on the array. - - /* Begin_Latex - f(x, #mu, #sigma) #Rightarrow S(t, #mu, #sigma) = #int_{-#infty}^{#mu + t #sigma} f(x, #mu, #sigma) dx / #int_{-#infty}^{+#infty} f(x, #mu, #sigma) dx - End_Latex - Begin_Macro(source) - { - Float_t mean = 0; - Float_t sigma = 1.5; - Float_t sigmaMax = 4; - gROOT->SetStyle("Plain"); - TH1F *distribution = new TH1F("Distrib2", "Distribution f(x, #mu, #sigma)", 1000,-5,5); - TRandom rand(23); - for (Int_t i = 0; i <50000;i++) distribution->Fill(rand.Gaus(mean, sigma)); - Float_t *ar = distribution->GetArray(); - - TCanvas* macro_example_canvas = new TCanvas("cAliTPCCalibViewer2", "", 350, 350); - macro_example_canvas->Divide(0,2); - TVirtualPad *pad1 = macro_example_canvas->cd(1); - pad1->SetGridy(); - pad1->SetGridx(); - distribution->Draw(); - TVirtualPad *pad2 = macro_example_canvas->cd(2); - pad2->SetGridy(); - pad2->SetGridx(); - TH1F *shist = AliTPCCalibViewer::Integrate(distribution, mean, sigma, sigmaMax); - shist->SetNameTitle("Cumulative","Cumulative S(t, #mu, #sigma)"); - shist->Draw(); - - } - End_Macro - */ + /// \f[ + /// f(x, \mu, \sigma) \Rightarrow S(t, \mu, \sigma) = \int_{-\infty}^{\mu + t \sigma} f(x, \mu, \sigma) dx / \int_{-\infty}^{+\infty} f(x, \mu, \sigma) dx + /// \f] + /// ![Picture from ROOT macro](AliTPCCalibViewer_cxx_f68daaf.png) Float_t *array = histogram->GetArray(); @@ -1479,10 +1418,10 @@ TH1F* AliTPCCalibViewer::Integrate(Int_t n, const Float_t *const array, Int_t nb //_____________________________________________________________________________ AliTPCCalPad* AliTPCCalibViewer::GetCalPadOld(const char* desiredData, const char* cuts, const char* calPadName) const { - /// creates a AliTPCCalPad out of the 'desiredData' - /// the functionality of EasyDraw1D is used - /// calPadName specifies the name of the created AliTPCCalPad - /// - this takes a while - + /// creates a AliTPCCalPad out of the 'desiredData' + /// the functionality of EasyDraw1D is used + /// calPadName specifies the name of the created AliTPCCalPad + /// - this takes a while - TString drawStr(desiredData); drawStr.Append(":channel"); @@ -1504,10 +1443,10 @@ AliTPCCalPad* AliTPCCalibViewer::GetCalPadOld(const char* desiredData, const cha //_____________________________________________________________________________ AliTPCCalPad* AliTPCCalibViewer::GetCalPad(const char* desiredData, const char* cuts, const char* calPadName) const { - /// creates a AliTPCCalPad out of the 'desiredData' - /// the functionality of EasyDraw1D is used - /// calPadName specifies the name of the created AliTPCCalPad - /// - this takes a while - + /// creates a AliTPCCalPad out of the 'desiredData' + /// the functionality of EasyDraw1D is used + /// calPadName specifies the name of the created AliTPCCalPad + /// - this takes a while - TString drawStr(desiredData); drawStr.Append(":channel.fElements:sector"); @@ -1536,9 +1475,9 @@ AliTPCCalPad* AliTPCCalibViewer::GetCalPad(const char* desiredData, const char* //_____________________________________________________________________________ AliTPCCalROC* AliTPCCalibViewer::GetCalROC(const char* desiredData, UInt_t sector, const char* cuts) const { - /// creates a AliTPCCalROC out of the desiredData - /// the functionality of EasyDraw1D is used - /// sector specifies the sector of the created AliTPCCalROC + /// creates a AliTPCCalROC out of the desiredData + /// the functionality of EasyDraw1D is used + /// sector specifies the sector of the created AliTPCCalROC TString drawStr(desiredData); drawStr.Append(":channel"); @@ -1553,8 +1492,8 @@ AliTPCCalROC* AliTPCCalibViewer::GetCalROC(const char* desiredData, UInt_t secto TObjArray* AliTPCCalibViewer::GetListOfVariables(Bool_t printList) { - /// scan the tree - produces a list of available variables in the tree - /// printList: print the list to the screen, after the scan is done + /// scan the tree - produces a list of available variables in the tree + /// printList: print the list to the screen, after the scan is done TObjArray* arr = new TObjArray(); TObjString* str = 0; @@ -1625,8 +1564,8 @@ TObjArray* AliTPCCalibViewer::GetListOfVariables(Bool_t printList) { TObjArray* AliTPCCalibViewer::GetListOfNormalizationVariables(Bool_t printList) const{ - /// produces a list of available variables for normalization in the tree - /// printList: print the list to the screen, after the scan is done + /// produces a list of available variables for normalization in the tree + /// printList: print the list to the screen, after the scan is done TObjArray* arr = new TObjArray(); arr->Add(new TObjString("_Mean")); @@ -1657,8 +1596,8 @@ TObjArray* AliTPCCalibViewer::GetListOfNormalizationVariables(Bool_t printList) TFriendElement* AliTPCCalibViewer::AddReferenceTree(const char* filename, const char* treename, const char* refname){ - /// add a reference tree to the current tree - /// by default the treename is 'calPads' and the reference treename is 'R' + /// add a reference tree to the current tree + /// by default the treename is 'calPads' and the reference treename is 'R' TFile *file = new TFile(filename); fListOfObjectsToBeDeleted->Add(file); @@ -1668,8 +1607,8 @@ TFriendElement* AliTPCCalibViewer::AddReferenceTree(const char* filename, const TObjArray* AliTPCCalibViewer::GetArrayOfCalPads(){ - /// Returns a TObjArray with all AliTPCCalPads that are stored in the tree - /// - this takes a while - + /// Returns a TObjArray with all AliTPCCalPads that are stored in the tree + /// - this takes a while - TObjArray *listOfCalPads = GetListOfVariables(); TObjArray *calPadsArray = new TObjArray(); @@ -1766,10 +1705,10 @@ TString* AliTPCCalibViewer::Fit(const char* drawCommand, const char* formula, co void AliTPCCalibViewer::MakeTreeWithObjects(const char *fileName, const TObjArray *const array, const char * mapFileName) { - /// Write tree with all available information - /// im mapFileName is speciefied, the Map information are also written to the tree - /// AliTPCCalPad-Objects are written directly to the tree, so that they can be accessd later on - /// (does not work!!!) + /// Write tree with all available information + /// im mapFileName is speciefied, the Map information are also written to the tree + /// AliTPCCalPad-Objects are written directly to the tree, so that they can be accessd later on + /// (does not work!!!) AliTPCROC* tpcROCinstance = AliTPCROC::Instance(); @@ -2346,6 +2285,3 @@ void AliTPCCalibViewer::CreateObjectList(const Char_t *filename, TObjArray *cali } delete arrFileLine; } - - - diff --git a/TPC/TPCbase/AliTPCSpaceCharge3D.cxx b/TPC/TPCbase/AliTPCSpaceCharge3D.cxx index 58d4b4de921..73f71ab1a22 100644 --- a/TPC/TPCbase/AliTPCSpaceCharge3D.cxx +++ b/TPC/TPCbase/AliTPCSpaceCharge3D.cxx @@ -41,30 +41,10 @@ /// SetInputSpaceCharge map. /// In case given map is used 2 2D maps are ignored and scaling functions $\rho(r,z) = (A-B\,z)/r^2$, /// will not work - - -// End_Html -// -// Begin_Macro(source) -// { -// gROOT->SetStyle("Plain"); gStyle->SetPalette(1); -// TCanvas *c2 = new TCanvas("cAliTPCSpaceCharge3D","cAliTPCSpaceCharge3D",500,400); -// AliTPCSpaceCharge3D sc; -// sc.WriteChargeDistributionToFile("SC_zr2_GGleaks.root"); -// sc.SetSCDataFileName("SC_zr2_GGleaks.root"); -// sc.SetOmegaTauT1T2(0,1,1); // B=0 -// sc.InitSpaceCharge3DDistortion(); -// sc.CreateHistoDRinXY(15,300,300)->Draw("colz"); -// return c2; -// } -// End_Macro -// -// Begin_Html -//

-// Date: 19/06/2010
-// Authors: Stefan Rossegger -// End_Html -// _________________________________________________________________ +/// ![Picture from ROOT macro](AliTPCSpaceCharge3D_cxx_2829f39.png) +/// +/// \author Stefan Rossegger +/// \date 19/06/2010 #include "AliMagF.h" diff --git a/TPC/TPCbase/imgdoc/AliTPCCalibViewer_cxx_0eb126d.C b/TPC/TPCbase/imgdoc/AliTPCCalibViewer_cxx_0eb126d.C new file mode 100644 index 00000000000..f155600725b --- /dev/null +++ b/TPC/TPCbase/imgdoc/AliTPCCalibViewer_cxx_0eb126d.C @@ -0,0 +1,30 @@ + { + Float_t mean = 0; + Float_t sigma = 1.5; + Float_t sigmaMax = 4; + gROOT->SetStyle("Plain"); + TH1F *distribution = new TH1F("Distrib1", "Distribution f(x, #mu, #sigma)", 1000,-5,5); + TRandom rand(23); + for (Int_t i = 0; i <50000;i++) distribution->Fill(rand.Gaus(mean, sigma)); + Float_t *ar = distribution->GetArray(); + + TCanvas* macro_example_canvas = new TCanvas("cAliTPCCalibViewer1", "", 350, 350); + macro_example_canvas->Divide(0,3); + TVirtualPad *pad1 = macro_example_canvas->cd(1); + pad1->SetGridy(); + pad1->SetGridx(); + distribution->Draw(); + TVirtualPad *pad2 = macro_example_canvas->cd(2); + pad2->SetGridy(); + pad2->SetGridx(); + + TH1F *shist = AliTPCCalibViewer::SigmaCut(distribution, mean, sigma, sigmaMax); + shist->SetNameTitle("Cumulative","Cumulative S(t, #mu, #sigma)"); + shist->Draw(); + TVirtualPad *pad3 = macro_example_canvas->cd(3); + pad3->SetGridy(); + pad3->SetGridx(); + TH1F *shistPM = AliTPCCalibViewer::SigmaCut(distribution, mean, sigma, sigmaMax, -1, kTRUE); + shistPM->Draw(); + return macro_example_canvas; + } diff --git a/TPC/TPCbase/imgdoc/AliTPCCalibViewer_cxx_0eb126d.png b/TPC/TPCbase/imgdoc/AliTPCCalibViewer_cxx_0eb126d.png new file mode 100644 index 0000000000000000000000000000000000000000..5818b315dc27fbae31dfcd77e178df7768622fac GIT binary patch literal 8564 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 literal 0 HcmV?d00001 diff --git a/TPC/TPCbase/imgdoc/AliTPCCalibViewer_cxx_f68daaf.C b/TPC/TPCbase/imgdoc/AliTPCCalibViewer_cxx_f68daaf.C new file mode 100644 index 00000000000..0df546f6ccb --- /dev/null +++ b/TPC/TPCbase/imgdoc/AliTPCCalibViewer_cxx_f68daaf.C @@ -0,0 +1,24 @@ + { + Float_t mean = 0; + Float_t sigma = 1.5; + Float_t sigmaMax = 4; + gROOT->SetStyle("Plain"); + TH1F *distribution = new TH1F("Distrib2", "Distribution f(x, #mu, #sigma)", 1000,-5,5); + TRandom rand(23); + for (Int_t i = 0; i <50000;i++) distribution->Fill(rand.Gaus(mean, sigma)); + Float_t *ar = distribution->GetArray(); + + TCanvas* macro_example_canvas = new TCanvas("cAliTPCCalibViewer2", "", 350, 350); + macro_example_canvas->Divide(0,2); + TVirtualPad *pad1 = macro_example_canvas->cd(1); + pad1->SetGridy(); + pad1->SetGridx(); + distribution->Draw(); + TVirtualPad *pad2 = macro_example_canvas->cd(2); + pad2->SetGridy(); + pad2->SetGridx(); + TH1F *shist = AliTPCCalibViewer::Integrate(distribution, mean, sigma, sigmaMax); + shist->SetNameTitle("Cumulative","Cumulative S(t, #mu, #sigma)"); + shist->Draw(); + + } diff --git a/TPC/TPCbase/imgdoc/AliTPCCalibViewer_cxx_f68daaf.png b/TPC/TPCbase/imgdoc/AliTPCCalibViewer_cxx_f68daaf.png new file mode 100644 index 0000000000000000000000000000000000000000..6141f6dab8cd61b1bf5a778936c947ee59b00f10 GIT binary patch literal 8324 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 literal 0 HcmV?d00001 diff --git a/TPC/TPCbase/imgdoc/AliTPCCorrection_cxx_e4df765.C b/TPC/TPCbase/imgdoc/AliTPCCorrection_cxx_e4df765.C index 581480bb1c5..1be429c0c18 100644 --- a/TPC/TPCbase/imgdoc/AliTPCCorrection_cxx_e4df765.C +++ b/TPC/TPCbase/imgdoc/AliTPCCorrection_cxx_e4df765.C @@ -2,7 +2,7 @@ gROOT->SetStyle("Plain"); gStyle->SetPalette(1); TCanvas *c2 = new TCanvas("cAliTPCCorrection","cAliTPCCorrection",700,1050); c2->Divide(2,3); AliTPCROCVoltError3D roc; // EXAMPLE PLOTS - SEE BELOW - roc.SetROCDataFileName("$ALICE_ROOT/TPC/Calib/maps/TPCROCdzSurvey.root"); + roc.SetROCDataFileName("$ALICE_ROOT/TPC/TPCcalib/maps/TPCROCdzSurvey.root"); roc.SetOmegaTauT1T2(0,1,1); // B=0 Float_t z0 = 1; // at +1 cm -> A side c2->cd(1); roc.CreateHistoDRinXY(1.,300,300)->Draw("cont4z"); diff --git a/TPC/TPCbase/imgdoc/AliTPCSpaceCharge3D_cxx_2829f39.C b/TPC/TPCbase/imgdoc/AliTPCSpaceCharge3D_cxx_2829f39.C new file mode 100644 index 00000000000..4b19a756390 --- /dev/null +++ b/TPC/TPCbase/imgdoc/AliTPCSpaceCharge3D_cxx_2829f39.C @@ -0,0 +1,11 @@ + { + gROOT->SetStyle("Plain"); gStyle->SetPalette(1); + TCanvas *c2 = new TCanvas("cAliTPCSpaceCharge3D","cAliTPCSpaceCharge3D",500,400); + AliTPCSpaceCharge3D sc; + sc.WriteChargeDistributionToFile("SC_zr2_GGleaks.root"); + sc.SetSCDataFileName("SC_zr2_GGleaks.root"); + sc.SetOmegaTauT1T2(0,1,1); // B=0 + sc.InitSpaceCharge3DDistortion(); + sc.CreateHistoDRinXY(15,300,300)->Draw("colz"); + return c2; + } diff --git a/TPC/TPCbase/imgdoc/AliTPCSpaceCharge3D_cxx_2829f39.png b/TPC/TPCbase/imgdoc/AliTPCSpaceCharge3D_cxx_2829f39.png new file mode 100644 index 0000000000000000000000000000000000000000..aad396404d9c40882f6549104ef986db646d16b3 GIT binary patch literal 15888 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