- add V0 qvector variables
authorjbook <jbook@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 10 Oct 2012 16:14:52 +0000 (16:14 +0000)
committerjbook <jbook@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 10 Oct 2012 16:14:52 +0000 (16:14 +0000)
- add scaling in two regions
- coverity fixes

PWGDQ/dielectron/AliDielectronHF.h
PWGDQ/dielectron/AliDielectronPID.cxx
PWGDQ/dielectron/AliDielectronSignalBase.cxx
PWGDQ/dielectron/AliDielectronSignalBase.h
PWGDQ/dielectron/AliDielectronSignalExt.cxx
PWGDQ/dielectron/AliDielectronVarManager.cxx
PWGDQ/dielectron/AliDielectronVarManager.h

index 0eb654f..788ac41 100644 (file)
@@ -18,8 +18,6 @@
 
 #include "AliDielectronVarManager.h"
 
-#include "AliDielectron.h"
-
 class AliDielectronHF : public TNamed {
 public:
   enum { kMaxCuts=20 };
index 2d29e28..8ec097b 100644 (file)
@@ -141,8 +141,8 @@ void AliDielectronPID::AddCut(DetType det, AliPID::EParticleType type, Double_t
   fRequirePIDbit[fNcuts]=pidBitType;
   fActiveCuts[fNcuts]=(var==-1 ? AliDielectronVarManager::kP : var);
 
-  AliInfo(Form("Add PID cut %d: sigma [% .1f,% .1f] \t cut [% .1f,% .f] \t var %d->%s \n",
-              fNcuts,nSigmaLow,nSigmaUp,min,max,fActiveCuts[fNcuts],AliDielectronVarManager::GetValueName(fActiveCuts[fNcuts])));  
+  AliDebug(1,Form("Add PID cut %d: sigma [% .1f,% .1f] \t cut [% .1f,% .f] \t var %d->%s \n",
+                 fNcuts,nSigmaLow,nSigmaUp,min,max,fActiveCuts[fNcuts],AliDielectronVarManager::GetValueName(fActiveCuts[fNcuts])));
   
   ++fNcuts;
 
index 012f2c0..5e98287 100644 (file)
@@ -54,6 +54,8 @@ AliDielectronSignalBase::AliDielectronSignalBase() :
   fMethod(kLikeSign),
   fScaleMin(0.),
   fScaleMax(0.),
+  fScaleMin2(0.),
+  fScaleMax2(0.),
   fScaleFactor(1.),
   fMixingCorr(kFALSE),
   fProcessed(kFALSE)
@@ -83,6 +85,8 @@ AliDielectronSignalBase::AliDielectronSignalBase(const char* name, const char* t
   fMethod(kLikeSign),
   fScaleMin(0.),
   fScaleMax(0.),
+  fScaleMin2(0.),
+  fScaleMax2(0.),
   fScaleFactor(1.),
   fMixingCorr(kFALSE),
   fProcessed(kFALSE)
@@ -160,7 +164,7 @@ Double_t AliDielectronSignalBase::ScaleHistograms(TH1* histRaw, TH1* histBackgro
   //
   // scale histBackground to match the integral of histRaw in the interval intMin, intMax
   //
-
+  printf("scale %f %f \n",intMin,intMax);
   //protect using over and underflow bins in normalisation calculation
   if (intMin<histRaw->GetXaxis()->GetXmin()) intMin=histRaw->GetXaxis()->GetXmin();
   if (intMin<histBackground->GetXaxis()->GetXmin()) intMin=histBackground->GetXaxis()->GetXmin();
@@ -180,3 +184,34 @@ Double_t AliDielectronSignalBase::ScaleHistograms(TH1* histRaw, TH1* histBackgro
 
   return scaleFactor;
 }
+//______________________________________________
+Double_t AliDielectronSignalBase::ScaleHistograms(TH1* histRaw, TH1* histBackground, Double_t intMin, Double_t intMax, Double_t intMin2, Double_t intMax2)
+{
+  //
+  // scale histBackground to match the integral of histRaw in the interval intMin, intMax and intMin2, intMax2
+  //
+  printf("scale %f %f %f %f\n",intMin,intMax, intMin2, intMax2);
+  if(intMin2==intMax2) return (ScaleHistograms(histRaw, histBackground, intMin, intMax));
+
+  //protect using over and underflow bins in normalisation calculation
+  if (intMin<histRaw->GetXaxis()->GetXmin()) intMin=histRaw->GetXaxis()->GetXmin();
+  if (intMin<histBackground->GetXaxis()->GetXmin()) intMin=histBackground->GetXaxis()->GetXmin();
+  
+  if (intMax2>histRaw->GetXaxis()->GetXmax())
+    intMax2=histRaw->GetXaxis()->GetXmax()-histRaw->GetBinWidth(histRaw->GetNbinsX())/2.;
+  if (intMax2>histBackground->GetXaxis()->GetXmax())
+    intMax2=histBackground->GetXaxis()->GetXmax()-histBackground->GetBinWidth(histBackground->GetNbinsX())/2.;
+  
+  Double_t intRaw  = histRaw->Integral(histRaw->FindBin(intMin),histRaw->FindBin(intMax));
+  Double_t intBack = histBackground->Integral(histBackground->FindBin(intMin),histBackground->FindBin(intMax));
+  intRaw  += histRaw->Integral(histRaw->FindBin(intMin2),histRaw->FindBin(intMax2));
+  intBack += histBackground->Integral(histBackground->FindBin(intMin2),histBackground->FindBin(intMax2));
+
+  Double_t scaleFactor=intBack>0?intRaw/intBack:0.;
+  if (intBack>0){
+    histBackground->Sumw2();
+    histBackground->Scale(scaleFactor);
+  }
+
+  return scaleFactor;
+}
index a77ab5d..08fca9a 100644 (file)
@@ -77,14 +77,17 @@ public:
   TH1* GetRfactorHistogram()     const {return fHistRfactor;}
   
   void SetScaleRawToBackground(Double_t intMin, Double_t intMax) { fScaleMin=intMin; fScaleMax=intMax; }
+  void SetScaleRawToBackground(Double_t intMin, Double_t intMax, Double_t intMin2, Double_t intMax2) { fScaleMin=intMin; fScaleMax=intMax; fScaleMin2=intMin2; fScaleMax2=intMax2; }
   Double_t GetScaleMin() const { return fScaleMin; }
   Double_t GetScaleMax() const { return fScaleMax; }
-
+  Double_t GetScaleMin2() const { return fScaleMin2; }
+  Double_t GetScaleMax2() const { return fScaleMax2; }
   Double_t GetScaleFactor() const { return fScaleFactor; }
 
   void SetMixingCorrection(Bool_t mixcorr=kTRUE) { fMixingCorr=mixcorr; }
   
   static Double_t ScaleHistograms(TH1* histRaw, TH1* histBackground, Double_t intMin, Double_t intMax);
+  static Double_t ScaleHistograms(TH1* histRaw, TH1* histBackground, Double_t intMin, Double_t intMax, Double_t intMin2, Double_t intMax2);
   
   virtual void Print(Option_t *option="") const;
 
@@ -120,6 +123,8 @@ protected:
   EBackgroundMethod fMethod;         // method for background substraction
   Double_t fScaleMin;                // min for scaling of raw and background histogram
   Double_t fScaleMax;                // max for scaling of raw and background histogram
+  Double_t fScaleMin2;                // min for scaling of raw and background histogram
+  Double_t fScaleMax2;                // max for scaling of raw and background histogram
   Double_t fScaleFactor;             // scale factor of raw to background histogram scaling
   Bool_t fMixingCorr;                // switch for bin by bin correction with R factor
   
index 3d2bc40..5eab4ec 100644 (file)
@@ -222,7 +222,8 @@ void AliDielectronSignalExt::ProcessLS(TObjArray* const arrhist)
   
   //scale histograms to match integral between fScaleMin and fScaleMax
   // or if fScaleMax <  fScaleMin use fScaleMin as scale factor
-  if (fScaleMax>fScaleMin) fScaleFactor=ScaleHistograms(fHistDataPM,fHistBackground,fScaleMin,fScaleMax);
+  if (fScaleMax>fScaleMin && fScaleMax2>fScaleMin2) fScaleFactor=ScaleHistograms(fHistDataPM,fHistBackground,fScaleMin,fScaleMax,fScaleMin2,fScaleMax2);
+  else if (fScaleMax>fScaleMin) fScaleFactor=ScaleHistograms(fHistDataPM,fHistBackground,fScaleMin,fScaleMax);
   else if (fScaleMin>0.){
     fScaleFactor=fScaleMin;
     fHistBackground->Scale(fScaleFactor);
@@ -289,7 +290,8 @@ void AliDielectronSignalExt::ProcessEM(TObjArray* const arrhist)
 
   //scale histograms to match integral between fScaleMin and fScaleMax
   // or if fScaleMax <  fScaleMin use fScaleMin as scale factor
-  if (fScaleMax>fScaleMin) fScaleFactor=ScaleHistograms(fHistDataPM,fHistBackground,fScaleMin,fScaleMax);
+  if (fScaleMax>fScaleMin && fScaleMax2>fScaleMin2) fScaleFactor=ScaleHistograms(fHistDataPM,fHistBackground,fScaleMin,fScaleMax,fScaleMin2,fScaleMax2);
+  else if (fScaleMax>fScaleMin) fScaleFactor=ScaleHistograms(fHistDataPM,fHistBackground,fScaleMin,fScaleMax);
   else if (fScaleMin>0.){
     fScaleFactor=fScaleMin;
     fHistBackground->Scale(fScaleFactor);
@@ -339,7 +341,8 @@ void AliDielectronSignalExt::ProcessRotation(TObjArray* const arrhist)
 
   //scale histograms to match integral between fScaleMin and fScaleMax
   // or if fScaleMax <  fScaleMin use fScaleMin as scale factor
-  if (fScaleMax>fScaleMin) fScaleFactor=ScaleHistograms(fHistDataPM,fHistBackground,fScaleMin,fScaleMax);
+  if (fScaleMax>fScaleMin && fScaleMax2>fScaleMin2) fScaleFactor=ScaleHistograms(fHistDataPM,fHistBackground,fScaleMin,fScaleMax,fScaleMin2,fScaleMax2);
+  else if (fScaleMax>fScaleMin) fScaleFactor=ScaleHistograms(fHistDataPM,fHistBackground,fScaleMin,fScaleMax);
   else if (fScaleMin>0.){
     fScaleFactor=fScaleMin;
     fHistBackground->Scale(fScaleFactor);
index efb5f30..090e0ba 100644 (file)
@@ -172,6 +172,17 @@ const char* AliDielectronVarManager::fgkParticleNames[AliDielectronVarManager::k
   "v0ArpH2",
   "v0CrpH2",
   "v0ACrpH2",
+  "v0AxH2",
+  "v0AyH2",
+  "v0CxH2",
+  "v0CyH2",
+  "v0ACxH2",
+  "v0ACyH2",
+  "v0A0rpH2",
+  "v0A3rpH2",
+  "v0C0rpH2",
+  "v0C3rpH2",
+
   "DeltaPhiv0ArpH2",        
   "DeltaPhiv0CrpH2",        
   "DeltaPhiv0ACrpH2",       
index c434e5b..6c1e90c 100644 (file)
@@ -222,9 +222,19 @@ public:
     kZRes,                   // primary vertex z-resolution
 
     //// v0 reaction plane quantities from AliEPSelectionTaks
-    kv0ArpH2,                  // VZERO-A reaction plane of the Q vector for 2nd harmonic
-    kv0CrpH2,                  //         reaction plane
-    kv0ACrpH2,                 // VZERO-AC reaction plane of the Q vector for 2nd harmonic
+    kv0ArpH2,                // VZERO-A reaction plane of the Q vector for 2nd harmonic
+    kv0CrpH2,                //         reaction plane
+    kv0ACrpH2,               // VZERO-AC reaction plane of the Q vector for 2nd harmonic
+    kv0AxH2,                 // VZERO-A x-component of the Q vector for 2nd harmonic
+    kv0AyH2,                 // VZERO-A y-component of the Q vector for 2nd harmonic
+    kv0CxH2,                 // VZERO-C x-component of the Q vector for 2nd harmonic
+    kv0CyH2,                 // VZERO-C y-component of the Q vector for 2nd harmonic
+    kv0ACxH2,                // VZERO-AC x-component of the Q vector for 2nd harmonic
+    kv0ACyH2,                // VZERO-AC y-component of the Q vector for 2nd harmonic
+    kv0A0rpH2,                 // VZERO-A 1st  ring reaction plane of the Q vector for 2nd harmonic
+    kv0A3rpH2,                 // VZERO-A last ring reaction plane of the Q vector for 2nd harmonic
+    kv0C0rpH2,                 // VZERO-C 1st  ring reaction plane of the Q vector for 2nd harmonic
+    kv0C3rpH2,                 // VZERO-C last ring reaction plane of the Q vector for 2nd harmonic
     kDeltaPhiv0ArpH2,          // Delta phi of the pair with respect to the 2nd order harmonic reaction plane from V0-A
     kDeltaPhiv0CrpH2,          // Delta phi of the pair with respect to the 2nd order harmonic reaction plane from V0-C
     kDeltaPhiv0ACrpH2,         // Delta phi of the pair with respect to the 2nd order harmonic reaction plane from V0-AC
@@ -685,8 +695,8 @@ inline void AliDielectronVarManager::FillVarAODTrack(const AliAODTrack *particle
   values[AliDielectronVarManager::kNclsSFracTPC]  = tpcNcls>0?tpcNclsS/tpcNcls:0;
   values[AliDielectronVarManager::kNclsTPCiter1]  = tpcNcls; // not really available in AOD
   values[AliDielectronVarManager::kNFclsTPC]      = 0;
-  values[AliDielectronVarManager::kNFclsTPCr]     =  particle->GetTPCClusterInfo(2,1);
-  values[AliDielectronVarManager::kNFclsTPCrFrac] =  particle->GetTPCClusterInfo(2,1)/ particle->GetTPCNclsF();
+  values[AliDielectronVarManager::kNFclsTPCr]     = 0;
+  values[AliDielectronVarManager::kNFclsTPCrFrac] = 0;
   values[AliDielectronVarManager::kNclsTRD]       = 0;
   values[AliDielectronVarManager::kTRDntracklets] = 0;
   values[AliDielectronVarManager::kTRDpidQuality] = 0;
@@ -1412,10 +1422,24 @@ inline void AliDielectronVarManager::FillVarVEvent(const AliVEvent *event, Doubl
   // TPC event plane (corrected)
 
   // VZERO event plane quantities from the AliEPSelectionTask
+  Double_t qx = 0, qy = 0;
   AliEventplane *ep = const_cast<AliVEvent*>(event)->GetEventplane();
-  values[AliDielectronVarManager::kv0ACrpH2]  = TVector2::Phi_mpi_pi(ep->GetEventplane("V0", event, 2));
-  values[AliDielectronVarManager::kv0ArpH2]   = TVector2::Phi_mpi_pi(ep->GetEventplane("V0A",event, 2));
-  values[AliDielectronVarManager::kv0CrpH2]   = TVector2::Phi_mpi_pi(ep->GetEventplane("V0C",event, 2));
+  values[AliDielectronVarManager::kv0ACrpH2]  = TVector2::Phi_mpi_pi(ep->CalculateVZEROEventPlane(event,10, 2, qx, qy));
+  values[AliDielectronVarManager::kv0ACxH2]   = qx;
+  values[AliDielectronVarManager::kv0ACyH2]   = qy;
+  qx = 0, qy = 0;
+  values[AliDielectronVarManager::kv0ArpH2]   = TVector2::Phi_mpi_pi(ep->CalculateVZEROEventPlane(event, 8, 2, qx, qy));
+  values[AliDielectronVarManager::kv0AxH2]    = qx;
+  values[AliDielectronVarManager::kv0AyH2]    = qy;
+  qx = 0, qy = 0;
+  values[AliDielectronVarManager::kv0CrpH2]   = TVector2::Phi_mpi_pi(ep->CalculateVZEROEventPlane(event, 9, 2, qx, qy));
+  values[AliDielectronVarManager::kv0CxH2]    = qx;
+  values[AliDielectronVarManager::kv0CyH2]    = qy;
+  qx = 0, qy = 0;
+  values[AliDielectronVarManager::kv0C0rpH2]  = TVector2::Phi_mpi_pi(ep->CalculateVZEROEventPlane(event, 0, 0, 2, qx, qy)); qx = 0, qy = 0;
+  values[AliDielectronVarManager::kv0C3rpH2]  = TVector2::Phi_mpi_pi(ep->CalculateVZEROEventPlane(event, 3, 3, 2, qx, qy)); qx = 0, qy = 0;
+  values[AliDielectronVarManager::kv0A0rpH2]  = TVector2::Phi_mpi_pi(ep->CalculateVZEROEventPlane(event, 4, 4, 2, qx, qy)); qx = 0, qy = 0;
+  values[AliDielectronVarManager::kv0A3rpH2]  = TVector2::Phi_mpi_pi(ep->CalculateVZEROEventPlane(event, 7, 7, 2, qx, qy)); qx = 0, qy = 0;
   values[AliDielectronVarManager::kv0ACrpH2FlowV2]  = TMath::Cos( 2*(values[AliDielectronVarManager::kPhi] - values[AliDielectronVarManager::kv0ACrpH2]) );
   values[AliDielectronVarManager::kv0ArpH2FlowV2]   = TMath::Cos( 2*(values[AliDielectronVarManager::kPhi] - values[AliDielectronVarManager::kv0ArpH2]) );
   values[AliDielectronVarManager::kv0CrpH2FlowV2]   = TMath::Cos( 2*(values[AliDielectronVarManager::kPhi] - values[AliDielectronVarManager::kv0CrpH2]) );