#include "AliSpectraBothPID.h"
#include "AliAODEvent.h"
#include "TH1F.h"
#include "TH2F.h"
#include "TList.h"
#include "AliAODTrack.h"
#include "AliAODMCParticle.h"
#include "AliPIDResponse.h"
#include "AliAnalysisManager.h"
#include "AliInputEventHandler.h"
#include "AliSpectraBothTrackCuts.h"
ClassImp(AliSpectraBothPID)
AliSpectraBothPID::AliSpectraBothPID() : TNamed("PID", "PID object"), fPIDType(kNSigmacircleTPCTOF), fNSigmaPID(3), fPIDResponse(0),fshiftTPC(0),fshiftTOF(0)
{
}
AliSpectraBothPID::AliSpectraBothPID(BothPIDType_t pidType) : TNamed("PID", "PID object"), fPIDType(pidType), fNSigmaPID(3), fPIDResponse(0), fshiftTPC(0),fshiftTOF(0)
{
}
void AliSpectraBothPID::FillQAHistos(AliSpectraBothHistoManager * hman, AliVTrack * track, AliSpectraBothTrackCuts * trackCuts)
{
if(!fPIDResponse)
{
AliAnalysisManager *man = AliAnalysisManager::GetAnalysisManager();
AliInputEventHandler* inputHandler = (AliInputEventHandler*)(man->GetInputEventHandler());
fPIDResponse = inputHandler->GetPIDResponse();
}
Bool_t ycut[3]={false,false,false};
ycut[0]=trackCuts->CheckYCut ((BothParticleSpecies_t) kSpPion);
ycut[1]=trackCuts->CheckYCut ((BothParticleSpecies_t) kSpKaon);
ycut[2]=trackCuts->CheckYCut ((BothParticleSpecies_t) kSpProton);
AliVParticle *inEvHMain = dynamic_cast<AliVParticle *>(track);
hman->GetPIDHistogram(kHistPIDTPC)->Fill(track->GetTPCmomentum(), track->GetTPCsignal()*track->Charge());
hman->GetPIDHistogram(kHistPIDTPCPion)->Fill(track->GetTPCmomentum(),fPIDResponse->GetTPCResponse().GetExpectedSignal(track->GetTPCmomentum(),AliPID::kPion)*track->Charge());
hman->GetPIDHistogram(kHistPIDTPCKaon)->Fill(track->GetTPCmomentum(),fPIDResponse->GetTPCResponse().GetExpectedSignal(track->GetTPCmomentum(),AliPID::kKaon)*track->Charge());
hman->GetPIDHistogram(kHistPIDTPCProton)->Fill(track->GetTPCmomentum(),fPIDResponse->GetTPCResponse().GetExpectedSignal(track->GetTPCmomentum(),AliPID::kProton)*track->Charge());
Double_t nsigmaTPCkProton = fPIDResponse->NumberOfSigmasTPC(inEvHMain, AliPID::kProton)+fshiftTPC;
Double_t nsigmaTPCkKaon = fPIDResponse->NumberOfSigmasTPC(inEvHMain, AliPID::kKaon)+fshiftTPC;
Double_t nsigmaTPCkPion = fPIDResponse->NumberOfSigmasTPC(inEvHMain, AliPID::kPion)+fshiftTPC;
Double_t nsigmaTOFkProton=100.0,nsigmaTOFkKaon=100.0,nsigmaTOFkPion=100.0;
Double_t nsigmaTPCTOFkProton = TMath::Abs(nsigmaTPCkProton);
Double_t nsigmaTPCTOFkKaon = TMath::Abs(nsigmaTPCkKaon);
Double_t nsigmaTPCTOFkPion = TMath::Abs(nsigmaTPCkPion);
if(fPIDType==kNSigmaTOF)
{
nsigmaTPCTOFkProton = 100.0;
nsigmaTPCTOFkKaon = 100.0;
nsigmaTPCTOFkPion =100.0;
}
Float_t tmppt=TMath::Min(trackCuts->GetPtTOFMatchingPion(),TMath::Min(trackCuts->GetPtTOFMatchingKaon(),trackCuts->GetPtTOFMatchingProton()));
if(track->Pt()>tmppt&&trackCuts->CheckTOFMatchingParticleType(kSpProton)&&trackCuts->CheckTOFMatchingParticleType(kSpKaon)&&trackCuts->CheckTOFMatchingParticleType(kSpPion))
{
hman->GetPIDHistogram(kHistPIDTOF)->Fill(track->P(),(track->GetTOFsignal()/100)*track->Charge());
nsigmaTOFkProton = fPIDResponse->NumberOfSigmasTOF(inEvHMain, AliPID::kProton)+fshiftTOF;
nsigmaTOFkKaon = fPIDResponse->NumberOfSigmasTOF(inEvHMain, AliPID::kKaon)+fshiftTOF;
nsigmaTOFkPion = fPIDResponse->NumberOfSigmasTOF(inEvHMain, AliPID::kPion)+fshiftTOF;
if(ycut[0])
{
hman->GetPtHistogram(kHistNSigPionTOF)->Fill(track->P(),nsigmaTOFkPion );
hman->GetPtHistogram(kHistNSigPionPtTOF)->Fill(track->Pt(),nsigmaTOFkPion );
}
if(ycut[1])
{
hman->GetPtHistogram(kHistNSigKaonTOF)->Fill(track->P(),nsigmaTOFkKaon);
hman->GetPtHistogram(kHistNSigKaonPtTOF)->Fill(track->Pt(),nsigmaTOFkKaon );
}
if(ycut[2])
{
hman->GetPtHistogram(kHistNSigProtonTOF)->Fill(track->P(),nsigmaTOFkProton );
hman->GetPtHistogram(kHistNSigProtonPtTOF)->Fill(track->Pt(),nsigmaTOFkProton );
}
nsigmaTPCTOFkProton = TMath::Sqrt((nsigmaTPCkProton*nsigmaTPCkProton+nsigmaTOFkProton*nsigmaTOFkProton)/2.0);
nsigmaTPCTOFkKaon = TMath::Sqrt((nsigmaTPCkKaon*nsigmaTPCkKaon+nsigmaTOFkKaon*nsigmaTOFkKaon)/2.0);
nsigmaTPCTOFkPion = TMath::Sqrt((nsigmaTPCkPion*nsigmaTPCkPion+nsigmaTOFkPion*nsigmaTOFkPion)/2.0);
}
if(ycut[0])
{
hman->GetPtHistogram(kHistNSigPionTPC)->Fill(track->P(),nsigmaTPCkPion );
hman->GetPtHistogram(kHistNSigPionPtTPC)->Fill(track->Pt(),nsigmaTPCkPion );
hman->GetPtHistogram(kHistNSigPionTPCTOF)->Fill(track->P(),nsigmaTPCTOFkPion);
hman->GetPtHistogram(kHistNSigPionPtTPCTOF)->Fill(track->Pt(),nsigmaTPCTOFkPion);
}
if(ycut[1])
{
hman->GetPtHistogram(kHistNSigKaonTPC)->Fill(track->P(),nsigmaTPCkKaon );
hman->GetPtHistogram(kHistNSigKaonPtTPC)->Fill(track->Pt(),nsigmaTPCkKaon );
hman->GetPtHistogram(kHistNSigKaonTPCTOF)->Fill(track->P(),nsigmaTPCTOFkKaon);
hman->GetPtHistogram(kHistNSigKaonPtTPCTOF)->Fill(track->Pt(),nsigmaTPCTOFkKaon);
}
if(ycut[2])
{
hman->GetPtHistogram(kHistNSigProtonTPC)->Fill(track->P(),nsigmaTPCkProton );
hman->GetPtHistogram(kHistNSigProtonPtTPC)->Fill(track->Pt(),nsigmaTPCkProton );
hman->GetPtHistogram(kHistNSigProtonTPCTOF)->Fill(track->P(),nsigmaTPCTOFkProton);
hman->GetPtHistogram(kHistNSigProtonPtTPCTOF)->Fill(track->Pt(),nsigmaTPCTOFkProton);
}
}
Int_t AliSpectraBothPID::GetParticleSpecie(AliAODMCParticle * part)
{
switch(TMath::Abs(part->PdgCode()))
{
case 2212:
return kSpProton;
break;
case 321:
return kSpKaon;
break;
case 211:
return kSpPion;
break;
default:
return kSpUndefined;
}
}
Int_t AliSpectraBothPID::GetParticleSpecie(TParticle* part)
{
switch(TMath::Abs(part->GetPdgCode()))
{
case 2212:
return kSpProton;
break;
case 321:
return kSpKaon;
break;
case 211:
return kSpPion;
break;
default:
return kSpUndefined;
}
}
Int_t AliSpectraBothPID::GetParticleSpecie(AliSpectraBothHistoManager * hman,AliVTrack * trk, AliSpectraBothTrackCuts * trackCuts, Bool_t* rec)
{
rec[kSpPion]=false;
rec[kSpKaon]=false;
rec[kSpProton]=false;
if(!fPIDResponse)
{
AliAnalysisManager *man = AliAnalysisManager::GetAnalysisManager();
AliInputEventHandler* inputHandler = (AliInputEventHandler*)(man->GetInputEventHandler());
fPIDResponse = inputHandler->GetPIDResponse();
}
if(!fPIDResponse)
{
AliFatal("Cannot get pid response");
return 0;
}
AliVParticle *inEvHMain = dynamic_cast<AliVParticle *>(trk);
Double_t nsigmaTPCkProton = TMath::Abs(fPIDResponse->NumberOfSigmasTPC(inEvHMain, AliPID::kProton)+fshiftTPC);
Double_t nsigmaTPCkKaon = TMath::Abs(fPIDResponse->NumberOfSigmasTPC(inEvHMain, AliPID::kKaon)+fshiftTPC);
Double_t nsigmaTPCkPion = TMath::Abs(fPIDResponse->NumberOfSigmasTPC(inEvHMain, AliPID::kPion)+fshiftTPC);
Double_t nsigmaTOFkProton=0.0;
Double_t nsigmaTOFkKaon=0.0;
Double_t nsigmaTOFkPion=0.0;
Double_t nsigmaTPCTOFkProton = TMath::Abs(nsigmaTPCkProton);
Double_t nsigmaTPCTOFkKaon = TMath::Abs(nsigmaTPCkKaon);
Double_t nsigmaTPCTOFkPion = TMath::Abs(nsigmaTPCkPion);
if(fPIDType==kNSigmaTOF)
{
nsigmaTPCTOFkProton = 10000.0;
nsigmaTPCTOFkKaon = 10000.0;
nsigmaTPCTOFkPion =10000.0;
nsigmaTOFkProton = 10000.0;
nsigmaTOFkKaon = 10000.0;
nsigmaTOFkPion =10000.0;
}
if(trackCuts->GetUseTypeDependedTOFCut())
{
if(trackCuts->CheckTOFMatchingParticleType(kSpPion)&&trk->Pt()>trackCuts->GetPtTOFMatchingPion())
{
nsigmaTOFkPion = TMath::Abs(fPIDResponse->NumberOfSigmasTOF(inEvHMain, AliPID::kPion)+fshiftTOF);
nsigmaTPCTOFkPion = TMath::Sqrt((nsigmaTPCkPion*nsigmaTPCkPion+nsigmaTOFkPion*nsigmaTOFkPion)/2.);
}
else if (trk->Pt()>trackCuts->GetPtTOFMatchingPion())
{
nsigmaTOFkPion = 10000.0;
nsigmaTPCTOFkPion =10000.0;
}
if(trackCuts->CheckTOFMatchingParticleType(kSpKaon)&&trk->Pt()>trackCuts->GetPtTOFMatchingKaon())
{
nsigmaTOFkKaon = TMath::Abs(fPIDResponse->NumberOfSigmasTOF(inEvHMain, AliPID::kKaon)+fshiftTOF);
nsigmaTPCTOFkKaon = TMath::Sqrt((nsigmaTPCkKaon*nsigmaTPCkKaon+nsigmaTOFkKaon*nsigmaTOFkKaon)/2.);
}
else if (trk->Pt()>trackCuts->GetPtTOFMatchingKaon())
{
nsigmaTOFkKaon = 10000.0;
nsigmaTPCTOFkKaon =10000.0;
}
if(trackCuts->CheckTOFMatchingParticleType(kSpProton)&&trk->Pt()>trackCuts->GetPtTOFMatchingProton())
{
nsigmaTOFkProton = TMath::Abs(fPIDResponse->NumberOfSigmasTOF(inEvHMain, AliPID::kProton)+fshiftTOF);
nsigmaTPCTOFkProton = TMath::Sqrt((nsigmaTPCkProton*nsigmaTPCkProton+nsigmaTOFkProton*nsigmaTOFkProton)/2.);
}
else if (trk->Pt()>trackCuts->GetPtTOFMatchingProton())
{
nsigmaTOFkProton = 10000.0;
nsigmaTPCTOFkProton =10000.0;
}
}
else if(trk->Pt()>trackCuts->GetPtTOFMatching())
{
nsigmaTOFkProton = TMath::Abs(fPIDResponse->NumberOfSigmasTOF(inEvHMain, AliPID::kProton)+fshiftTOF);
nsigmaTOFkKaon = TMath::Abs(fPIDResponse->NumberOfSigmasTOF(inEvHMain, AliPID::kKaon)+fshiftTOF);
nsigmaTOFkPion = TMath::Abs(fPIDResponse->NumberOfSigmasTOF(inEvHMain, AliPID::kPion)+fshiftTOF);
nsigmaTPCTOFkProton = TMath::Sqrt((nsigmaTPCkProton*nsigmaTPCkProton+nsigmaTOFkProton*nsigmaTOFkProton)/2.);
nsigmaTPCTOFkKaon = TMath::Sqrt((nsigmaTPCkKaon*nsigmaTPCkKaon+nsigmaTOFkKaon*nsigmaTOFkKaon)/2.);
nsigmaTPCTOFkPion = TMath::Sqrt((nsigmaTPCkPion*nsigmaTPCkPion+nsigmaTOFkPion*nsigmaTOFkPion)/2.);
}
else
{
if (fPIDType==kNSigmaTOF)
return kSpUndefined;
}
Double_t nsigmaPion=10000.0;
Double_t nsigmaKaon=10000.0;
Double_t nsigmaProton=10000.0;
switch (fPIDType)
{
case kNSigmaTPC:
nsigmaProton = nsigmaTPCkProton;
nsigmaKaon = nsigmaTPCkKaon ;
nsigmaPion = nsigmaTPCkPion ;
break;
case kNSigmaTOF:
nsigmaProton = nsigmaTOFkProton;
nsigmaKaon = nsigmaTOFkKaon ;
nsigmaPion = nsigmaTOFkPion ;
break;
case kNSigmacircleTPCTOF:
nsigmaProton = nsigmaTPCTOFkProton;
nsigmaKaon = nsigmaTPCTOFkKaon ;
nsigmaPion = nsigmaTPCTOFkPion ;
break;
case kNSigmasquareTPCTOF:
nsigmaProton = TMath::Max(nsigmaTPCkProton,nsigmaTOFkProton);
nsigmaKaon = TMath::Max(nsigmaTPCkKaon,nsigmaTOFkKaon);
nsigmaPion = TMath::Max(nsigmaTPCkPion,nsigmaTOFkPion) ;
break;
}
if(nsigmaPion < fNSigmaPID)
rec[kSpPion]=true;
if(nsigmaKaon < fNSigmaPID)
rec[kSpKaon]=true;
if(nsigmaProton < fNSigmaPID)
rec[kSpProton]=true;
if( ( nsigmaKaon==nsigmaPion ) && ( nsigmaKaon==nsigmaProton ))
return kSpUndefined;
if( ( nsigmaKaon < nsigmaPion ) && ( nsigmaKaon < nsigmaProton ) && (nsigmaKaon < fNSigmaPID))
{
if(hman->GetPIDHistogram(kHistPIDTPCKaonRec))
hman->GetPIDHistogram(kHistPIDTPCKaonRec)->Fill(trk->GetTPCmomentum(), trk->GetTPCsignal()*trk->Charge());
return kSpKaon;
}
if( ( nsigmaPion < nsigmaKaon ) && ( nsigmaPion < nsigmaProton ) && (nsigmaPion < fNSigmaPID))
{
if(hman->GetPIDHistogram(kHistPIDTPCPionRec))
hman->GetPIDHistogram(kHistPIDTPCPionRec)->Fill(trk->GetTPCmomentum(), trk->GetTPCsignal()*trk->Charge());
return kSpPion;
}
if( ( nsigmaProton < nsigmaKaon ) && ( nsigmaProton < nsigmaPion ) && (nsigmaProton < fNSigmaPID))
{
if(hman->GetPIDHistogram(kHistPIDTPCProtonRec))
hman->GetPIDHistogram(kHistPIDTPCProtonRec)->Fill(trk->GetTPCmomentum(), trk->GetTPCsignal()*trk->Charge());
return kSpProton;
}
return kSpUndefined;
}
Long64_t AliSpectraBothPID::Merge(TCollection* list)
{
Printf("Merging");
if (!list)
return 0;
if (list->IsEmpty())
return 1;
TIterator* iter = list->MakeIterator();
TObject* obj;
Int_t count = 0;
while ((obj = iter->Next())) {
AliSpectraBothPID* entry = dynamic_cast<AliSpectraBothPID*> (obj);
if (entry == 0)
continue;
count++;
}
delete iter;
Printf("OK");
return count+1;
}
AliSpectraBothPID.cxx:100 AliSpectraBothPID.cxx:101 AliSpectraBothPID.cxx:102 AliSpectraBothPID.cxx:103 AliSpectraBothPID.cxx:104 AliSpectraBothPID.cxx:105 AliSpectraBothPID.cxx:106 AliSpectraBothPID.cxx:107 AliSpectraBothPID.cxx:108 AliSpectraBothPID.cxx:109 AliSpectraBothPID.cxx:110 AliSpectraBothPID.cxx:111 AliSpectraBothPID.cxx:112 AliSpectraBothPID.cxx:113 AliSpectraBothPID.cxx:114 AliSpectraBothPID.cxx:115 AliSpectraBothPID.cxx:116 AliSpectraBothPID.cxx:117 AliSpectraBothPID.cxx:118 AliSpectraBothPID.cxx:119 AliSpectraBothPID.cxx:120 AliSpectraBothPID.cxx:121 AliSpectraBothPID.cxx:122 AliSpectraBothPID.cxx:123 AliSpectraBothPID.cxx:124 AliSpectraBothPID.cxx:125 AliSpectraBothPID.cxx:126 AliSpectraBothPID.cxx:127 AliSpectraBothPID.cxx:128 AliSpectraBothPID.cxx:129 AliSpectraBothPID.cxx:130 AliSpectraBothPID.cxx:131 AliSpectraBothPID.cxx:132 AliSpectraBothPID.cxx:133 AliSpectraBothPID.cxx:134 AliSpectraBothPID.cxx:135 AliSpectraBothPID.cxx:136 AliSpectraBothPID.cxx:137 AliSpectraBothPID.cxx:138 AliSpectraBothPID.cxx:139 AliSpectraBothPID.cxx:140 AliSpectraBothPID.cxx:141 AliSpectraBothPID.cxx:142 AliSpectraBothPID.cxx:143 AliSpectraBothPID.cxx:144 AliSpectraBothPID.cxx:145 AliSpectraBothPID.cxx:146 AliSpectraBothPID.cxx:147 AliSpectraBothPID.cxx:148 AliSpectraBothPID.cxx:149 AliSpectraBothPID.cxx:150 AliSpectraBothPID.cxx:151 AliSpectraBothPID.cxx:152 AliSpectraBothPID.cxx:153 AliSpectraBothPID.cxx:154 AliSpectraBothPID.cxx:155 AliSpectraBothPID.cxx:156 AliSpectraBothPID.cxx:157 AliSpectraBothPID.cxx:158 AliSpectraBothPID.cxx:159 AliSpectraBothPID.cxx:160 AliSpectraBothPID.cxx:161 AliSpectraBothPID.cxx:162 AliSpectraBothPID.cxx:163 AliSpectraBothPID.cxx:164 AliSpectraBothPID.cxx:165 AliSpectraBothPID.cxx:166 AliSpectraBothPID.cxx:167 AliSpectraBothPID.cxx:168 AliSpectraBothPID.cxx:169 AliSpectraBothPID.cxx:170 AliSpectraBothPID.cxx:171 AliSpectraBothPID.cxx:172 AliSpectraBothPID.cxx:173 AliSpectraBothPID.cxx:174 AliSpectraBothPID.cxx:175 AliSpectraBothPID.cxx:176 AliSpectraBothPID.cxx:177 AliSpectraBothPID.cxx:178 AliSpectraBothPID.cxx:179 AliSpectraBothPID.cxx:180 AliSpectraBothPID.cxx:181 AliSpectraBothPID.cxx:182 AliSpectraBothPID.cxx:183 AliSpectraBothPID.cxx:184 AliSpectraBothPID.cxx:185 AliSpectraBothPID.cxx:186 AliSpectraBothPID.cxx:187 AliSpectraBothPID.cxx:188 AliSpectraBothPID.cxx:189 AliSpectraBothPID.cxx:190 AliSpectraBothPID.cxx:191 AliSpectraBothPID.cxx:192 AliSpectraBothPID.cxx:193 AliSpectraBothPID.cxx:194 AliSpectraBothPID.cxx:195 AliSpectraBothPID.cxx:196 AliSpectraBothPID.cxx:197 AliSpectraBothPID.cxx:198 AliSpectraBothPID.cxx:199 AliSpectraBothPID.cxx:200 AliSpectraBothPID.cxx:201 AliSpectraBothPID.cxx:202 AliSpectraBothPID.cxx:203 AliSpectraBothPID.cxx:204 AliSpectraBothPID.cxx:205 AliSpectraBothPID.cxx:206 AliSpectraBothPID.cxx:207 AliSpectraBothPID.cxx:208 AliSpectraBothPID.cxx:209 AliSpectraBothPID.cxx:210 AliSpectraBothPID.cxx:211 AliSpectraBothPID.cxx:212 AliSpectraBothPID.cxx:213 AliSpectraBothPID.cxx:214 AliSpectraBothPID.cxx:215 AliSpectraBothPID.cxx:216 AliSpectraBothPID.cxx:217 AliSpectraBothPID.cxx:218 AliSpectraBothPID.cxx:219 AliSpectraBothPID.cxx:220 AliSpectraBothPID.cxx:221 AliSpectraBothPID.cxx:222 AliSpectraBothPID.cxx:223 AliSpectraBothPID.cxx:224 AliSpectraBothPID.cxx:225 AliSpectraBothPID.cxx:226 AliSpectraBothPID.cxx:227 AliSpectraBothPID.cxx:228 AliSpectraBothPID.cxx:229 AliSpectraBothPID.cxx:230 AliSpectraBothPID.cxx:231 AliSpectraBothPID.cxx:232 AliSpectraBothPID.cxx:233 AliSpectraBothPID.cxx:234 AliSpectraBothPID.cxx:235 AliSpectraBothPID.cxx:236 AliSpectraBothPID.cxx:237 AliSpectraBothPID.cxx:238 AliSpectraBothPID.cxx:239 AliSpectraBothPID.cxx:240 AliSpectraBothPID.cxx:241 AliSpectraBothPID.cxx:242 AliSpectraBothPID.cxx:243 AliSpectraBothPID.cxx:244 AliSpectraBothPID.cxx:245 AliSpectraBothPID.cxx:246 AliSpectraBothPID.cxx:247 AliSpectraBothPID.cxx:248 AliSpectraBothPID.cxx:249 AliSpectraBothPID.cxx:250 AliSpectraBothPID.cxx:251 AliSpectraBothPID.cxx:252 AliSpectraBothPID.cxx:253 AliSpectraBothPID.cxx:254 AliSpectraBothPID.cxx:255 AliSpectraBothPID.cxx:256 AliSpectraBothPID.cxx:257 AliSpectraBothPID.cxx:258 AliSpectraBothPID.cxx:259 AliSpectraBothPID.cxx:260 AliSpectraBothPID.cxx:261 AliSpectraBothPID.cxx:262 AliSpectraBothPID.cxx:263 AliSpectraBothPID.cxx:264 AliSpectraBothPID.cxx:265 AliSpectraBothPID.cxx:266 AliSpectraBothPID.cxx:267 AliSpectraBothPID.cxx:268 AliSpectraBothPID.cxx:269 AliSpectraBothPID.cxx:270 AliSpectraBothPID.cxx:271 AliSpectraBothPID.cxx:272 AliSpectraBothPID.cxx:273 AliSpectraBothPID.cxx:274 AliSpectraBothPID.cxx:275 AliSpectraBothPID.cxx:276 AliSpectraBothPID.cxx:277 AliSpectraBothPID.cxx:278 AliSpectraBothPID.cxx:279 AliSpectraBothPID.cxx:280 AliSpectraBothPID.cxx:281 AliSpectraBothPID.cxx:282 AliSpectraBothPID.cxx:283 AliSpectraBothPID.cxx:284 AliSpectraBothPID.cxx:285 AliSpectraBothPID.cxx:286 AliSpectraBothPID.cxx:287 AliSpectraBothPID.cxx:288 AliSpectraBothPID.cxx:289 AliSpectraBothPID.cxx:290 AliSpectraBothPID.cxx:291 AliSpectraBothPID.cxx:292 AliSpectraBothPID.cxx:293 AliSpectraBothPID.cxx:294 AliSpectraBothPID.cxx:295 AliSpectraBothPID.cxx:296 AliSpectraBothPID.cxx:297 AliSpectraBothPID.cxx:298 AliSpectraBothPID.cxx:299 AliSpectraBothPID.cxx:300 AliSpectraBothPID.cxx:301 AliSpectraBothPID.cxx:302 AliSpectraBothPID.cxx:303 AliSpectraBothPID.cxx:304 AliSpectraBothPID.cxx:305 AliSpectraBothPID.cxx:306 AliSpectraBothPID.cxx:307 AliSpectraBothPID.cxx:308 AliSpectraBothPID.cxx:309 AliSpectraBothPID.cxx:310 AliSpectraBothPID.cxx:311 AliSpectraBothPID.cxx:312 AliSpectraBothPID.cxx:313 AliSpectraBothPID.cxx:314 AliSpectraBothPID.cxx:315 AliSpectraBothPID.cxx:316 AliSpectraBothPID.cxx:317 AliSpectraBothPID.cxx:318 AliSpectraBothPID.cxx:319 AliSpectraBothPID.cxx:320 AliSpectraBothPID.cxx:321 AliSpectraBothPID.cxx:322 AliSpectraBothPID.cxx:323 AliSpectraBothPID.cxx:324 AliSpectraBothPID.cxx:325 AliSpectraBothPID.cxx:326 AliSpectraBothPID.cxx:327 AliSpectraBothPID.cxx:328 AliSpectraBothPID.cxx:329 AliSpectraBothPID.cxx:330 AliSpectraBothPID.cxx:331 AliSpectraBothPID.cxx:332 AliSpectraBothPID.cxx:333 AliSpectraBothPID.cxx:334 AliSpectraBothPID.cxx:335 AliSpectraBothPID.cxx:336 AliSpectraBothPID.cxx:337 AliSpectraBothPID.cxx:338 AliSpectraBothPID.cxx:339 AliSpectraBothPID.cxx:340 AliSpectraBothPID.cxx:341 AliSpectraBothPID.cxx:342 AliSpectraBothPID.cxx:343 AliSpectraBothPID.cxx:344 AliSpectraBothPID.cxx:345 AliSpectraBothPID.cxx:346 AliSpectraBothPID.cxx:347 AliSpectraBothPID.cxx:348 AliSpectraBothPID.cxx:349 AliSpectraBothPID.cxx:350 AliSpectraBothPID.cxx:351 AliSpectraBothPID.cxx:352 AliSpectraBothPID.cxx:353 AliSpectraBothPID.cxx:354 AliSpectraBothPID.cxx:355 AliSpectraBothPID.cxx:356 AliSpectraBothPID.cxx:357 AliSpectraBothPID.cxx:358 AliSpectraBothPID.cxx:359 AliSpectraBothPID.cxx:360 AliSpectraBothPID.cxx:361 AliSpectraBothPID.cxx:362 AliSpectraBothPID.cxx:363 AliSpectraBothPID.cxx:364 AliSpectraBothPID.cxx:365 AliSpectraBothPID.cxx:366 AliSpectraBothPID.cxx:367 AliSpectraBothPID.cxx:368 AliSpectraBothPID.cxx:369 AliSpectraBothPID.cxx:370 AliSpectraBothPID.cxx:371 AliSpectraBothPID.cxx:372 AliSpectraBothPID.cxx:373 AliSpectraBothPID.cxx:374 AliSpectraBothPID.cxx:375 AliSpectraBothPID.cxx:376 AliSpectraBothPID.cxx:377 AliSpectraBothPID.cxx:378 AliSpectraBothPID.cxx:379 AliSpectraBothPID.cxx:380