#include "TObjArray.h"
#include "AliLog.h"
#include "AliTRDPIDReference.h"
ClassImp(AliTRDPIDReference)
AliTRDPIDReference::AliTRDPIDReference():
TNamed(),
fRefContainer(NULL),
fMomentumBins()
{
SetBit(kIsOwner, kTRUE);
}
AliTRDPIDReference::AliTRDPIDReference(const Char_t *name):
TNamed(name, "TRD PID References"),
fRefContainer(NULL),
fMomentumBins()
{
SetBit(kIsOwner, kTRUE);
}
AliTRDPIDReference::AliTRDPIDReference(const AliTRDPIDReference &ref):
TNamed(ref),
fRefContainer(NULL),
fMomentumBins(ref.fMomentumBins)
{
fRefContainer = new TObjArray(fMomentumBins.GetSize() * AliPID::kSPECIES);
fRefContainer->SetOwner();
for(Int_t ip = 0; ip < GetNumberOfMomentumBins(); ip++){
for(Int_t is = 0; is < 5; is++){
Int_t ent=is * fMomentumBins.GetSize() + ip;
TObject *obj=ref.fRefContainer->At(ent);
if(obj){
fRefContainer->AddAt(obj->Clone(),ent);
}
}
}
SetBit(kIsOwner, kTRUE);
}
AliTRDPIDReference &AliTRDPIDReference::operator=(const AliTRDPIDReference &ref){
if(this != &ref){
TNamed::operator=(ref);
if(TestBit(kIsOwner) && fRefContainer) delete fRefContainer;
fRefContainer = ref.fRefContainer;
fMomentumBins = ref.fMomentumBins;
SetBit(kIsOwner, kFALSE);
}
return *this;
}
AliTRDPIDReference::~AliTRDPIDReference(){
if(fRefContainer && TestBit(kIsOwner)) delete fRefContainer;
}
void AliTRDPIDReference::SetNumberOfMomentumBins(Int_t nBins, Float_t *momenta){
if(fRefContainer) fRefContainer->Clear();
else{
fRefContainer = new TObjArray;
fRefContainer->SetOwner();
}
fRefContainer->Expand(nBins * AliPID::kSPECIES);
fMomentumBins.Set(nBins,momenta);
}
void AliTRDPIDReference::AddReference(TObject *ref, AliPID::EParticleType spec, Int_t pbin){
if(!fRefContainer){
AliError("Reference Container not initialized");
return;
}
if(pbin > fMomentumBins.GetSize()){
AliError("Pbin overflow");
return;
}
AliDebug(1, Form("Adding object with address %p to position %d", ref, spec * fMomentumBins.GetSize() + pbin));
fRefContainer->AddAt(ref->Clone(), spec * fMomentumBins.GetSize() + pbin);
}
TObject *AliTRDPIDReference::GetUpperReference(AliPID::EParticleType spec, Float_t p, Float_t &pUpper) const{
Int_t bin = -1;
pUpper = 20;
for(Int_t ip = 0; ip < fMomentumBins.GetSize(); ip++){
AliDebug(10, Form("Bin %d, p = %.1f", ip, fMomentumBins[ip]));
if(p < fMomentumBins[ip]){
AliDebug(10, "Bin found");
bin = ip;
break;
}
}
AliDebug(2, Form("p = %.1f, bin = %d\n", p, bin));
if(bin >= 0) {
pUpper = fMomentumBins[bin];
return fRefContainer->At(spec * fMomentumBins.GetSize() + bin);
}
else return NULL;
}
TObject *AliTRDPIDReference::GetLowerReference(AliPID::EParticleType spec, Float_t p, Float_t &pLower) const{
Int_t bin = -1;
pLower = 0;
for(Int_t ip = fMomentumBins.GetSize() - 1; ip >= 0; ip--){
AliDebug(10, Form("Bin %d, p = %.1f", ip, fMomentumBins[ip]));
if(p > fMomentumBins[ip]){
AliDebug(10, "Bin found");
bin = ip;
break;
}
}
AliDebug(2, Form("p = %.1f, bin = %d\n", p, bin));
if(bin >= 0){
pLower = fMomentumBins[bin];
return fRefContainer->At(spec * fMomentumBins.GetSize() + bin);
}
else return NULL;
}
void AliTRDPIDReference::Print(const Option_t*) const{
printf("Number of Momentum Bins: %d\n", GetNumberOfMomentumBins());
printf("=====================================\n");
for(Int_t ip = 0; ip < GetNumberOfMomentumBins(); ip++){
printf("Bin %d: p = %.1f\n", ip, fMomentumBins[ip]);
}
printf("=====================================\n");
if(fRefContainer){
printf("Content of the reference container:\n");
for(Int_t ip = 0; ip < GetNumberOfMomentumBins(); ip++){
printf("[");
for(Int_t is = 0; is < 5; is++) printf("%p|", fRefContainer->At(is * fMomentumBins.GetSize() + ip));
printf("]\n");
}
}
}
AliTRDPIDReference.cxx:10 AliTRDPIDReference.cxx:11 AliTRDPIDReference.cxx:12 AliTRDPIDReference.cxx:13 AliTRDPIDReference.cxx:14 AliTRDPIDReference.cxx:15 AliTRDPIDReference.cxx:16 AliTRDPIDReference.cxx:17 AliTRDPIDReference.cxx:18 AliTRDPIDReference.cxx:19 AliTRDPIDReference.cxx:20 AliTRDPIDReference.cxx:21 AliTRDPIDReference.cxx:22 AliTRDPIDReference.cxx:23 AliTRDPIDReference.cxx:24 AliTRDPIDReference.cxx:25 AliTRDPIDReference.cxx:26 AliTRDPIDReference.cxx:27 AliTRDPIDReference.cxx:28 AliTRDPIDReference.cxx:29 AliTRDPIDReference.cxx:30 AliTRDPIDReference.cxx:31 AliTRDPIDReference.cxx:32 AliTRDPIDReference.cxx:33 AliTRDPIDReference.cxx:34 AliTRDPIDReference.cxx:35 AliTRDPIDReference.cxx:36 AliTRDPIDReference.cxx:37 AliTRDPIDReference.cxx:38 AliTRDPIDReference.cxx:39 AliTRDPIDReference.cxx:40 AliTRDPIDReference.cxx:41 AliTRDPIDReference.cxx:42 AliTRDPIDReference.cxx:43 AliTRDPIDReference.cxx:44 AliTRDPIDReference.cxx:45 AliTRDPIDReference.cxx:46 AliTRDPIDReference.cxx:47 AliTRDPIDReference.cxx:48 AliTRDPIDReference.cxx:49 AliTRDPIDReference.cxx:50 AliTRDPIDReference.cxx:51 AliTRDPIDReference.cxx:52 AliTRDPIDReference.cxx:53 AliTRDPIDReference.cxx:54 AliTRDPIDReference.cxx:55 AliTRDPIDReference.cxx:56 AliTRDPIDReference.cxx:57 AliTRDPIDReference.cxx:58 AliTRDPIDReference.cxx:59 AliTRDPIDReference.cxx:60 AliTRDPIDReference.cxx:61 AliTRDPIDReference.cxx:62 AliTRDPIDReference.cxx:63 AliTRDPIDReference.cxx:64 AliTRDPIDReference.cxx:65 AliTRDPIDReference.cxx:66 AliTRDPIDReference.cxx:67 AliTRDPIDReference.cxx:68 AliTRDPIDReference.cxx:69 AliTRDPIDReference.cxx:70 AliTRDPIDReference.cxx:71 AliTRDPIDReference.cxx:72 AliTRDPIDReference.cxx:73 AliTRDPIDReference.cxx:74 AliTRDPIDReference.cxx:75 AliTRDPIDReference.cxx:76 AliTRDPIDReference.cxx:77 AliTRDPIDReference.cxx:78 AliTRDPIDReference.cxx:79 AliTRDPIDReference.cxx:80 AliTRDPIDReference.cxx:81 AliTRDPIDReference.cxx:82 AliTRDPIDReference.cxx:83 AliTRDPIDReference.cxx:84 AliTRDPIDReference.cxx:85 AliTRDPIDReference.cxx:86 AliTRDPIDReference.cxx:87 AliTRDPIDReference.cxx:88 AliTRDPIDReference.cxx:89 AliTRDPIDReference.cxx:90 AliTRDPIDReference.cxx:91 AliTRDPIDReference.cxx:92 AliTRDPIDReference.cxx:93 AliTRDPIDReference.cxx:94 AliTRDPIDReference.cxx:95 AliTRDPIDReference.cxx:96 AliTRDPIDReference.cxx:97 AliTRDPIDReference.cxx:98 AliTRDPIDReference.cxx:99 AliTRDPIDReference.cxx:100 AliTRDPIDReference.cxx:101 AliTRDPIDReference.cxx:102 AliTRDPIDReference.cxx:103 AliTRDPIDReference.cxx:104 AliTRDPIDReference.cxx:105 AliTRDPIDReference.cxx:106 AliTRDPIDReference.cxx:107 AliTRDPIDReference.cxx:108 AliTRDPIDReference.cxx:109 AliTRDPIDReference.cxx:110 AliTRDPIDReference.cxx:111 AliTRDPIDReference.cxx:112 AliTRDPIDReference.cxx:113 AliTRDPIDReference.cxx:114 AliTRDPIDReference.cxx:115 AliTRDPIDReference.cxx:116 AliTRDPIDReference.cxx:117 AliTRDPIDReference.cxx:118 AliTRDPIDReference.cxx:119 AliTRDPIDReference.cxx:120 AliTRDPIDReference.cxx:121 AliTRDPIDReference.cxx:122 AliTRDPIDReference.cxx:123 AliTRDPIDReference.cxx:124 AliTRDPIDReference.cxx:125 AliTRDPIDReference.cxx:126 AliTRDPIDReference.cxx:127 AliTRDPIDReference.cxx:128 AliTRDPIDReference.cxx:129 AliTRDPIDReference.cxx:130 AliTRDPIDReference.cxx:131 AliTRDPIDReference.cxx:132 AliTRDPIDReference.cxx:133 AliTRDPIDReference.cxx:134 AliTRDPIDReference.cxx:135 AliTRDPIDReference.cxx:136 AliTRDPIDReference.cxx:137 AliTRDPIDReference.cxx:138 AliTRDPIDReference.cxx:139 AliTRDPIDReference.cxx:140 AliTRDPIDReference.cxx:141 AliTRDPIDReference.cxx:142 AliTRDPIDReference.cxx:143 AliTRDPIDReference.cxx:144 AliTRDPIDReference.cxx:145 AliTRDPIDReference.cxx:146 AliTRDPIDReference.cxx:147 AliTRDPIDReference.cxx:148 AliTRDPIDReference.cxx:149 AliTRDPIDReference.cxx:150 AliTRDPIDReference.cxx:151 AliTRDPIDReference.cxx:152 AliTRDPIDReference.cxx:153 AliTRDPIDReference.cxx:154 AliTRDPIDReference.cxx:155 AliTRDPIDReference.cxx:156 AliTRDPIDReference.cxx:157 AliTRDPIDReference.cxx:158 AliTRDPIDReference.cxx:159 AliTRDPIDReference.cxx:160 AliTRDPIDReference.cxx:161 AliTRDPIDReference.cxx:162 AliTRDPIDReference.cxx:163 AliTRDPIDReference.cxx:164 AliTRDPIDReference.cxx:165 AliTRDPIDReference.cxx:166 AliTRDPIDReference.cxx:167 AliTRDPIDReference.cxx:168 AliTRDPIDReference.cxx:169 AliTRDPIDReference.cxx:170 AliTRDPIDReference.cxx:171 AliTRDPIDReference.cxx:172 AliTRDPIDReference.cxx:173 AliTRDPIDReference.cxx:174 AliTRDPIDReference.cxx:175 AliTRDPIDReference.cxx:176 AliTRDPIDReference.cxx:177 AliTRDPIDReference.cxx:178 AliTRDPIDReference.cxx:179 AliTRDPIDReference.cxx:180 AliTRDPIDReference.cxx:181 AliTRDPIDReference.cxx:182 AliTRDPIDReference.cxx:183 AliTRDPIDReference.cxx:184 AliTRDPIDReference.cxx:185 AliTRDPIDReference.cxx:186 AliTRDPIDReference.cxx:187 AliTRDPIDReference.cxx:188 AliTRDPIDReference.cxx:189 AliTRDPIDReference.cxx:190 AliTRDPIDReference.cxx:191 AliTRDPIDReference.cxx:192 AliTRDPIDReference.cxx:193 AliTRDPIDReference.cxx:194 AliTRDPIDReference.cxx:195 AliTRDPIDReference.cxx:196 AliTRDPIDReference.cxx:197 AliTRDPIDReference.cxx:198 AliTRDPIDReference.cxx:199 AliTRDPIDReference.cxx:200 AliTRDPIDReference.cxx:201 AliTRDPIDReference.cxx:202 AliTRDPIDReference.cxx:203 AliTRDPIDReference.cxx:204 AliTRDPIDReference.cxx:205 AliTRDPIDReference.cxx:206 AliTRDPIDReference.cxx:207 AliTRDPIDReference.cxx:208 AliTRDPIDReference.cxx:209 AliTRDPIDReference.cxx:210 AliTRDPIDReference.cxx:211