From: morsch Date: Fri, 8 Mar 2013 14:51:29 +0000 (+0000) Subject: TRD Updates X-Git-Url: http://git.uio.no/git/?a=commitdiff_plain;h=c508f6bdb1cf0e66da66c5de5ff8392b0942d6ca;p=u%2Fmrichter%2FAliRoot.git TRD Updates Yvonne Pachmayer --- diff --git a/ANALYSIS/CMakelibTENDERSupplies.pkg b/ANALYSIS/CMakelibTENDERSupplies.pkg index 00948dcafe4..ef7be9029cc 100644 --- a/ANALYSIS/CMakelibTENDERSupplies.pkg +++ b/ANALYSIS/CMakelibTENDERSupplies.pkg @@ -44,4 +44,4 @@ string ( REPLACE ".cxx" ".h" HDRS "${SRCS}") set ( DHDR TenderSuppliesLinkDef.h) -set ( EINCLUDE ANALYSIS ANALYSIS/Tender TOF TRD/Cal VZERO ANALYSIS/TenderSupplies TPC TPC/Base T0 OADB EMCAL STEER/STEER STEER/CDB STEER/ESD STEER/STEERBase) +set ( EINCLUDE ANALYSIS ANALYSIS/Tender TOF TRD/Cal VZERO ANALYSIS/TenderSupplies TPC TRD T0 OADB EMCAL STEER/STEER STEER/CDB STEER/ESD STEER/STEERBase TPC/Base) diff --git a/ANALYSIS/TenderSupplies/AddTaskTender.C b/ANALYSIS/TenderSupplies/AddTaskTender.C index 5e3e6ef01aa..5f90b886417 100644 --- a/ANALYSIS/TenderSupplies/AddTaskTender.C +++ b/ANALYSIS/TenderSupplies/AddTaskTender.C @@ -80,10 +80,11 @@ AliAnalysisTask *AddTaskTender(Bool_t useV0=kFALSE, if (useTRD) { AliTRDTenderSupply *trdSupply=new AliTRDTenderSupply("TRDtender"); - trdSupply->SetLoadDeadChambersFromCDB(); // Mask Bad chambers + trdSupply->SetLoadDeadChambersFromCDB(); // Mask Bad chambers trdSupply->SetPIDmethod(AliTRDTenderSupply::k1DLQpid); - trdSupply->SwitchOffGainCorrection(); // Correction only on pass 1 - trdSupply->SetNormalizationFactor(0.12697,114737,130850); // 1 otherwise + trdSupply->SwitchOffGainCorrection(); // Correction only on pass 1 + trdSupply->SetNormalizationFactor(0.12697,114737,130850); // 1 otherwise + trdSupply->SetRedoTRDMatching(kTRUE); tender->AddSupply(trdSupply); } diff --git a/ANALYSIS/TenderSupplies/AliTRDTenderSupply.cxx b/ANALYSIS/TenderSupplies/AliTRDTenderSupply.cxx index 4e9dd467ccf..5c8b2743e81 100644 --- a/ANALYSIS/TenderSupplies/AliTRDTenderSupply.cxx +++ b/ANALYSIS/TenderSupplies/AliTRDTenderSupply.cxx @@ -34,6 +34,7 @@ #include #include #include +#include "AliTRDonlineTrackMatching.h" #include #include @@ -61,6 +62,7 @@ AliTRDTenderSupply::AliTRDTenderSupply() : AliTenderSupply(), fESD(NULL), fESDpid(NULL), + fTrdOnlineTrackMatcher(NULL), fChamberGainOld(NULL), fChamberGainNew(NULL), fChamberVdriftOld(NULL), @@ -78,13 +80,14 @@ AliTRDTenderSupply::AliTRDTenderSupply() : fHasReferences(kFALSE), fHasNewCalibration(kTRUE), fDebugMode(kFALSE), - fNameRunByRunCorrection(), - fNormalizationFactorArray(NULL) + fRedoTrdMatching(kTRUE), + fNameRunByRunCorrection(), + fNormalizationFactorArray(NULL) { // // default ctor // - memset(fBadChamberID, 0, sizeof(Int_t) * kNChambers); + memset(fBadChamberID, 0, sizeof(Int_t) * kNChambers); memset(fSlicesForPID, 0, sizeof(UInt_t) * 2); } @@ -93,6 +96,7 @@ AliTRDTenderSupply::AliTRDTenderSupply(const char *name, const AliTender *tender AliTenderSupply(name,tender), fESD(NULL), fESDpid(NULL), + fTrdOnlineTrackMatcher(NULL), fChamberGainOld(NULL), fChamberGainNew(NULL), fChamberVdriftOld(NULL), @@ -110,8 +114,9 @@ AliTRDTenderSupply::AliTRDTenderSupply(const char *name, const AliTender *tender fHasReferences(kFALSE), fHasNewCalibration(kTRUE), fDebugMode(kFALSE), - fNameRunByRunCorrection(), - fNormalizationFactorArray(NULL) + fRedoTrdMatching(kTRUE), + fNameRunByRunCorrection(), + fNormalizationFactorArray(NULL) { // // named ctor @@ -126,7 +131,8 @@ AliTRDTenderSupply::~AliTRDTenderSupply() // // dtor // - if(fNormalizationFactorArray) delete fNormalizationFactorArray; + if(fNormalizationFactorArray) delete fNormalizationFactorArray; + delete fTrdOnlineTrackMatcher; } //_____________________________________________________ @@ -150,7 +156,7 @@ void AliTRDTenderSupply::Init() //fESDpid->SetTRDslicesForPID(fSlicesForPID[0], fSlicesForPID[1]); if(fNameRunByRunCorrection.Length()) LoadRunByRunCorrection(fNameRunByRunCorrection.Data()); - + fTrdOnlineTrackMatcher=new AliTRDonlineTrackMatching(); // Set Normalisation Factors if(mgr->GetMCtruthEventHandler()){ // Assume MC @@ -191,7 +197,17 @@ void AliTRDTenderSupply::ProcessEvent() if (!fESD) return; if(fNormalizationFactorArray) fNormalizationFactor = GetNormalizationFactor(fESD->GetRunNumber()); Int_t ntracks=fESD->GetNumberOfTracks(); - + + + + if (fRedoTrdMatching) { + if (!fTrdOnlineTrackMatcher->ProcessEvent(fESD)) { + AliError("TRD online track matching failed!"); + } + } + + + // // recalculate PID probabilities // @@ -473,11 +489,11 @@ void AliTRDTenderSupply::ApplyRunByRunCorrection(AliESDtrack *const track) { // TVectorD *corrfactor = dynamic_cast(fRunByRunCorrection->GetObject(fTender->GetRun())); - if(!corrfactor){ + if(!corrfactor){ // No correction available - simply return - AliDebug(2, "Couldn't derive gain correction factor from OADB"); - return; - } + 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++){ @@ -488,42 +504,42 @@ void AliTRDTenderSupply::ApplyRunByRunCorrection(AliESDtrack *const track) { track->SetTRDslice(slice, ily, islice); } } -} - -//_____________________________________________________ -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){ - // +} + +//_____________________________________________________ +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 - // - Double_t norm = 1.; - if(fNormalizationFactorArray){ - TVectorD *entry; - Int_t runMin, runMax; - TIter entries(fNormalizationFactorArray); - while((entry = dynamic_cast(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; + // + Double_t norm = 1.; + if(fNormalizationFactorArray){ + TVectorD *entry; + Int_t runMin, runMax; + TIter entries(fNormalizationFactorArray); + while((entry = dynamic_cast(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; } //_____________________________________________________ diff --git a/ANALYSIS/TenderSupplies/AliTRDTenderSupply.h b/ANALYSIS/TenderSupplies/AliTRDTenderSupply.h index 2c8bc149fd2..b38f4bb75fe 100644 --- a/ANALYSIS/TenderSupplies/AliTRDTenderSupply.h +++ b/ANALYSIS/TenderSupplies/AliTRDTenderSupply.h @@ -17,6 +17,7 @@ class AliTRDCalDet; class AliESDEvent; class AliOADBContainer; +class AliTRDonlineTrackMatching; class AliTRDTenderSupply: public AliTenderSupply { @@ -35,11 +36,12 @@ public: // void SetLoadReferencesFromFile() { fLoadReferences = kTRUE; fLoadReferencesFromCDB = kFALSE; } void SetLoadDeadChambersFromCDB(){ fLoadDeadChambers = kTRUE;} ; void SetPIDmethod(Int_t pidMethod) { fPIDmethod = pidMethod; } - void SetNormalizationFactor(Double_t norm, Int_t runMin, Int_t runMax); + void SetNormalizationFactor(Double_t norm, Int_t runMin, Int_t runMax); void SetNormalizationFactor(Double_t norm) { fNormalizationFactor = norm; } void SetCalibLowpThreshold(Double_t pmin) { fPthreshold = pmin; }; void SetGeoFile(const char *filename) { fGeoFile = filename; } void SetDebugMode() { fDebugMode = kTRUE; } + void SetRedoTRDMatching(Bool_t redo = kTRUE) {fRedoTrdMatching = redo;} virtual void Init(); virtual void ProcessEvent(); @@ -65,10 +67,11 @@ private: void LoadDeadChambersFromCDB(); void LoadRunByRunCorrection(const char *filename); Bool_t IsBadChamber(Int_t chamberID); - Double_t GetNormalizationFactor(Int_t runnumber); + Double_t GetNormalizationFactor(Int_t runnumber); AliESDEvent *fESD; //! the ESD Event AliESDpid *fESDpid; //! ESD PID object + AliTRDonlineTrackMatching *fTrdOnlineTrackMatcher; //! TRD online track matcher AliTRDCalDet *fChamberGainOld; // TRD Chamber Gain Factor used for producing the ESD AliTRDCalDet *fChamberGainNew; // New TRD Chamber Gain Factor @@ -90,6 +93,7 @@ private: Bool_t fHasReferences; // has references loaded Bool_t fHasNewCalibration; // has new calibration Bool_t fDebugMode; // Run in debug mode + Bool_t fRedoTrdMatching; // Redo Track Matching TString fNameRunByRunCorrection; // filename with the run-by-run gain correction TObjArray *fNormalizationFactorArray; // Array with normalisation Factors