ROOT logo
/**************************************************************************
 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 *                                                                        *
 * Author: The ALICE Off-line Project.                                    *
 * Contributors are mentioned in the code where appropriate.              *
 *                                                                        *
 * Permission to use, copy, modify and distribute this software and its   *
 * documentation strictly for non-commercial purposes is hereby granted   *
 * without fee, provided that the above copyright notice appears in all   *
 * copies and that both the copyright notice and this permission notice   *
 * appear in the supporting documentation. The authors make no claims     *
 * about the suitability of this software for any purpose. It is          *
 * provided "as is" without express or implied warranty.                  *
 **************************************************************************/

//
// xx
// xx
// xx
// xx
// xx
//
//  Xianguo Lu 
//  lu@physi.uni-heidelberg.de
//  Xianguo.Lu@cern.ch
//  
//
#include "THnBase.h"
#include "THn.h"
#include "TCollection.h"
#include "AliLog.h"

#include "AliTRDdEdxBaseUtils.h"
#include "AliTRDdEdxCalibHistArray.h"

ClassImp(AliTRDdEdxCalibHistArray);

AliTRDdEdxCalibHistArray::AliTRDdEdxCalibHistArray(const Bool_t kNoInv): 
  TObjArray(kNoInv ? 4: 8)
{
  //
  //constructor
  //
  SetName(GetArrayName());
  SetOwner(kTRUE);

  const Int_t    nbin[2]={AliTRDdEdxBaseUtils::NTRDtimebin(), 200};
  const Double_t xmin[2]={0,       0.01};
  const Double_t xmax[2]={static_cast<Double_t>(nbin[0]), 10};
  const TString aname[2]={"globalTimeBin", "trdqovertpc"};
  const TString atitle[2]={"det * AliTRDseedV1::kNtb + itb", "TRD-Cluster-Q / TPC-Signal"};

  for(Int_t iter=0; iter<GetSize(); iter++){
    THnBase *hi = new THnF(GetNameAt(iter), "", 2, nbin, xmin, xmax);
    for(Int_t iaxis=0; iaxis<2; iaxis++){
      TAxis *xi = hi->GetAxis(iaxis);
      xi->SetName(aname[iaxis]);
      xi->SetTitle(atitle[iaxis]);
      //only log for y-axis
      if(iaxis==1){
        AliTRDdEdxBaseUtils::BinLogX(xi);
      }
    }
    AddAt(hi, iter);
  }
}

AliTRDdEdxCalibHistArray::AliTRDdEdxCalibHistArray(const AliTRDdEdxCalibHistArray &obj): 
  TObjArray(obj)
{
  //
  //copy constructor
  //
}

AliTRDdEdxCalibHistArray & AliTRDdEdxCalibHistArray::operator=(const AliTRDdEdxCalibHistArray &obj)
{
  //
  //assignment operator
  //

  if(&obj == this) return *this;

  TObjArray::operator=(obj);

  return *this;
}

