#include "AliTRDReconstructor.h"
#include "AliTRDPIDResponse.h"
#include "AliTRDrecoParam.h"
-#include "AliTRDdEdxUtils.h"
+#include "AliTRDdEdxBaseUtils.h"
+#include "AliTRDdEdxCalibHistArray.h"
+#include "AliTRDdEdxCalibUtils.h"
+#include "AliTRDdEdxReconUtils.h"
ClassImp(AliTRDtrackV1)
,fESDid(0)
,fDE(0.)
,fTruncatedMean(0)
+ ,fNchamberdEdx(0)
+ ,fNclusterdEdx(0)
,fkReconstructor(NULL)
,fBackupTrack(NULL)
,fTrackLow(NULL)
,fESDid(ref.fESDid)
,fDE(ref.fDE)
,fTruncatedMean(ref.fTruncatedMean)
+ ,fNchamberdEdx(ref.fNchamberdEdx)
+ ,fNclusterdEdx(ref.fNclusterdEdx)
,fkReconstructor(ref.fkReconstructor)
,fBackupTrack(NULL)
,fTrackLow(NULL)
,fESDid(0)
,fDE(0.)
,fTruncatedMean(0)
+ ,fNchamberdEdx(0)
+ ,fNclusterdEdx(0)
,fkReconstructor(NULL)
,fBackupTrack(NULL)
,fTrackLow(NULL)
,fESDid(0)
,fDE(0.)
,fTruncatedMean(0)
+ ,fNchamberdEdx(0)
+ ,fNclusterdEdx(0)
,fkReconstructor(NULL)
,fBackupTrack(NULL)
,fTrackLow(NULL)
}
pidResponse->GetResponse(nslices, dEdx, trackletP, fPID);
+ static Int_t nprint = 0;
+ if(!nprint){
+ AliTRDdEdxBaseUtils::PrintControl();
+ nprint++;
+ }
+
//do truncated mean
- //ncls needs to be included!! todo!!
- AliTRDdEdxUtils::SetObjPHQ(AliTRDcalibDB::Instance()->GetPHQ());
- const Double_t mag = AliTRDdEdxUtils::IsExBOn() ? GetBz() : -1;
- const Double_t charge = AliTRDdEdxUtils::IsExBOn() ? Charge() : -1;
- fTruncatedMean = CookTruncatedMean(0, mag, charge, kTRUE);
+ AliTRDdEdxCalibUtils::SetObjArray(AliTRDcalibDB::Instance()->GetPHQ());
+ const Double_t mag = AliTRDdEdxBaseUtils::IsExBOn() ? GetBz() : -1;
+ const Double_t charge = AliTRDdEdxBaseUtils::IsExBOn() ? Charge() : -1;
+ fTruncatedMean = CookTruncatedMean(0, mag, charge, kTRUE, fNchamberdEdx, fNclusterdEdx);
return kTRUE;
}
//store truncated mean
track->SetTRDsignal(fTruncatedMean);
+ track->SetTRDNchamberdEdx(fNchamberdEdx);
+ track->SetTRDNclusterdEdx(fNclusterdEdx);
}
//_______________________________________________________________
-Double_t AliTRDtrackV1::CookTruncatedMean(const Bool_t kinvq, const Double_t mag, const Int_t charge, const Int_t kcalib, TVectorD *Qs, TVectorD *Xs, Int_t timeBin0, Int_t timeBin1, Int_t tstep) const
+Double_t AliTRDtrackV1::CookTruncatedMean(const Bool_t kinvq, const Double_t mag, const Int_t charge, const Int_t kcalib, Int_t &nch, Int_t &ncls, TVectorD *Qs, TVectorD *Xs, Int_t timeBin0, Int_t timeBin1, Int_t tstep) const
{
//
//Origin: Xianguo Lu <xianguo.lu@cern.ch>, Marian Ivanov <marian.ivanov@cern.ch>
//
TVectorD arrayQ(200), arrayX(200);
- Int_t ncls = AliTRDdEdxUtils::GetArrayClusterQ(kinvq, &arrayQ, &arrayX, this, timeBin0, timeBin1, tstep);
+ ncls = AliTRDdEdxReconUtils::GetArrayClusterQ(kinvq, &arrayQ, &arrayX, this, timeBin0, timeBin1, tstep);
- const TObjArray *cobj = kcalib ? AliTRDdEdxUtils::GetObjPHQ(kinvq, mag, charge) : NULL;
+ const TObjArray *cobj = kcalib ? AliTRDdEdxCalibUtils::GetObj(kinvq, mag, charge) : NULL;
- const Double_t tmean = AliTRDdEdxUtils::ToyCook(kinvq, ncls, &arrayQ, &arrayX, cobj);
+ const Double_t tmean = AliTRDdEdxReconUtils::ToyCook(kinvq, ncls, &arrayQ, &arrayX, cobj);
- const Int_t nch = AliTRDdEdxUtils::UpdateArrayX(ncls, &arrayX);
+ nch = AliTRDdEdxReconUtils::UpdateArrayX(ncls, &arrayX);
if(Qs && Xs){
(*Qs)=arrayQ;
(*Xs)=arrayX;
}
- return AliTRDdEdxUtils::GetSignal(nch, ncls, tmean);
+ //printf("\ntest %.10f %d %d\n", tmean, nch, ncls);
+
+ return tmean;
}