TRD module
[u/mrichter/AliRoot.git] / TRD / TRDrec / AliTRDdEdxCalibHistArray.cxx
CommitLineData
6951a056 1/**************************************************************************
2 * Copyright(c) 1998-1999, 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//
17// xx
18// xx
19// xx
20// xx
21// xx
22//
23// Xianguo Lu
24// lu@physi.uni-heidelberg.de
25// Xianguo.Lu@cern.ch
26//
27//
28#include "THnBase.h"
6856b6a8 29#include "THn.h"
6951a056 30#include "TCollection.h"
b8bec44f 31#include "AliLog.h"
6951a056 32
33#include "AliTRDdEdxBaseUtils.h"
34#include "AliTRDdEdxCalibHistArray.h"
35
36ClassImp(AliTRDdEdxCalibHistArray);
37
38AliTRDdEdxCalibHistArray::AliTRDdEdxCalibHistArray(const Bool_t kNoInv):
39 TObjArray(kNoInv ? 4: 8)
40{
41 //
42 //constructor
43 //
44 SetName(GetArrayName());
45 SetOwner(kTRUE);
46
687aa844 47 const Int_t nbin[2]={AliTRDdEdxBaseUtils::NTRDtimebin(), 200};
48 const Double_t xmin[2]={0, 0.01};
2942f542 49 const Double_t xmax[2]={static_cast<Double_t>(nbin[0]), 10};
6856b6a8 50 const TString aname[2]={"globalTimeBin", "trdqovertpc"};
51 const TString atitle[2]={"det * AliTRDseedV1::kNtb + itb", "TRD-Cluster-Q / TPC-Signal"};
6951a056 52
53 for(Int_t iter=0; iter<GetSize(); iter++){
6856b6a8 54 THnBase *hi = new THnF(GetNameAt(iter), "", 2, nbin, xmin, xmax);
55 for(Int_t iaxis=0; iaxis<2; iaxis++){
56 TAxis *xi = hi->GetAxis(iaxis);
57 xi->SetName(aname[iaxis]);
58 xi->SetTitle(atitle[iaxis]);
396eba11 59 //only log for y-axis
60 if(iaxis==1){
61 AliTRDdEdxBaseUtils::BinLogX(xi);
62 }
6856b6a8 63 }
6951a056 64 AddAt(hi, iter);
65 }
66}
67
68AliTRDdEdxCalibHistArray::AliTRDdEdxCalibHistArray(const AliTRDdEdxCalibHistArray &obj):
69 TObjArray(obj)
70{
71 //
72 //copy constructor
73 //
74}
75
76AliTRDdEdxCalibHistArray & AliTRDdEdxCalibHistArray::operator=(const AliTRDdEdxCalibHistArray &obj)
77{
78 //
79 //assignment operator
80 //
81
82 if(&obj == this) return *this;
83
84 TObjArray::operator=(obj);
85
86 return *this;
87}
88
89Long64_t AliTRDdEdxCalibHistArray::Merge(const TCollection* list)
90{
91 //
92 // Merge list of objects (needed by PROOF)
93 //
94
95 if(!list)
96 return 0;
97
98 if(list->IsEmpty())
99 return 1;
100
101 TIterator* iter = list->MakeIterator();
102 TObject* obj = 0;
103
104 Int_t count=0;
105 while((obj = iter->Next()) != 0)
106 {
107 AliTRDdEdxCalibHistArray * entry = dynamic_cast<AliTRDdEdxCalibHistArray*>(obj);
108 if (entry == 0) continue;
109
110 if(GetSize()!= entry->GetSize()){
b8bec44f 111 AliFatal(Form("GetSize()!= entry->GetSize() %d %d\n", GetSize(), entry->GetSize()));
6951a056 112 }
113
114 for(Int_t ii=0; ii<GetSize(); ii++){
115 THnBase *h0 = (THnBase*) At(ii);
116 THnBase *h1 = (THnBase*) entry->At(ii);
117 h0->Add(h1);
118 }
119
120 count++;
121 }
122
123 return count;
124
125}