Long64_t AliTRDdEdxCalibHistArray::Merge(const TCollection* list) 
{
  //
  // Merge list of objects (needed by PROOF)
  //

  if(!list)
    return 0;
  
  if(list->IsEmpty())
    return 1;
  
  TIterator* iter = list->MakeIterator();
  TObject* obj = 0;
  
  Int_t count=0;
  while((obj = iter->Next()) != 0) 
    {
      AliTRDdEdxCalibHistArray * entry = dynamic_cast<AliTRDdEdxCalibHistArray*>(obj);
      if (entry == 0) continue; 
      
      if(GetSize()!= entry->GetSize()){
        AliFatal(Form("GetSize()!= entry->GetSize() %d %d\n", GetSize(), entry->GetSize()));
      }

      for(Int_t ii=0; ii<GetSize(); ii++){
        THnBase *h0 = (THnBase*) At(ii);
        THnBase *h1 = (THnBase*) entry->At(ii);
        h0->Add(h1);
      }
      
      count++;
    }
  
  return count;

}
 AliTRDdEdxCalibHistArray.cxx:1
 AliTRDdEdxCalibHistArray.cxx:2
 AliTRDdEdxCalibHistArray.cxx:3
 AliTRDdEdxCalibHistArray.cxx:4
 AliTRDdEdxCalibHistArray.cxx:5
 AliTRDdEdxCalibHistArray.cxx:6
 AliTRDdEdxCalibHistArray.cxx:7
 AliTRDdEdxCalibHistArray.cxx:8
 AliTRDdEdxCalibHistArray.cxx:9
 AliTRDdEdxCalibHistArray.cxx:10
 AliTRDdEdxCalibHistArray.cxx:11
 AliTRDdEdxCalibHistArray.cxx:12
 AliTRDdEdxCalibHistArray.cxx:13
 AliTRDdEdxCalibHistArray.cxx:14
 AliTRDdEdxCalibHistArray.cxx:15
 AliTRDdEdxCalibHistArray.cxx:16
 AliTRDdEdxCalibHistArray.cxx:17
 AliTRDdEdxCalibHistArray.cxx:18
 AliTRDdEdxCalibHistArray.cxx:19
 AliTRDdEdxCalibHistArray.cxx:20
 AliTRDdEdxCalibHistArray.cxx:21
 AliTRDdEdxCalibHistArray.cxx:22
 AliTRDdEdxCalibHistArray.cxx:23
 AliTRDdEdxCalibHistArray.cxx:24
 AliTRDdEdxCalibHistArray.cxx:25
 AliTRDdEdxCalibHistArray.cxx:26
 AliTRDdEdxCalibHistArray.cxx:27
 AliTRDdEdxCalibHistArray.cxx:28
 AliTRDdEdxCalibHistArray.cxx:29
 AliTRDdEdxCalibHistArray.cxx:30
 AliTRDdEdxCalibHistArray.cxx:31
 AliTRDdEdxCalibHistArray.cxx:32
 AliTRDdEdxCalibHistArray.cxx:33
 AliTRDdEdxCalibHistArray.cxx:34
 AliTRDdEdxCalibHistArray.cxx:35
 AliTRDdEdxCalibHistArray.cxx:36
 AliTRDdEdxCalibHistArray.cxx:37
 AliTRDdEdxCalibHistArray.cxx:38
 AliTRDdEdxCalibHistArray.cxx:39
 AliTRDdEdxCalibHistArray.cxx:40
 AliTRDdEdxCalibHistArray.cxx:41
 AliTRDdEdxCalibHistArray.cxx:42
 AliTRDdEdxCalibHistArray.cxx:43
 AliTRDdEdxCalibHistArray.cxx:44
 AliTRDdEdxCalibHistArray.cxx:45
 AliTRDdEdxCalibHistArray.cxx:46
 AliTRDdEdxCalibHistArray.cxx:47
 AliTRDdEdxCalibHistArray.cxx:48
 AliTRDdEdxCalibHistArray.cxx:49
 AliTRDdEdxCalibHistArray.cxx:50
 AliTRDdEdxCalibHistArray.cxx:51
 AliTRDdEdxCalibHistArray.cxx:52
 AliTRDdEdxCalibHistArray.cxx:53
 AliTRDdEdxCalibHistArray.cxx:54
 AliTRDdEdxCalibHistArray.cxx:55
 AliTRDdEdxCalibHistArray.cxx:56
 AliTRDdEdxCalibHistArray.cxx:57
 AliTRDdEdxCalibHistArray.cxx:58
 AliTRDdEdxCalibHistArray.cxx:59
 AliTRDdEdxCalibHistArray.cxx:60
 AliTRDdEdxCalibHistArray.cxx:61
 AliTRDdEdxCalibHistArray.cxx:62
 AliTRDdEdxCalibHistArray.cxx:63
 AliTRDdEdxCalibHistArray.cxx:64
 AliTRDdEdxCalibHistArray.cxx:65
 AliTRDdEdxCalibHistArray.cxx:66
 AliTRDdEdxCalibHistArray.cxx:67
 AliTRDdEdxCalibHistArray.cxx:68
 AliTRDdEdxCalibHistArray.cxx:69
 AliTRDdEdxCalibHistArray.cxx:70
 AliTRDdEdxCalibHistArray.cxx:71
 AliTRDdEdxCalibHistArray.cxx:72
 AliTRDdEdxCalibHistArray.cxx:73
 AliTRDdEdxCalibHistArray.cxx:74
 AliTRDdEdxCalibHistArray.cxx:75
 AliTRDdEdxCalibHistArray.cxx:76
 AliTRDdEdxCalibHistArray.cxx:77
 AliTRDdEdxCalibHistArray.cxx:78
 AliTRDdEdxCalibHistArray.cxx:79
 AliTRDdEdxCalibHistArray.cxx:80
 AliTRDdEdxCalibHistArray.cxx:81
 AliTRDdEdxCalibHistArray.cxx:82
 AliTRDdEdxCalibHistArray.cxx:83
 AliTRDdEdxCalibHistArray.cxx:84
 AliTRDdEdxCalibHistArray.cxx:85
 AliTRDdEdxCalibHistArray.cxx:86
 AliTRDdEdxCalibHistArray.cxx:87
 AliTRDdEdxCalibHistArray.cxx:88
 AliTRDdEdxCalibHistArray.cxx:89
 AliTRDdEdxCalibHistArray.cxx:90
 AliTRDdEdxCalibHistArray.cxx:91
 AliTRDdEdxCalibHistArray.cxx:92
 AliTRDdEdxCalibHistArray.cxx:93
 AliTRDdEdxCalibHistArray.cxx:94
 AliTRDdEdxCalibHistArray.cxx:95
 AliTRDdEdxCalibHistArray.cxx:96
 AliTRDdEdxCalibHistArray.cxx:97
 AliTRDdEdxCalibHistArray.cxx:98
 AliTRDdEdxCalibHistArray.cxx:99
 AliTRDdEdxCalibHistArray.cxx:100
 AliTRDdEdxCalibHistArray.cxx:101
 AliTRDdEdxCalibHistArray.cxx:102
 AliTRDdEdxCalibHistArray.cxx:103
 AliTRDdEdxCalibHistArray.cxx:104
 AliTRDdEdxCalibHistArray.cxx:105
 AliTRDdEdxCalibHistArray.cxx:106
 AliTRDdEdxCalibHistArray.cxx:107
 AliTRDdEdxCalibHistArray.cxx:108
 AliTRDdEdxCalibHistArray.cxx:109
 AliTRDdEdxCalibHistArray.cxx:110
 AliTRDdEdxCalibHistArray.cxx:111
 AliTRDdEdxCalibHistArray.cxx:112
 AliTRDdEdxCalibHistArray.cxx:113
 AliTRDdEdxCalibHistArray.cxx:114
 AliTRDdEdxCalibHistArray.cxx:115
 AliTRDdEdxCalibHistArray.cxx:116
 AliTRDdEdxCalibHistArray.cxx:117
 AliTRDdEdxCalibHistArray.cxx:118
 AliTRDdEdxCalibHistArray.cxx:119
 AliTRDdEdxCalibHistArray.cxx:120
 AliTRDdEdxCalibHistArray.cxx:121
 AliTRDdEdxCalibHistArray.cxx:122
 AliTRDdEdxCalibHistArray.cxx:123
 AliTRDdEdxCalibHistArray.cxx:124
 AliTRDdEdxCalibHistArray.cxx:125