21 #include "AliRawReader.h" 57 TObject * recoParamObj = entry->GetObject() ;
58 if ( strcmp(recoParamObj->ClassName(),
"TObjArray") == 0 ) {
62 for (Int_t iRP=0; iRP<recoParamArray->GetEntriesFast(); iRP++) {
70 else if (recoParamObj->InheritsFrom(
"AliDetectorRecoParam")) {
77 AliError(Form(
"No valid RecoParam object found in the OCDB for detector %s",name.Data()));
89 static Bool_t first = kTRUE ;
90 if ( ! first )
return;
91 const Char_t *name[]={
92 "hGlobalSPD1ResidualsY",
"SPD1ResidualsZ",
93 "hGlobalSPD2ResidualsY",
"SPD2ResidualsZ",
94 "hGlobalSDD1ResidualsY",
"SDD1ResidualsZ",
95 "hGlobalSDD2ResidualsY",
"SDD2ResidualsZ",
96 "hGlobalSSD1ResidualsY",
"SSD1ResidualsZ",
97 "hGlobalSSD2ResidualsY",
"SSD2ResidualsZ",
99 "hGlobalTPC1ResidualsY",
"TPC1ResidualsZ",
100 "hGlobalTPC2ResidualsY",
"TPC2ResidualsZ",
102 "hGlobalTRD1ResidualsY",
"TRD1ResidualsZ",
103 "hGlobalTRD2ResidualsY",
"TRD2ResidualsZ",
104 "hGlobalTRD3ResidualsY",
"TRD3ResidualsZ",
105 "hGlobalTRD4ResidualsY",
"TRD4ResidualsZ",
106 "hGlobalTRD5ResidualsY",
"TRD5ResidualsZ",
107 "hGlobalTRD6ResidualsY",
"TRD6ResidualsZ",
109 "hGlobalTOFResidualsY",
"TOFResidualsZ",
111 "hGlobalPHOS1ResidualsY",
"PHOS1ResidualsZ",
112 "hGlobalPHOS2ResidualsY",
"PHOS2ResidualsZ",
114 "hGlobalHMPIDResidualsY",
"HMPIDResidualsZ",
116 "hGlobalMUONResidualsY",
"MUONResidualsZ",
118 "hGlobalEMCALResidualsY",
"EMCALResidualsZ" 120 const Char_t *title[]={
121 "SPD1 residuals Y",
"SPD1 residuals Z",
122 "SPD2 residuals Y",
"SPD2 residuals Z",
123 "SDD1 residuals Y",
"SDD1 residuals Z",
124 "SDD2 residuals Y",
"SDD2 residuals Z",
125 "SSD1 residuals Y",
"SSD1 residuals Z",
126 "SSD2 residuals Y",
"SSD2 residuals Z",
128 "TPC1 residuals Y",
"TPC1 residuals Z",
129 "TPC2 residuals Y",
"TPC2 residuals Z",
131 "TRD1 residuals Y",
"TRD1 residuals Z",
132 "TRD2 residuals Y",
"TRD2 residuals Z",
133 "TRD3 residuals Y",
"TRD3 residuals Z",
134 "TRD4 residuals Y",
"TRD4 residuals Z",
135 "TRD5 residuals Y",
"TRD5 residuals Z",
136 "TRD6 residuals Y",
"TRD6 residuals Z",
138 "TOF residuals Y",
"TOF residuals Z",
140 "PHOS1 residuals Y",
"PHOS1 residuals Z",
141 "PHOS2 residuals Y",
"PHOS2 residuals Z",
143 "HMPID residuals Y",
"HMPID residuals Z",
145 "MUON residuals Y",
"MUON residuals Z",
147 "EMCAL residuals Y",
"EMCAL residuals Z" 152 TH1F *h=
new TH1F(name[i],title[i],100,-5.,5.);
154 h=
new TH1F(name[i+1],title[i+1],100,-5.,5.);
159 new TH1F(
"hGlobalSSD1AbsoluteResidualsYNegZ",
160 "SSD1 Absolute Residuals Y Neg Z",100,-2.,2.),40);
162 new TH1F(
"hGlobalSSD1AbsoluteResidualsZNegZ",
163 "SSD1 Absolute Residuals Z Neg Z",100,-2.,2.),41);
165 new TH1F(
"hGlobalSSD1AbsoluteResidualsYPosZ",
166 "SSD1 Absolute Residuals Y Pos Z",100,-2.,2.),42);
168 new TH1F(
"hGlobalSSD1AbsoluteResidualsZPosZ",
169 "SSD1 Absolute Residuals Z Pos Z",100,-2.,2.),43);
173 new TH1F(
"hGlobalSSD2AbsoluteResidualsYNegZ",
174 "SSD2 Absolute Residuals Y Neg Z",100,-3.,3.),44);
176 new TH1F(
"hGlobalSSD2AbsoluteResidualsZNegZ",
177 "SSD2 Absolute Residuals Z Neg Z",100,-3.,3.),45);
179 new TH1F(
"hGlobalSSD2AbsoluteResidualsYPosZ",
180 "SSD2 Absolute Residuals Y Pos Z",100,-3.,3.),46);
182 new TH1F(
"hGlobalSSD2AbsoluteResidualsZPosZ",
183 "SSD2Absolute Residuals Z Pos Z",100,-3.,3.),47);
197 const Bool_t expert = kTRUE ;
198 const Bool_t image = kTRUE ;
201 const Char_t *name[]={
202 "hGlobalPrimaryVertex" 204 const Char_t *title[]={
205 "Z-distribution of the primary vertex" 211 const Char_t *name[]={
212 "hGlobalFractionAssignedClustersITS",
213 "hGlobalFractionAssignedClustersTPC",
214 "hGlobalFractionAssignedClustersTRD",
215 "hGlobalClustersPerITSModule" 217 const Char_t *title[]={
218 "Fraction of the assigned clusters in ITS",
219 "Fraction of the assigned clusters in TPC",
220 "Fraction of the assigned clusters in TRD",
221 "Number of clusters per an ITS module" 230 const Char_t *name[]={
231 "hGlobalTrackAzimuthe",
234 "hGlobalTPCITSMatchedpT",
235 "hGlobalTPCTOFMatchedpT",
236 "hGlobalTPCITSMatchingProbability",
237 "hGlobalTPCTOFMatchingProbability",
238 "hGlobalTPCsideAposDCA",
239 "hGlobalTPCsideAnegDCA",
240 "hGlobalTPCsideCposDCA",
241 "hGlobalTPCsideCnegDCA" 243 const Char_t *title[]={
244 "Track azimuthal distribution (rad)",
245 "Track pseudo-rapidity distribution",
246 "TPC: track momentum distribution (GeV)",
247 "TPC-ITS matched: track momentum distribution (GeV)",
248 "TPC-TOF matched: track momentum distribution (GeV)",
249 "TPC-ITS track-matching probability",
250 "TPC-TOF track-matching probability",
251 "TPC side A: DCA for the positive tracks (mm)",
252 "TPC side A: DCA for the negative tracks (mm)",
253 "TPC side C: DCA for the positive tracks (mm)",
254 "TPC side C: DCA for the negative tracks (mm)" 256 Add2ESDsList(
new TH1F(name[0],title[0],100, 0.,TMath::TwoPi()),
kTrk0, !expert, image);
270 const Char_t *name[]={
271 "hGlobalPromptK0sMass",
272 "hGlobalOfflineK0sMass",
273 "hGlobalPromptLambda0Lambda0BarMass",
274 "hGlobalOfflineLambda0Lambda0BarMass" 276 const Char_t *title[]={
277 "On-the-fly K0s mass (GeV)",
278 "Offline K0s mass (GeV)",
279 "On-the-fly Lambda0 + Lambda0Bar mass (GeV)",
280 "Offline Lambda0 + Lambda0Bar mass (GeV)" 282 Add2ESDsList(
new TH1F(name[0],title[0],50, 0.4477,0.5477),
kK0on, !expert, image);
284 Add2ESDsList(
new TH1F(name[2],title[2],50, 1.0657,1.1657),
kL0on, !expert, image);
289 const Char_t *name[]={
292 "hGlobalTOFTrackingvsMeasured",
293 "hGlobalTPCdEdxvsMomentum" 295 const Char_t *title[]={
296 "ITS: dEdx (ADC) for particles with momentum 0.4 - 0.5 (GeV)",
297 "TPC: dEdx (ADC) for particles with momentum 0.4 - 0.5 (GeV)",
298 "TOF: tracking - measured (ps)",
299 "TPC: dEdx (A.U.) vs momentum (GeV)" 304 Add2ESDsList(
new TH2F(name[3],title[3],1500,0.05,15.,700,0.,700.),
kPid3,!expert,image);
307 const Char_t *name[]={
311 const Char_t *title[]={
312 "Multiplicity: V0A vs ITS",
313 "Multiplicity: V0C vs ITS" 315 TH2F *h0=
new TH2F(name[0],title[0],41,-0.5,40.5, 33,-0.5,32.5);
317 TH2F *h1=
new TH2F(name[1],title[1],41,-0.5,40.5, 33,-0.5,32.5);
347 Double_t xv=vtx->
GetX();
348 Double_t yv=vtx->
GetY();
349 Double_t zv=vtx->
GetZ();
354 for (Int_t i=0; i<ntrk; i++) {
363 for (Int_t j=0; j<6; ++j) {
376 Double_t val = n*1.0/nf;
386 Double_t
p=track->
GetP();
392 if ((TMath::Abs(dz[0])<3.) && (TMath::Abs(dz[1])<3.)) {
393 Double_t phi=track->
Phi();
395 Double_t y=track->
Eta();
398 if (TMath::Abs(y)<0.9) {
413 if (innTrack->
GetZ() > 0)
414 if (innTrack->
GetTgl()> 0) {
418 if (innTrack->
GetZ() < 0)
419 if (innTrack->
GetTgl()< 0) {
426 if ((p>0.4) && (p<0.5)) {
452 Double_t pp=par->
GetP();
478 if (h5 && h6 && tpc && its && tof) {
482 h5->Divide(its,tpc,1,1.,
"b");
483 h6->Divide(tof,tpc,1,1.,
"b");
489 for (Int_t i=0; i<nV0; i++) {
493 Int_t nidx=TMath::Abs(
v0.GetNindex());
497 Int_t pidx=TMath::Abs(
v0.GetPindex());
501 v0.ChangeMassHypothesis(kK0Short);
502 mass=
v0.GetEffMass();
503 if (
v0.GetOnFlyStatus())
508 v0.ChangeMassHypothesis(kLambda0);
509 mass=
v0.GetEffMass();
510 if (
v0.GetOnFlyStatus())
515 v0.ChangeMassHypothesis(kLambda0Bar);
516 mass=
v0.GetEffMass();
517 if (
v0.GetOnFlyStatus())
Bool_t GetITSModuleIndexInfo(Int_t ilayer, Int_t &idet, Int_t &status, Float_t &xloc, Float_t &zloc) const
Int_t GetNumberOfV0s() const
void GetDZ(Double_t x, Double_t y, Double_t z, Double_t b, Float_t dz[2]) const
Double_t GetMagneticField() const
Bool_t Run(const char *fileName=NULL, AliDetectorRecoParam *recoParam=NULL)
AliESDVZERO * GetVZEROData() const
const AliExternalTrackParam * GetInnerParam() const
virtual Double_t GetY() const
virtual Int_t Add2RecPointsList(TH1 *hist, const Int_t index, const Bool_t expert=kFALSE, const Bool_t image=kFALSE)
const AliExternalTrackParam * GetTPCInnerParam() const
virtual Double_t GetTgl() const
virtual Short_t GetNbPMV0C() const
Char_t GetITSclusters(Int_t *idx) const
AliCDBEntry * Get(const AliCDBId &query, Bool_t forceCaching=kFALSE)
void MakeRaws(AliRawReader *rawReader)
AliESDv0 * GetV0(Int_t i) const
virtual Int_t Add2ESDsList(TH1 *hist, const Int_t index, const Bool_t expert=kFALSE, const Bool_t image=kFALSE)
Bool_t IsOn(ULong64_t mask) const
static Int_t GetNEventTrigClasses()
Double_t GetTPCsignal() const
virtual TH1 * GetMatchingESDsHisto(Int_t index, Int_t trigId)
virtual Short_t GetNbPMV0A() const
virtual void ClonePerTrigClass(AliQAv1::TASKINDEX_t task)
virtual Double_t GetZ() const
AliMultiplicity * GetMultiplicity() const
UShort_t GetTPCNcls() const
void MakeESDs(AliESDEvent *event)
virtual Double_t GetX() const
#define AliDebug(logLevel, message)
Double_t GetITSsignal() const
UShort_t GetTPCNclsF() const
const AliESDVertex * GetPrimaryVertex() const
Int_t GetNumberOfTracks() const
AliESDtrack * GetTrack(Int_t i) const
const AliDetectorRecoParam * fRecoParam
This is used by Corr only to hold its Ntuple.
void IncEvCountCycleRaws(Int_t diff=1)
void IncEvCountCycleESDs(Int_t diff=1)
virtual Bool_t GetStatus() const
void IncEvCountTotalESDs(Int_t diff=1)
#define AliError(message)
void GetIntegratedTimes(Double_t *times, Int_t nspec=AliPID::kSPECIES) const
static AliCDBManager * Instance(TMap *entryCache=NULL, Int_t run=-1)
static Int_t GetQADebugLevel()
static AliQAChecker * Instance()
UChar_t GetTRDclusters(Int_t *idx) const
virtual Int_t FillESDsData(Int_t index, double x)
Double_t GetTOFsignal() const
void IncEvCountTotalRaws(Int_t diff=1)
virtual Int_t GetNumberOfTracklets() const