1 //_____________________________________________________________________
12 * @ingroup pwg2_forward_analysis_scripts_corr
14 TH2D* MakeOneRing(UShort_t d, Char_t r, Double_t vz, Int_t& nDead)
16 AliFMDGeometry* geom = AliFMDGeometry::Instance();
17 AliFMDParameters* pars = AliFMDParameters::Instance();
19 UShort_t nS = (r == 'I' || r == 'i' ? 20 : 40);
20 UShort_t nT = (r == 'I' || r == 'i' ? 512 : 256);
22 // Make our two histograms
23 TH2D* hAll = new TH2D("all","All",200,-4,6,nS,0,2*TMath::Pi());
24 hAll->SetXTitle("#eta");
25 hAll->SetYTitle("#phi");
27 hAll->SetDirectory(0);
28 TH2D* hOK = static_cast<TH2D*>(hAll->Clone());
31 // Loop over all sectors and strips in this ring
34 for (UShort_t s = 0; s < nS; s++) {
35 for (UShort_t t = 0; t < nT; t++) {
36 // Get eta,phi by quering the geometry (first for (x,y,z), then
37 // correcting for the vertex position, and then calculating
40 geom->Detector2XYZ(d, r, s, t, x, y, z);
42 Double_t q, eta, phi, theta;
43 AliFMDGeometry::XYZ2REtaPhiTheta(x, y, z, q, eta, phi, theta);
44 if (phi < 0) phi += 2*TMath::Pi();
46 // Check if this is a dead channel or not
47 Bool_t isDead = pars->IsDead(d, r, s, t);
57 // Divide out the efficiency.
58 hOK->Divide(hOK,hAll,1,1,"B");
63 Info("MakeAcceptanceCorrections","Made correction for FMD%d%c at vz=%f - "
64 "%d strips out of %d OK", d, r, vz, nOK, nAll);
70 //_____________________________________________________________________
82 * @ingroup pwg2_forward_analysis_scripts_corr
84 void MakeAcceptanceCorrection(Int_t runNo=121526,
92 gSystem->Load("libANALYSIS");
93 gSystem->Load("libANALYSISalice");
94 gSystem->Load("libPWG2forward2");
96 // Float_t delta = (vtxHigh - vtxLow) / (Float_t)nVtxBins;
98 Bool_t kGridOnline = kTRUE;
99 if(!(TGrid::Connect("alien://",0,0,"t")))
100 kGridOnline = kFALSE;
102 // --- Initialisations ------------------------------------------
104 Info("MakeAcceptanceCorrections","Setting up OCDB");
106 AliCDBManager* cdb = AliCDBManager::Instance();
108 cdb->SetDefaultStorage("alien://Folder=/alice/data/2010/OCDB");
110 cdb->SetDefaultStorage("local://$(ALICE_ROOT)/OCDB");
114 Info("MakeAcceptanceCorrections","Loading geometry");
115 AliGeomManager::LoadGeometry();
117 // Get an initialize parameters
118 Info("MakeAcceptanceCorrections","Intialising parameters");
119 AliFMDParameters* pars = AliFMDParameters::Instance();
122 // Get an initialise geometry
123 Info("MakeAcceptanceCorrections","Initialising geomtry");
124 AliFMDGeometry* geom = AliFMDGeometry::Instance();
126 geom->InitTransformations();
128 // --- Output object -----------------------------------------------
129 // Make our correction object
130 AliFMDCorrAcceptance* corr = new AliFMDCorrAcceptance();
131 corr->SetVertexAxis(nVtxBins, vtxLow, vtxHigh);
133 // --- Loop over verticies and rings -------------------------------
135 Float_t dV = (vtxHigh - vtxLow) / nVtxBins;
136 for (Double_t v = vtxLow+dV/2; v < vtxHigh; v += dV) {
137 for(UShort_t d = 1; d <= 3;d++) {
138 UShort_t nR = (d == 1 ? 1 : 2);
139 for (UShort_t q = 0; q < nR; q++) {
140 Char_t r = (q == 0 ? 'I' : 'O');
142 // Delegate to other function
143 TH2D* ratio = MakeOneRing(d, r, v, nDead);
144 if (!ratio) continue;
146 // Set the correction
147 corr->SetCorrection(d, r, v, ratio);
154 TFile* out = TFile::Open(Form("acceptance_%d.root", runNo), "RECREATE");
155 corr->Write("acceptance");
159 Info("MakeAcceptanceCorrections","Writing to disk");
160 AliForwardCorrectionManager& cm = AliForwardCorrectionManager::Instance();
161 TString fname = cm.GetFileName(AliForwardCorrectionManager::kAcceptance,
162 system, energy, field, false);
163 TFile* out = TFile::Open(fname.Data(), "RECREATE");
164 corr->Write(cm.GetObjectName(AliForwardCorrectionManager::kAcceptance));
167 Info("MakeAcceptanceCorrections","File %s generated. "
168 "It should be copied to %s", fname.Data(),
169 cm.GetFileDir(AliForwardCorrectionManager::kAcceptance));
170 out = TFile::Open(fname.Data(), "READ");