New method SetNCarlos in order to set the number of CARLOS chips connected to the...
[u/mrichter/AliRoot.git] / EMCAL / AliEMCALCalibCoefs.cxx
CommitLineData
16d3c94d 1/**************************************************************************
2 * Copyright(c) 1998-2007, ALICE Experiment at CERN, All rights reserved. *
3 * *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
6 * *
7 * Permission to use, copy, modify and distribute this software and its *
8 * documentation strictly for non-commercial purposes is hereby granted *
9 * without fee, provided that the above copyright notice appears in all *
10 * copies and that both the copyright notice and this permission notice *
11 * appear in the supporting documentation. The authors make no claims *
12 * about the suitability of this software for any purpose. It is *
13 * provided "as is" without express or implied warranty. *
14 **************************************************************************/
15
16/* $Log$ */
17
18//_________________________________________________________________________
19// Calibration coefficients
20//
21//*-- Author: Aleksei Pavlinov (WSU, Detroit, USA)
22
23#include "AliEMCALCalibCoefs.h"
24
25#include "AliRun.h"
26#include "AliEMCALCalibData.h"
27#include "AliCDBMetaData.h"
28#include "AliCDBId.h"
29#include "AliCDBEntry.h"
30#include "AliCDBManager.h"
31#include "AliCDBStorage.h"
32#include "AliEMCALGeometry.h"
33
34#include "TH1F.h"
35
36TableClassImpl(AliEMCALCalibCoefs,calibCoef)
37
38// Get initial Calib Data from DB
39AliEMCALCalibCoefs* AliEMCALCalibCoefs::GetCalibTableFromDb(const char *tn)
40{
41 // Initial cc with decalibration
42 char* dbString = "local:///data/r22b/ALICE/PROD/CALIBRATION_May_2007/PI0/PDSF/10GEV/DECALIB/DeCalibDB";
43 AliEMCALCalibData* caldata = (AliEMCALCalibData*)
44 (AliCDBManager::Instance()->GetStorage(dbString)
45 ->Get("EMCAL/Calib/Data",gAlice->GetRunNumber())->GetObject());
46 if(caldata == 0) return 0;
47
48 AliEMCALCalibCoefs *tab = new AliEMCALCalibCoefs(tn);
49 tab->SetCalibMethod(AliEMCALCalibCoefs::kMC);
50
51 AliEMCALGeometry *g = AliEMCALGeometry::GetInstance();
52 for(Int_t id=0; id<g->GetNCells(); id++){
53 Int_t nSupMod=0, nModule=0, nIphi=0, nIeta=0, iphiCell=0, ietaCell=0;
54 g->GetCellIndex(id, nSupMod, nModule, nIphi, nIeta);
55 g->GetCellPhiEtaIndexInSModule(nSupMod, nModule, nIphi, nIeta, iphiCell, ietaCell);
56
57 calibCoef r;
58 r.absId = id;
59 r.cc = caldata->GetADCchannel(nSupMod, ietaCell, iphiCell);
60 r.eCc = 0.0;
61
62 tab->AddAt(&r);
63 }
64 tab->Purge();
65 tab->SetCalibMethod(AliEMCALCalibCoefs::kPI0);
66
67 return tab;
68}
69
70TH1F* AliEMCALCalibCoefs::GetHistOfCalibTableFromDb(const char *tn)
71{
72 // First SM only
73 AliEMCALGeometry *g = AliEMCALGeometry::GetInstance("");
74
75 AliEMCALCalibCoefs* tab = GetCalibTableFromDb(tn);
76 if(tab==0) return 0;
77
78 TH1F *h = new TH1F("hCCfirst", " cc first (in MeV)", 70, 12., 19.);
79 calibCoef *r;
80 for(Int_t i=0; i<tab->GetNRows(); i++){
81 r = tab->GetTable(i);
82 if(i>=1152) break;
83 h->Fill(r->cc*1000.);
84 }
85 delete tab;
86 return h;
87}
88
89calibCoef *AliEMCALCalibCoefs::GetRow(const int absId)
90{
91 calibCoef *r=0;
92 for(int id=0; id<GetNRows(); id++){
93 r = GetTable(id);
94 if(r->absId == absId) return r;
95 }
96 return 0;
97}
98
99void AliEMCALCalibCoefs::PrintTable()
100{
101 printf(" Table : %s : nrows %i \n", GetName(), int(GetNRows()));
102 for(int i=0; i<GetNRows(); i++) PrintTable(i);
103}
104
105void AliEMCALCalibCoefs::PrintTable(const Int_t i)
106{
107 if(i>=GetNRows()) return;
108 printf("row %i \n", i);
109 PrintRec(GetTable(i));
110}
111
112void AliEMCALCalibCoefs::PrintRec(calibCoef* r)
113{
114 if(r==0) return;
115 printf(" abs Id %5.5i cc %7.6f eCc %7.6f \n", r->absId, r->cc, r->eCc);
116}