#include <AliCDBManager.h>
#include <AliOADBContainer.h>
#include <AliTRDCalDet.h>
+#include "AliTRDonlineTrackMatching.h"
#include <AliLog.h>
#include <TTree.h>
AliTenderSupply(),
fESD(NULL),
fESDpid(NULL),
+ fTrdOnlineTrackMatcher(NULL),
fChamberGainOld(NULL),
fChamberGainNew(NULL),
fChamberVdriftOld(NULL),
fHasReferences(kFALSE),
fHasNewCalibration(kTRUE),
fDebugMode(kFALSE),
- fNameRunByRunCorrection()
+ fRedoTrdMatching(kTRUE),
+ fNameRunByRunCorrection(),
+ fNormalizationFactorArray(NULL)
{
//
// default ctor
//
+ memset(fBadChamberID, 0, sizeof(Int_t) * kNChambers);
memset(fSlicesForPID, 0, sizeof(UInt_t) * 2);
}
AliTenderSupply(name,tender),
fESD(NULL),
fESDpid(NULL),
+ fTrdOnlineTrackMatcher(NULL),
fChamberGainOld(NULL),
fChamberGainNew(NULL),
fChamberVdriftOld(NULL),
fHasReferences(kFALSE),
fHasNewCalibration(kTRUE),
fDebugMode(kFALSE),
- fNameRunByRunCorrection()
+ fRedoTrdMatching(kTRUE),
+ fNameRunByRunCorrection(),
+ fNormalizationFactorArray(NULL)
{
//
// named ctor
//
// dtor
//
+ if(fNormalizationFactorArray) delete fNormalizationFactorArray;
+ delete fTrdOnlineTrackMatcher;
}
//_____________________________________________________
//fESDpid->SetTRDslicesForPID(fSlicesForPID[0], fSlicesForPID[1]);
if(fNameRunByRunCorrection.Length()) LoadRunByRunCorrection(fNameRunByRunCorrection.Data());
-
+ fTrdOnlineTrackMatcher=new AliTRDonlineTrackMatching();
// Set Normalisation Factors
if(mgr->GetMCtruthEventHandler()){
// Assume MC
fESD = fTender->GetEvent();
if (!fESD) return;
+ if(fNormalizationFactorArray) fNormalizationFactor = GetNormalizationFactor(fESD->GetRunNumber());\r
Int_t ntracks=fESD->GetNumberOfTracks();
-
+
+
+
+ if (fRedoTrdMatching) {
+ if (!fTrdOnlineTrackMatcher->ProcessEvent(fESD)) {
+ AliError("TRD online track matching failed!");
+ }
+ }
+
+
+
//
// recalculate PID probabilities
//
//
TVectorD *corrfactor = dynamic_cast<TVectorD *>(fRunByRunCorrection->GetObject(fTender->GetRun()));
- if(!corrfactor) AliDebug(2, "Couldn't derive gain correction factor from OADB");
+ if(!corrfactor){
+ // No correction available - simply return\r
+ AliDebug(2, "Couldn't derive gain correction factor from OADB");
+ return;
+ }
else AliDebug(2, Form("Gain factor from OADB %f", (*corrfactor)[0]));
Double_t slice = 0;
for(Int_t ily = 0; ily < kNPlanes; ily++){
}
}
+//_____________________________________________________
+void AliTRDTenderSupply::SetNormalizationFactor(Double_t norm, Int_t runMin, Int_t runMax) {
+ //
+ // Set the normalisation factor for a given run range
+ //
+ if(!fNormalizationFactorArray)
+ fNormalizationFactorArray = new TObjArray;
+ TVectorD *entry = new TVectorD(3);
+ TVectorD &myentry = *entry;
+ myentry(0) = runMin;
+ myentry(1) = runMax;
+ myentry(2) = norm;
+ fNormalizationFactorArray->Add(entry);
+}
+
+//_____________________________________________________
+Double_t AliTRDTenderSupply::GetNormalizationFactor(Int_t runnumber){
+ //
+ // Load the normalization factor\r
+ //
+ Double_t norm = 1.;
+ if(fNormalizationFactorArray){
+ TVectorD *entry;
+ Int_t runMin, runMax;
+ TIter entries(fNormalizationFactorArray);
+ while((entry = dynamic_cast<TVectorD *>(entries()))){
+ TVectorD &myentry = *entry;
+ runMin = TMath::Nint(myentry(0));
+ runMax = TMath::Nint(myentry(1));
+ if(runnumber >= runMin && runnumber <= runMax) norm = myentry(2);
+ }
+ }
+ AliDebug(1, Form("Gain normalization factor: %f\n", norm));
+ return norm;
+}
+
//_____________________________________________________
void AliTRDTenderSupply::MaskChambers(AliESDtrack *const track, const Int_t * const chamberID){
//