fSAOnePointTracks(kFALSE),
fSAUseAllClusters(kFALSE),
fMaxSPDcontrForSAToUseAllClusters(1000000),
+fSAUsedEdxInfo(kFALSE),
fSelectBestMIP03(kFALSE),
fFlagFakes(kFALSE),
fUseImproveKalman(kFALSE),
void SetMaxSPDcontrForSAToUseAllClusters(Int_t contr=50) { fMaxSPDcontrForSAToUseAllClusters=contr; return; }
Int_t GetMaxSPDcontrForSAToUseAllClusters() const { return fMaxSPDcontrForSAToUseAllClusters; }
+ void SetSAUsedEdxInfo(Bool_t opt=kTRUE) { fSAUsedEdxInfo=opt; return; }
+ Bool_t GetSAUsedEdxInfo() const { return fSAUsedEdxInfo; }
+
void SetFindV0s(Bool_t find=kTRUE) { fFindV0s=find; return; }
Bool_t GetFindV0s() const { return fFindV0s; }
Bool_t fSAOnePointTracks; // one-cluster tracks in SA (only for cosmics!)
Bool_t fSAUseAllClusters; // do not skip clusters used by MI (same track twice in AliESDEvent!)
Int_t fMaxSPDcontrForSAToUseAllClusters; // maximum nContr of SPD vertex for which trackerSA will reuse all ITS clusters
+ Bool_t fSAUsedEdxInfo; // use/not use dE/dx in ITS for assign mass hypothesis
Bool_t fSelectBestMIP03; // (MI) Multiply norm chi2 by interpolated one in hypthesis analysis
Bool_t fFlagFakes; // (MI) preform shared cluster analysis and flag candidates for fakes
AliITSRecoParam(const AliITSRecoParam & param);
AliITSRecoParam & operator=(const AliITSRecoParam ¶m);
- ClassDef(AliITSRecoParam,37) // ITS reco parameters
+ ClassDef(AliITSRecoParam,38) // ITS reco parameters
};
#endif
fDebugStreamer(0),
fITSChannelStatus(0),
fkDetTypeRec(0),
-fPlaneEff(0) {
+fPlaneEff(0),
+fITSPid(0)
+
+ {
//Default constructor
Int_t i;
for(i=0;i<4;i++) fSPDdetzcentre[i]=0.;
fOriginal.SetOwner();
for(i=0;i<AliITSgeomTGeo::kNLayers;i++)fForceSkippingOfLayer[i]=0;
for(i=0;i<100000;i++)fBestTrackIndex[i]=0;
+ fITSPid=new AliITSPIDResponse();
}
//------------------------------------------------------------------------
fDebugStreamer(0),
fITSChannelStatus(0),
fkDetTypeRec(0),
-fPlaneEff(0) {
+fPlaneEff(0),
+fITSPid(0) {
//--------------------------------------------------------------------
//This is the AliITStrackerMI constructor
//--------------------------------------------------------------------
fFlagFakes = AliITSReconstructor::GetRecoParam()->GetFlagFakes();
fUseImproveKalman = AliITSReconstructor::GetRecoParam()->GetUseImproveKalman();
//
+ fITSPid=new AliITSPIDResponse();
}
/*
//------------------------------------------------------------------------
}
if(fITSChannelStatus) delete fITSChannelStatus;
if(fPlaneEff) delete fPlaneEff;
+ if(fITSPid) delete fITSPid;
+
}
//------------------------------------------------------------------------
void AliITStrackerMI::ReadBadFromDetTypeRec() {
#include "AliITSRecPoint.h"
#include "AliTracker.h"
#include "AliRefArray.h"
+#include "AliITSPIDResponse.h"
//-------------------------------------------------------------------------
class AliITStrackerMI : public AliTracker {
new(&fTrackToFollow) AliITStrackMI(t);
}
void CookdEdx(AliITStrackMI* track);
+
+ Int_t GetParticleId(const AliESDtrack* track) const{
+ ULong_t trStatus=track->GetStatus();
+ Bool_t isSA=kTRUE;
+ if(trStatus&AliESDtrack::kTPCin) isSA=kFALSE;
+ return fITSPid->GetParticleIdFromdEdxVsP(track->P(),track->GetITSsignal(),isSA);
+ }
+ Int_t GetParticleId(const AliITStrackV2* track) const{
+ if(track->GetESDtrack()) return GetParticleId(track->GetESDtrack());
+ return fITSPid->GetParticleIdFromdEdxVsP(track->P(),track->GetdEdx(),kFALSE);
+ }
+
Double_t GetNormalizedChi2(AliITStrackMI * track, Int_t mode);
Double_t GetTruncatedChi2(const AliITStrackMI * track, Float_t fac);
Double_t NormalizedChi2(AliITStrackMI * track, Int_t layer);
AliITSChannelStatus *fITSChannelStatus;//! bitmaps with channel status for SPD and SDD
const AliITSDetTypeRec *fkDetTypeRec; //! ITS det type rec, from AliITSReconstructor
AliITSPlaneEff *fPlaneEff; //! Pointer to the ITS plane efficicency
+ AliITSPIDResponse *fITSPid; //! parameters for ITS pid
//
private:
AliITStrackerMI(const AliITStrackerMI &tracker);
AliITStrackerMI & operator=(const AliITStrackerMI &tracker);
- ClassDef(AliITStrackerMI,9) //ITS tracker MI
+ ClassDef(AliITStrackerMI,10) //ITS tracker MI
};
Double_t sdedx[4]={0.,0.,0.,0.};
for(Int_t i=0; i<4; i++) sdedx[i]=t->GetSampledEdx(i);
outtrack.SetITSdEdxSamples(sdedx);
+
+
+ if(AliITSReconstructor::GetRecoParam()->GetSAUsedEdxInfo()){
+ Double_t mom=t->P();
+ Double_t ppid[AliPID::kSPECIES];
+ for(Int_t isp=0;isp<AliPID::kSPECIES;isp++) ppid[isp]=0.;
+ ppid[AliPID::kPion]=1.;
+ if(mom<0.7){
+ Double_t truncmean=t->GetdEdx();
+ Int_t ide=fITSPid->GetParticleIdFromdEdxVsP(mom,truncmean,kTRUE);
+ if(ide==AliPID::kProton){
+ ppid[AliPID::kProton]=1.;
+ ppid[AliPID::kPion]=0.;
+ }
+ else if(ide==AliPID::kKaon){
+ ppid[AliPID::kKaon]=1.;
+ ppid[AliPID::kPion]=0.;
+ }
+ }
+ outtrack.SetITSpid(ppid);
+ outtrack.SetESDpid(ppid);
+ }
event->AddTrack(&outtrack);
return;