X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=PWGDQ%2Fdielectron%2FAliDielectronVarManager.h;h=bbbd1a9333be8805656081abb0d48ae73176ed07;hb=2ca1ba4ce6c5efd9b260e4b88c1d7c741fae4fc7;hp=70cc97ea3c3dfd59accb21542c4e3b956adcf048;hpb=ffac87af5e7ea2fc1a29a168dbad6f4fb7be42a1;p=u%2Fmrichter%2FAliRoot.git diff --git a/PWGDQ/dielectron/AliDielectronVarManager.h b/PWGDQ/dielectron/AliDielectronVarManager.h index 70cc97ea3c3..bbbd1a9333b 100644 --- a/PWGDQ/dielectron/AliDielectronVarManager.h +++ b/PWGDQ/dielectron/AliDielectronVarManager.h @@ -26,6 +26,7 @@ #include #include #include +#include #include #include #include @@ -446,8 +447,8 @@ public: static void InitAODpidUtil(Int_t type=0); static void InitEstimatorAvg(const Char_t* filename); static void InitTRDpidEffHistograms(const Char_t* filename); - static void SetLegEffMap( THnBase *map) { fgLegEffMap=map; } - static void SetPairEffMap(THnBase *map) { fgPairEffMap=map; } + static void SetLegEffMap( TObject *map) { fgLegEffMap=map; } + static void SetPairEffMap(TObject *map) { fgPairEffMap=map; } static void SetFillMap( TBits *map) { fgFillMap=map; } static void SetVZEROCalibrationFile(const Char_t* filename) {fgVZEROCalibrationFile = filename;} @@ -509,8 +510,8 @@ private: static TProfile *fgMultEstimatorAvg[4][9]; // multiplicity estimator averages (4 periods x 9 estimators) static Double_t fgTRDpidEffCentRanges[10][4]; // centrality ranges for the TRD pid efficiency histograms static TH3D *fgTRDpidEff[10][4]; // TRD pid efficiencies from conversion electrons - static THnBase *fgLegEffMap; // single electron efficiencies - static THnBase *fgPairEffMap; // pair efficiencies + static TObject *fgLegEffMap; // single electron efficiencies + static TObject *fgPairEffMap; // pair efficiencies static TBits *fgFillMap; // map for requested variable filling static TString fgVZEROCalibrationFile; // file with VZERO channel-by-channel calibrations static TString fgVZERORecenteringFile; // file with VZERO Q-vector averages needed for event plane recentering @@ -1566,10 +1567,10 @@ inline void AliDielectronVarManager::FillVarDielectronPair(const AliDielectronPa values[AliDielectronVarManager::kPseudoProperTimeResolution] = -1e10; // values[AliDielectronVarManager::kPseudoProperTimePull] = -1e10; if(samemother && fgEvent) { - if(pair->GetFirstDaughter()->GetLabel() > 0) { + if(pair->GetFirstDaughterP()->GetLabel() > 0) { const AliVParticle *motherMC = 0x0; - if(fgEvent->IsA() == AliESDEvent::Class()) motherMC = (AliMCParticle*)mc->GetMCTrackMother((AliESDtrack*)pair->GetFirstDaughter()); - else if(fgEvent->IsA() == AliAODEvent::Class()) motherMC = (AliAODMCParticle*)mc->GetMCTrackMother((AliAODTrack*)pair->GetFirstDaughter()); + if(fgEvent->IsA() == AliESDEvent::Class()) motherMC = (AliMCParticle*)mc->GetMCTrackMother((AliESDtrack*)pair->GetFirstDaughterP()); + else if(fgEvent->IsA() == AliAODEvent::Class()) motherMC = (AliAODMCParticle*)mc->GetMCTrackMother((AliAODTrack*)pair->GetFirstDaughterP()); Double_t vtxX, vtxY, vtxZ; if(motherMC && mc->GetPrimaryVertex(vtxX,vtxY,vtxZ)) { Int_t motherLbl = motherMC->GetLabel(); @@ -1588,8 +1589,8 @@ inline void AliDielectronVarManager::FillVarDielectronPair(const AliDielectronPa if (fgTRDpidEff[0][0]){ Double_t valuesLeg1[AliDielectronVarManager::kNMaxValues]; Double_t valuesLeg2[AliDielectronVarManager::kNMaxValues]; - AliVParticle* leg1 = pair->GetFirstDaughter(); - AliVParticle* leg2 = pair->GetSecondDaughter(); + AliVParticle* leg1 = pair->GetFirstDaughterP(); + AliVParticle* leg2 = pair->GetSecondDaughterP(); if (leg1 && leg2){ Fill(leg1, valuesLeg1); Fill(leg2, valuesLeg2); @@ -1600,8 +1601,8 @@ inline void AliDielectronVarManager::FillVarDielectronPair(const AliDielectronPa }//if (mc->HasMC()) - AliVParticle* leg1 = pair->GetFirstDaughter(); - AliVParticle* leg2 = pair->GetSecondDaughter(); + AliVParticle* leg1 = pair->GetFirstDaughterP(); + AliVParticle* leg2 = pair->GetSecondDaughterP(); if (leg1) values[AliDielectronVarManager::kMomAsymDau1] = (values[AliDielectronVarManager::kP] != 0)? leg1->P() / values[AliDielectronVarManager::kP]: 0; else @@ -1904,14 +1905,20 @@ inline void AliDielectronVarManager::FillVarVEvent(const AliVEvent *event, Doubl values[AliDielectronVarManager::kv0C0v0C3DiffH2] = TMath::Cos( 2.*(values[AliDielectronVarManager::kv0C0rpH2] - values[AliDielectronVarManager::kv0C3rpH2]) ); - Double_t ZDCqvec[3][2]; - memset(ZDCqvec, 999, sizeof(ZDCqvec)); + Double_t ZDCqvec[3][2] = {{999., 999.}, {999., 999.}, {999., 999.} }; GetZDCRP(event, ZDCqvec); values[AliDielectronVarManager::kZDCArpH1] = TMath::ATan2(ZDCqvec[0][1], ZDCqvec[0][0]); values[AliDielectronVarManager::kZDCCrpH1] = TMath::ATan2(ZDCqvec[1][1], ZDCqvec[1][0]); values[AliDielectronVarManager::kZDCACrpH1] = TMath::ATan2(ZDCqvec[2][1], ZDCqvec[2][0]); + if(TMath::Abs(ZDCqvec[0][0] - 999.) < 1e-10 || TMath::Abs(ZDCqvec[0][1] - 999.) < 1e-10 || TMath::Abs(ZDCqvec[1][0] - 999.) < 1e-10 || TMath::Abs(ZDCqvec[1][1] - 999.) < 1e-10){ + values[AliDielectronVarManager::kZDCArpH1] = 999; + values[AliDielectronVarManager::kZDCCrpH1] = 999; + values[AliDielectronVarManager::kZDCACrpH1] = 999; + } + + values[AliDielectronVarManager::kv0ZDCrpRes] = cos(2*(values[AliDielectronVarManager::kZDCArpH1] - values[AliDielectronVarManager::kv0ArpH2])); values[AliDielectronVarManager::kZDCrpResH1] = cos(values[AliDielectronVarManager::kZDCArpH1] - values[AliDielectronVarManager::kZDCCrpH1]); @@ -2293,19 +2300,19 @@ inline Double_t AliDielectronVarManager::GetSingleLegEff(Double_t * const values // if(!fgLegEffMap) return -1.; - Int_t dim=fgLegEffMap->GetNdimensions(); - Int_t idx[dim]; - for(Int_t idim=0; idimGetAxis(idim)->GetName()); - idx[idim] = fgLegEffMap->GetAxis(idim)->FindBin(values[var]); - if(idx[idim] < 0 || idx[idim]>fgLegEffMap->GetAxis(idim)->GetNbins()) return 0.0; - /* printf(" [E] AliDielectronVarManager::GetSingleLegEff values %f for %s not found in axis range \n",values[var],fgLegEffMap->GetAxis(idim)->GetName()); */ - // printf(" (%d,%f,%s) \t",idx[idim],values[var],fgLegEffMap->GetAxis(idim)->GetName()); + if(fgLegEffMap->IsA()== THnBase::Class()) { + THnBase *eff = static_cast(fgLegEffMap); + Int_t dim=eff->GetNdimensions(); + Int_t idx[dim]; + for(Int_t idim=0; idimGetAxis(idim)->GetName()); + idx[idim] = eff->GetAxis(idim)->FindBin(values[var]); + if(idx[idim] < 0 || idx[idim]>eff->GetAxis(idim)->GetNbins()) return 0.0; + } + // printf(" bin content %f+-%f \n",eff->GetBinContent(idx), eff->GetBinError(idx)); + return (eff->GetBinContent(idx)); } - // printf(" bin content %f+-%f \n",fgLegEffMap->GetBinContent(idx), fgLegEffMap->GetBinError(idx)); - // if(fgLegEffMap->GetBinContent(idx)<0.01) return 0.0; - // if(fgLegEffMap->GetBinError(idx)/fgLegEffMap->GetBinContent(idx)>0.2) return 0.0; - return (fgLegEffMap->GetBinContent(idx)); + return -1.; } inline Double_t AliDielectronVarManager::GetPairEff(Double_t * const values) { @@ -2314,15 +2321,27 @@ inline Double_t AliDielectronVarManager::GetPairEff(Double_t * const values) { // if(!fgPairEffMap) return -1.; - Int_t dim=fgPairEffMap->GetNdimensions(); - Int_t idx[dim]; - for(Int_t idim=0; idimGetAxis(idim)->GetName()); - idx[idim] = fgPairEffMap->GetAxis(idim)->FindBin(values[var]); - if(idx[idim] < 0 || idx[idim]>fgPairEffMap->GetAxis(idim)->GetNbins()) return 0.0; + if(fgPairEffMap->IsA()== THnBase::Class()) { + THnBase *eff = static_cast(fgPairEffMap); + Int_t dim=eff->GetNdimensions(); + Int_t idx[dim]; + for(Int_t idim=0; idimGetAxis(idim)->GetName()); + idx[idim] = eff->GetAxis(idim)->FindBin(values[var]); + if(idx[idim] < 0 || idx[idim]>eff->GetAxis(idim)->GetNbins()) return 0.0; + } + // printf(" bin content %f+-%f \n",eff->GetBinContent(idx), eff->GetBinError(idx)); + return (eff->GetBinContent(idx)); + } + if(fgPairEffMap->IsA()== TSpline3::Class()) { + TSpline3 *eff = static_cast(fgPairEffMap); + if(!eff->GetHistogram()) { printf("no histogram added to the spline\n"); return -1.;} + UInt_t var = GetValueType(eff->GetHistogram()->GetXaxis()->GetName()); + //printf(" bin content %f \n",eff->Eval(values[var]) ); + return (eff->Eval(values[var])); } - // printf(" bin content %f+-%f \n",fgPairEffMap->GetBinContent(idx), fgPairEffMap->GetBinError(idx)); - return (fgPairEffMap->GetBinContent(idx)); + + return -1.; } @@ -2391,15 +2410,16 @@ inline void AliDielectronVarManager::InitZDCRecenteringHistograms(Int_t runNo) { fgZDCRecentering[i][j] = 0x0; } - TFile file(fgZDCRecenteringFile.Data()); - if (!file.IsOpen()) return; + TFile* file=TFile::Open(fgZDCRecenteringFile.Data()); + if(!file) return; - fgZDCRecentering[0][0] = (TProfile3D*)file.Get(Form("RUN%06d_QxA_Recent", runNo)); - fgZDCRecentering[0][1] = (TProfile3D*)file.Get(Form("RUN%06d_QyA_Recent", runNo)); - fgZDCRecentering[1][0] = (TProfile3D*)file.Get(Form("RUN%06d_QxC_Recent", runNo)); - fgZDCRecentering[1][1] = (TProfile3D*)file.Get(Form("RUN%06d_QyC_Recent", runNo)); - fgZDCRecentering[2][0] = (TProfile3D*)file.Get(Form("RUN%06d_QxAC_Recent", runNo)); - fgZDCRecentering[2][1] = (TProfile3D*)file.Get(Form("RUN%06d_QyAC_Recent", runNo)); + + fgZDCRecentering[0][0] = (TProfile3D*)file->Get(Form("RUN%06d_QxA_Recent", runNo)); + fgZDCRecentering[0][1] = (TProfile3D*)file->Get(Form("RUN%06d_QyA_Recent", runNo)); + fgZDCRecentering[1][0] = (TProfile3D*)file->Get(Form("RUN%06d_QxC_Recent", runNo)); + fgZDCRecentering[1][1] = (TProfile3D*)file->Get(Form("RUN%06d_QyC_Recent", runNo)); + fgZDCRecentering[2][0] = (TProfile3D*)file->Get(Form("RUN%06d_QxAC_Recent", runNo)); + fgZDCRecentering[2][1] = (TProfile3D*)file->Get(Form("RUN%06d_QyAC_Recent", runNo)); if (fgZDCRecentering[0][0]) fgZDCRecentering[0][0]->SetDirectory(0x0); @@ -2409,6 +2429,8 @@ inline void AliDielectronVarManager::InitZDCRecenteringHistograms(Int_t runNo) { if (fgZDCRecentering[2][0]) fgZDCRecentering[2][0]->SetDirectory(0x0); if (fgZDCRecentering[2][1]) fgZDCRecentering[2][1]->SetDirectory(0x0); + delete file; + }