* The calib hist binning is changed to log binning
[u/mrichter/AliRoot.git] / TRD / AliTRDdEdxCalibHistArray.cxx
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"
29 #include "THn.h"
30 #include "TCollection.h"
31
32 #include "AliTRDdEdxBaseUtils.h"
33 #include "AliTRDdEdxCalibHistArray.h"
34
35 ClassImp(AliTRDdEdxCalibHistArray);
36
37 AliTRDdEdxCalibHistArray::AliTRDdEdxCalibHistArray(const Bool_t kNoInv): 
38   TObjArray(kNoInv ? 4: 8)
39 {
40   //
41   //constructor
42   //
43   SetName(GetArrayName());
44   SetOwner(kTRUE);
45
46   const Int_t    nbin[2]={AliTRDdEdxBaseUtils::NTRDtimebin(), 100};
47   const Double_t xmin[2]={0,       0.1};
48   const Double_t xmax[2]={nbin[0], 20};
49   const TString aname[2]={"globalTimeBin", "trdqovertpc"};
50   const TString atitle[2]={"det * AliTRDseedV1::kNtb + itb", "TRD-Cluster-Q / TPC-Signal"};
51
52   for(Int_t iter=0; iter<GetSize(); iter++){
53     THnBase *hi = new THnF(GetNameAt(iter), "", 2, nbin, xmin, xmax);
54     for(Int_t iaxis=0; iaxis<2; iaxis++){
55       TAxis *xi = hi->GetAxis(iaxis);
56       xi->SetName(aname[iaxis]);
57       xi->SetTitle(atitle[iaxis]);
58       AliTRDdEdxBaseUtils::BinLogX(xi);
59     }
60     AddAt(hi, iter);
61   }
62 }
63
64 AliTRDdEdxCalibHistArray::AliTRDdEdxCalibHistArray(const AliTRDdEdxCalibHistArray &obj): 
65   TObjArray(obj)
66 {
67   //
68   //copy constructor
69   //
70 }
71
72 AliTRDdEdxCalibHistArray & AliTRDdEdxCalibHistArray::operator=(const AliTRDdEdxCalibHistArray &obj)
73 {
74   //
75   //assignment operator
76   //
77
78   if(&obj == this) return *this;
79
80   TObjArray::operator=(obj);
81
82   return *this;
83 }
84
85 Long64_t AliTRDdEdxCalibHistArray::Merge(const TCollection* list) 
86 {
87   //
88   // Merge list of objects (needed by PROOF)
89   //
90
91   if(!list)
92     return 0;
93   
94   if(list->IsEmpty())
95     return 1;
96   
97   TIterator* iter = list->MakeIterator();
98   TObject* obj = 0;
99   
100   Int_t count=0;
101   while((obj = iter->Next()) != 0) 
102     {
103       AliTRDdEdxCalibHistArray * entry = dynamic_cast<AliTRDdEdxCalibHistArray*>(obj);
104       if (entry == 0) continue; 
105       
106       if(GetSize()!= entry->GetSize()){
107         printf("AliTRDdEdxCalibHistArray::Merge GetSize()!= entry->GetSize() %d %d\n", GetSize(), entry->GetSize()); exit(1);
108       }
109
110       for(Int_t ii=0; ii<GetSize(); ii++){
111         THnBase *h0 = (THnBase*) At(ii);
112         THnBase *h1 = (THnBase*) entry->At(ii);
113         h0->Add(h1);
114       }
115       
116       count++;
117     }
118   
119   return count;
120
121 }