9 fNbinVar(new TArrayI(nvar)),
10 fXmin(new TArrayF(nvar)),
11 fXmax(new TArrayF(nvar)),
12 fNameVar(new TClonesArray(
"TNamed")),
13 fQA(new TClonesArray(
"TH2F"))
16 for(Int_t i=0;i <
GetNvar();i++){
17 (*fNbinVar)[i] = binVar[i];
20 for(Int_t i=0; i<
GetNvar();i++){
21 new((*fNameVar)[i]) TNamed(
"",
"");
27 fNbinVar(new TArrayI(0)),
28 fXmin(new TArrayF(0)),
29 fXmax(new TArrayF(0)),
30 fNameVar(new TClonesArray(
"TNamed")),
31 fQA(new TClonesArray(
"TH2F"))
37 for(Int_t i=
fNameVar->GetEntries();i>0;i--){
42 for(Int_t i=
fQA->GetEntries();i>0;i--){
53 for(Int_t i=
fNameVar->GetEntries();i>0;i--){
58 for(Int_t i=
fQA->GetEntries();i>0;i--){
68 fXmin =
new TArrayF(0);
69 fXmax =
new TArrayF(0);
78 fNameVar(new TClonesArray(
"TNamed")),
79 fQA(new TClonesArray(
"TH2F"))
87 new((*fQA)[i]) TH2F(*((TH2F *) old.
GetQA(i)));
90 for(Int_t i=0; i<old.
GetNvar();i++){
94 for(Int_t i=0;i <
GetNvar();i++){
96 (*fXmin)[i] = (*old.
fXmin)[i];
97 (*fXmax)[i] = (*old.
fXmax)[i];
105 printf(
"different\n");
109 new((*fQA)[i]) TH2F(*((TH2F *) old.
GetQA(i)));
116 for(Int_t i=0;i < old.
GetNvar();i++){
117 (*fNbinVar)[i] = (*old.
fNbinVar)[i];
118 (*fXmin)[i] = (*old.
fXmin)[i];
119 (*fXmax)[i] = (*old.
fXmax)[i];
122 fNameVar =
new TClonesArray(
"TNamed");
123 for(Int_t i=0; i<old.
GetNvar();i++){
131 Int_t n =
fQA->GetEntries();
133 for(Int_t i=0;i <
GetNvar();i++){
142 Bool_t kErr = kFALSE;
143 for(Int_t i=0;i <
GetNvar();i++){
144 if((*
fNbinVar)[i] < 1 || (*fXmin)[i] >= (*fXmax)[i]){
145 printf(
"var ranges are not set properly for variable %i please chek it before to define the species\n",i);
150 printf(
"AddSpecies: NOTHING DONE\n");
155 for(Int_t i=0;i <
GetNvar();i++){
156 ncomb *= (*fNbinVar)[i];
162 for(Int_t i=0; i < ncomb;i++){
163 snprintf(nameHisto,200,
"%s_%s_%i",GetName(),name,i);
164 snprintf(title,300,
"%s",name);
166 for(Int_t j=0;j <
GetNvar();j++){
167 Int_t ibin = ncombTemp%(*fNbinVar)[j];
168 snprintf(title2,300,
"%s",title);
169 snprintf(title,300,
"%s_%04.1f<%s<%04.1f",title2,(*
fXmin)[j] + ((*
fXmax)[j]-(*
fXmin)[j])/(*
fNbinVar)[j]*ibin,
fNameVar->At(j)->GetName(),(*fXmin)[j] + ((*fXmax)[j]-(*fXmin)[j])/(*
fNbinVar)[j]*(ibin+1));
170 ncombTemp /= (*fNbinVar)[j];
173 new((*fQA)[
GetNhistos()]) TH2F(nameHisto,title,nXbin,xbin,nYbin,ybin);
174 ((TH2F *)
GetQA(
GetNhistos()-1))->GetXaxis()->SetTitle(
"N_{#sigma}^{TPC}");
175 ((TH2F *)
GetQA(
GetNhistos()-1))->GetYaxis()->SetTitle(
"N_{#sigma}^{TOF}");
187 printf(
"ADD error: number of objects is different (%i != %i)\n",
GetNhistos(),oth->
GetNhistos());
198 printf(
"Ranges should be set before to define the species\nNOTHING DONE\n");
207 for(Int_t i=0;i <
GetNvar();i++){
208 Int_t ibin =
GetBin(i,x[i]);
209 if(ibin < 0 || ibin >= (*
fNbinVar)[i]){
210 printf(
"%i) %i not good w.r.t. %i (%f) (%f,%f)\n",i,ibin,(*
fNbinVar)[i],x[i],(*
fXmin)[i],(*
fXmax)[i]);
213 histo += ncomb * ibin;
214 ncomb *= (*fNbinVar)[i];
216 histo += species*ncomb;
224 for(Int_t i=0;i <
GetNvar();i++){
225 Int_t ibin =
GetBin(i,x[i]);
226 if(ibin < 0 || ibin >= (*
fNbinVar)[i]){
227 printf(
"%i) %i not good w.r.t. %i (%f) (%f,%f)\n",i,ibin,(*
fNbinVar)[i],x[i],(*
fXmin)[i],(*
fXmax)[i]);
230 histo += ncomb * ibin;
231 ncomb *= (*fNbinVar)[i];
233 histo += species*ncomb;
245 for(Int_t i=0;i <
GetNvar();i++){
246 ncomb *= (*fNbinVar)[i];
249 TH2F *htemplate =
GetQA(species*ncomb);
250 TH2F *temp =
new TH2F(*htemplate);
251 temp->SetName(
"histo");
253 snprintf(title,300,
"%i",species);
254 for(Int_t i=0;i <
GetNvar();i++){
255 Int_t imin =
GetBin(i,xMin[i]);
256 if(imin < 0) imin = 0;
257 else if(imin >= (*
fNbinVar)[i]) imin = (*fNbinVar)[i]-1;
258 Int_t imax =
GetBin(i,xMax[i]);
259 if(imax < imin) imax = imin;
260 else if(imax >= (*
fNbinVar)[i]) imax = (*fNbinVar)[i]-1;
261 snprintf(title2,300,
"%s",title);
262 snprintf(title,300,
"%s_%04.1f<%s<%04.1f",title2,
265 (*fXmin)[i] + ((*fXmax)[i]-(*fXmin)[i])/(*
fNbinVar)[i]*(imax+1));
267 temp->SetTitle(title);
269 for(Int_t i=species*ncomb;i < (species+1)*ncomb;i++){
270 Bool_t kGood = kTRUE;
273 for(Int_t j=0;j <
GetNvar();j++){
274 Int_t imin =
GetBin(j,xMin[j]);
275 if(imin < 0) imin = 0;
276 else if(imin >= (*
fNbinVar)[j]) imin = (*fNbinVar)[j]-1;
277 Int_t imax =
GetBin(j,xMax[j]);
278 if(imax < imin) imax = imin;
279 else if(imax >= (*
fNbinVar)[j]) imax = (*fNbinVar)[j]-1;
281 Int_t ibin = ncombTemp%(*fNbinVar)[j];
282 ncombTemp /= (*fNbinVar)[j];
284 if(ibin < imin || ibin > imax){
290 if(kGood) temp->Add(
GetQA(i));
295 return GetQA(species);
301 if (list->IsEmpty())
return 0;
303 TList *listObj =
new TList();
304 listObj->AddAll(list);
306 for(Int_t i=0;i < listObj->GetEntries();i++){
Int_t GetNspecies() const
void SetVarRange(Int_t ivar, Float_t xMin, Float_t xMax)
Int_t GetBin(Int_t ivar, Float_t x) const
void AddSpecies(const char *name, Int_t nXbin, const Double_t *xbin, Int_t nYbin, const Double_t *ybin)
Int_t Add(const AliFlowVZEROQA *oth)
Long64_t Merge(TCollection *list)
TH2F * GetQA(Int_t histo) const
void Fill(Int_t species, Float_t var1, Float_t var2, Float_t x[])
const char * GetVarName(Int_t ivar) const
AliFlowVZEROQA & operator=(const AliFlowVZEROQA &source)
void DirectFill(Int_t histo, Float_t var1, Float_t var2)