]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
o updates
authorwiechula <wiechula@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 4 Jun 2012 15:49:32 +0000 (15:49 +0000)
committerwiechula <wiechula@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 4 Jun 2012 15:49:32 +0000 (15:49 +0000)
PWGDQ/dielectron/AliDielectron.cxx
PWGDQ/dielectron/AliDielectronEventCuts.cxx
PWGDQ/dielectron/AliDielectronHelper.cxx
PWGDQ/dielectron/AliDielectronHistos.cxx
PWGDQ/dielectron/AliDielectronHistos.h
PWGDQ/dielectron/AliDielectronPair.cxx
PWGDQ/dielectron/AliDielectronPair.h
PWGDQ/dielectron/AliDielectronSignalBase.h
PWGDQ/dielectron/AliDielectronVarManager.cxx
PWGDQ/dielectron/AliDielectronVarManager.h

index 98eecae86a50b9517c6e8309184c8485b6241b8d..894125793f20a222b9090aa1991d7f33febd069e 100644 (file)
@@ -945,7 +945,9 @@ void AliDielectron::FillPairArrays(Int_t arr1, Int_t arr2)
       candidate->SetTracks(static_cast<AliVTrack*>(arrTracks1.UncheckedAt(itrack1)), fPdgLeg1,
                              static_cast<AliVTrack*>(arrTracks2.UncheckedAt(itrack2)), fPdgLeg2);
       candidate->SetType(pairIndex);
-      candidate->SetLabel(AliDielectronMC::Instance()->GetLabelMotherWithPdg(candidate,fPdgMother));
+      Int_t label=AliDielectronMC::Instance()->GetLabelMotherWithPdg(candidate,fPdgMother);
+      candidate->SetLabel(label);
+      if (label>-1) candidate->SetPdgCode(fPdgMother);
 
       //pair cuts
       UInt_t cutMask=fPairFilter.IsSelected(candidate);
@@ -989,7 +991,7 @@ void AliDielectron::FillPairArrayTR()
     //apply cut
     if (cutMask==selectedMask) {
      if(fHistos) FillHistogramsPair(&candidate);
-     if(fStoreRotatedPairs) PairArray(10)->Add(new AliDielectronPair(candidate));  
+     if(fStoreRotatedPairs) PairArray(kEv1PMRot)->Add(new AliDielectronPair(candidate));
     } 
   }
 }
index a1ee80b30e54654f360ba8ec3fc061f2c0f34b4d..79766f17825394a0d93e28e377630707bc469013 100644 (file)
@@ -198,16 +198,11 @@ Bool_t AliDielectronEventCuts::IsSelectedAOD(TObject* event)
   fkVertexAOD=0x0;
 
   switch(fVtxType){
-  case kVtxTracks:
-    fkVertexAOD=0x0;
-    break;
-  case kVtxTPC:            fkVertexAOD=GetPrimaryVertexTPC(ev); 
-    break;
+  case kVtxTracks:         fkVertexAOD=0x0;                       break;
+  case kVtxTPC:            fkVertexAOD=GetPrimaryVertexTPC(ev);   break;
   case kVtxSPD:
-  case kVtxTracksOrSPD:    fkVertexAOD=ev->GetPrimaryVertexSPD();
-    break;
-  case kVtxAny:            fkVertexAOD=ev->GetPrimaryVertex();
-    break;
+  case kVtxTracksOrSPD:    fkVertexAOD=ev->GetPrimaryVertexSPD(); break;
+  case kVtxAny:            fkVertexAOD=ev->GetPrimaryVertex();    break;
   }
 
   if ((fRequireVtx||fVtxZmin<fVtxZmax||fMinVtxContributors>0)&&!fkVertexAOD) return kFALSE;
index 2a3c494b6d2caa83d839957cec8f791805acb9a0..7418b8002151059af44ebf8fa4437409472dd077 100644 (file)
@@ -236,17 +236,17 @@ Int_t AliDielectronHelper::GetNacc(const AliVEvent *ev){
   // put a robust Nacc definition here
 
   if (!ev) return -1;
-
+  
   AliDielectronVarCuts *varCuts = new AliDielectronVarCuts("VarCuts","VarCuts");
   varCuts->AddCut(AliDielectronVarManager::kImpactParXY, -1.0,   1.0);
   varCuts->AddCut(AliDielectronVarManager::kImpactParZ,  -3.0,   3.0);
   varCuts->AddCut(AliDielectronVarManager::kEta,         -0.9,   0.9);
-  varCuts->AddCut(AliDielectronVarManager::kTPCchi2Cl,    0.0,   4.0);   // not filled in AODs?
+  varCuts->AddCut(AliDielectronVarManager::kTPCchi2Cl,    0.0,   4.0);
   varCuts->AddCut(AliDielectronVarManager::kNclsTPC,     70.0, 160.0);
-  varCuts->AddCut(AliDielectronVarManager::kITSLayerFirstCls,-0.01,1.5); //ITS(0-1) = SPDany
   varCuts->AddCut(AliDielectronVarManager::kKinkIndex0,  -0.5,   0.5);   //noKinks
     
   AliDielectronTrackCuts *trkCuts = new AliDielectronTrackCuts("TrkCuts","TrkCuts");
+  trkCuts->SetClusterRequirementITS(AliDielectronTrackCuts::kSPD, AliDielectronTrackCuts::kAny);
   trkCuts->SetRequireITSRefit(kTRUE);
   trkCuts->SetRequireTPCRefit(kTRUE);
 
@@ -255,6 +255,7 @@ Int_t AliDielectronHelper::GetNacc(const AliVEvent *ev){
   
   for (Int_t iTrack = 0; iTrack < nRecoTracks; iTrack++) {
     AliVParticle* candidate = ev->GetTrack(iTrack);
+    if (!candidate) continue;
     AliVTrack *track        = static_cast<AliVTrack*>(candidate);
     if (!track) continue;
     if (varCuts->IsSelected(track) && trkCuts->IsSelected(track)) 
@@ -264,8 +265,6 @@ Int_t AliDielectronHelper::GetNacc(const AliVEvent *ev){
   delete varCuts;
   delete trkCuts;
 
-  //  if(nRecoTracks==nAcc) printf(" all (%d) reco tracks are accepted tracks? \n",nAcc);
-
   return nAcc;
 }
 
index 4d18eb544f153b5baf06f26e58031c0e4a95ba48..c1de31ad1e71cbc2f8f03f5985a27662336cd4cf 100644 (file)
@@ -96,7 +96,7 @@ AliDielectronHistos::~AliDielectronHistos()
 void AliDielectronHistos::UserProfile(const char* histClass,const char *name, const char* title,
                                      UInt_t valTypeP,
                                      Int_t nbinsX, Double_t xmin, Double_t xmax,
-                                     UInt_t valTypeX, Bool_t logBinX)
+                                     UInt_t valTypeX, Bool_t logBinX, TString option)
 {
   //
   // Default histogram creation 1D case
@@ -109,7 +109,7 @@ void AliDielectronHistos::UserProfile(const char* histClass,const char *name, co
   } else {
     binLimX=AliDielectronHelper::MakeLinBinning(nbinsX, xmin, xmax);
   }
-  UserProfile(histClass,name,title,valTypeP,binLimX,valTypeX);
+  UserProfile(histClass,name,title,valTypeP,binLimX,valTypeX,option);
 }
 
 //_____________________________________________________________________________
@@ -118,7 +118,7 @@ void AliDielectronHistos::UserProfile(const char* histClass,const char *name, co
                                      Int_t nbinsX, Double_t xmin, Double_t xmax,
                                      Int_t nbinsY, Double_t ymin, Double_t ymax,
                                      UInt_t valTypeX, UInt_t valTypeY,
-                                     Bool_t logBinX, Bool_t logBinY)
+                                     Bool_t logBinX, Bool_t logBinY, TString option)
 {
   //
   // Default histogram creation 2D case
@@ -138,7 +138,7 @@ void AliDielectronHistos::UserProfile(const char* histClass,const char *name, co
   } else {
     binLimY=AliDielectronHelper::MakeLinBinning(nbinsY, ymin, ymax);
   }
-  UserProfile(histClass,name,title,valTypeP,binLimX,binLimY,valTypeX,valTypeY);
+  UserProfile(histClass,name,title,valTypeP,binLimX,binLimY,valTypeX,valTypeY,option);
 }
 
 
@@ -149,7 +149,7 @@ void AliDielectronHistos::UserProfile(const char* histClass,const char *name, co
                                      Int_t nbinsY, Double_t ymin, Double_t ymax,
                                      Int_t nbinsZ, Double_t zmin, Double_t zmax,
                                      UInt_t valTypeX, UInt_t valTypeY, UInt_t valTypeZ,
-                                     Bool_t logBinX, Bool_t logBinY, Bool_t logBinZ)
+                                     Bool_t logBinX, Bool_t logBinY, Bool_t logBinZ, TString option)
 {
   //
   // Default histogram creation 3D case
@@ -178,28 +178,28 @@ void AliDielectronHistos::UserProfile(const char* histClass,const char *name, co
     binLimZ=AliDielectronHelper::MakeLinBinning(nbinsZ, zmin, zmax);
   }
 
-  UserProfile(histClass,name,title,valTypeP,binLimX,binLimY,binLimZ,valTypeX,valTypeY,valTypeZ);
+  UserProfile(histClass,name,title,valTypeP,binLimX,binLimY,binLimZ,valTypeX,valTypeY,valTypeZ,option);
 }
 
 //_____________________________________________________________________________
 void AliDielectronHistos::UserProfile(const char* histClass,const char *name, const char* title,
                                      UInt_t valTypeP,
                                      const char* binning,
-                                     UInt_t valTypeX)
+                                     UInt_t valTypeX, TString option)
 {
   //
   // Histogram creation 1D case with arbitraty binning
   //
 
   TVectorD *binLimX=AliDielectronHelper::MakeArbitraryBinning(binning);
-  UserProfile(histClass,name,title,valTypeP,binLimX,valTypeX);
+  UserProfile(histClass,name,title,valTypeP,binLimX,valTypeX,option);
 }
 
 //_____________________________________________________________________________
 void AliDielectronHistos::UserProfile(const char* histClass,const char *name, const char* title,
                                      UInt_t valTypeP,
                                      const TVectorD * const binsX,
-                                     UInt_t valTypeX/*=kNoAutoFill*/)
+                                     UInt_t valTypeX/*=kNoAutoFill*/, TString option)
 {
   //
   // Histogram creation 1D case with arbitraty binning X
@@ -215,7 +215,18 @@ void AliDielectronHistos::UserProfile(const char* histClass,const char *name, co
     if(valTypeP==999)
       hist=new TH1F(name,title,binsX->GetNrows()-1,binsX->GetMatrixArray());
     else {
+      TString opt=""; Double_t pmin=0., pmax=0.;
+      if(!option.IsNull()) {
+       TObjArray *arr=option.Tokenize(";");
+       arr->SetOwner();
+       opt=((TObjString*)arr->At(0))->GetString();
+       if(arr->GetEntriesFast()>1) pmin=(((TObjString*)arr->At(1))->GetString()).Atof();
+       if(arr->GetEntriesFast()>2) pmax=(((TObjString*)arr->At(2))->GetString()).Atof();
+       delete arr;
+      }
       hist=new TProfile(name,title,binsX->GetNrows()-1,binsX->GetMatrixArray());
+      ((TProfile*)hist)->BuildOptions(pmin,pmax,opt.Data());
+      //      printf(" name %s PROFILE options: pmin %.1f pmax %.1f err %s \n",name,((TProfile*)hist)->GetYmin(),((TProfile*)hist)->GetYmax(),((TProfile*)hist)->GetErrorOption() );
     }
 
     // store var for profile in fBits
@@ -237,7 +248,7 @@ void AliDielectronHistos::UserProfile(const char* histClass,const char *name, co
 void AliDielectronHistos::UserProfile(const char* histClass,const char *name, const char* title,
                                      UInt_t valTypeP,
                                      const TVectorD * const binsX, const TVectorD * const binsY,
-                                     UInt_t valTypeX/*=kNoAutoFill*/, UInt_t valTypeY/*=0*/)
+                                     UInt_t valTypeX/*=kNoAutoFill*/, UInt_t valTypeY/*=0*/, TString option)
 {
   //
   // Histogram creation 2D case with arbitraty binning X
@@ -256,11 +267,23 @@ void AliDielectronHistos::UserProfile(const char* histClass,const char *name, co
                     binsX->GetNrows()-1,binsX->GetMatrixArray(),
                     binsY->GetNrows()-1,binsY->GetMatrixArray()); 
     }
-    else 
+    else  {
+      TString opt=""; Double_t pmin=0., pmax=0.;
+      if(!option.IsNull()) {
+       TObjArray *arr=option.Tokenize(";");
+       arr->SetOwner();
+       opt=((TObjString*)arr->At(0))->GetString();
+       if(arr->GetEntriesFast()>1) pmin=(((TObjString*)arr->At(1))->GetString()).Atof();
+       if(arr->GetEntriesFast()>2) pmax=(((TObjString*)arr->At(2))->GetString()).Atof();
+       delete arr;
+      }
       hist=new TProfile2D(name,title,
                           binsX->GetNrows()-1,binsX->GetMatrixArray(),
                           binsY->GetNrows()-1,binsY->GetMatrixArray());
-    
+      ((TProfile2D*)hist)->BuildOptions(pmin,pmax,opt.Data());
+      //      printf(" name %s PROFILE options: pmin %.1f pmax %.1f err %s \n",name,((TProfile*)hist)->GetYmin(),((TProfile*)hist)->GetYmax(),((TProfile*)hist)->GetErrorOption() );
+    }
+
     // store var for profile in fBits
     StoreVarForProfile(hist,valTypeP);
 
@@ -284,7 +307,7 @@ void AliDielectronHistos::UserProfile(const char* histClass,const char *name, co
 void AliDielectronHistos::UserProfile(const char* histClass,const char *name, const char* title,
                                      UInt_t valTypeP,
                                      const TVectorD * const binsX, const TVectorD * const binsY, const TVectorD * const binsZ,
-                                     UInt_t valTypeX/*=kNoAutoFill*/, UInt_t valTypeY/*=0*/, UInt_t valTypeZ/*=0*/)
+                                     UInt_t valTypeX/*=kNoAutoFill*/, UInt_t valTypeY/*=0*/, UInt_t valTypeZ/*=0*/, TString option)
 {
   //
   // Histogram creation 3D case with arbitraty binning X
@@ -304,12 +327,24 @@ void AliDielectronHistos::UserProfile(const char* histClass,const char *name, co
                    binsX->GetNrows()-1,binsX->GetMatrixArray(),
                    binsY->GetNrows()-1,binsY->GetMatrixArray(),
                    binsZ->GetNrows()-1,binsZ->GetMatrixArray());
-    else
+    else {
+      TString opt=""; Double_t pmin=0., pmax=0.;
+      if(!option.IsNull()) {
+       TObjArray *arr=option.Tokenize(";");
+       arr->SetOwner();
+       opt=((TObjString*)arr->At(0))->GetString();
+       if(arr->GetEntriesFast()>1) pmin=(((TObjString*)arr->At(1))->GetString()).Atof();
+       if(arr->GetEntriesFast()>2) pmax=(((TObjString*)arr->At(2))->GetString()).Atof();
+       delete arr;
+      }
       hist=new TProfile3D(name,title,
                          binsX->GetNrows()-1,binsX->GetMatrixArray(),
                          binsY->GetNrows()-1,binsY->GetMatrixArray(),
                          binsZ->GetNrows()-1,binsZ->GetMatrixArray());
-    
+      ((TProfile3D*)hist)->BuildOptions(pmin,pmax,opt.Data());
+      //      printf(" name %s PROFILE options: pmin %.1f pmax %.1f err %s \n",name,((TProfile*)hist)->GetYmin(),((TProfile*)hist)->GetYmax(),((TProfile*)hist)->GetErrorOption() );
+    }
+
     // store var for profile in fBits
     StoreVarForProfile(hist,valTypeP);
     
@@ -344,7 +379,6 @@ void AliDielectronHistos::UserHistogram(const char* histClass, TH1* hist, UInt_t
   }
   
   if (!IsHistogramOk(histClass,hist->GetName())) return;
-  
   THashList *classTable=(THashList*)fHistoList.FindObject(histClass);
   hist->SetDirectory(0);
   hist->SetUniqueID(valTypes);
index 0d3fbd6022315e8c89541b3b29a1abec3483cffb..34d5153182899e918f545534166897f78c056873 100644 (file)
@@ -36,14 +36,14 @@ public:
   void UserProfile(const char* histClass,const char *name, const char* title,
                   UInt_t valTypeP,
                   Int_t nbinsX, Double_t xmin, Double_t xmax,
-                  UInt_t valTypeX=kNoAutoFill, Bool_t logBinX=kFALSE);
+                  UInt_t valTypeX=kNoAutoFill, Bool_t logBinX=kFALSE, TString option="");
 
   void UserProfile(const char* histClass,const char *name, const char* title,
                   UInt_t valTypeP,
                   Int_t nbinsX, Double_t xmin, Double_t xmax,
                   Int_t nbinsY, Double_t ymin, Double_t ymax,
                   UInt_t valTypeX=kNoAutoFill, UInt_t valTypeY=0,
-                  Bool_t logBinX=kFALSE, Bool_t logBinY=kFALSE);
+                  Bool_t logBinX=kFALSE, Bool_t logBinY=kFALSE, TString option="");
   
   void UserProfile(const char* histClass,const char *name, const char* title,
                   UInt_t valTypeP,
@@ -51,25 +51,25 @@ public:
                   Int_t nbinsY, Double_t ymin, Double_t ymax,
                   Int_t nbinsZ, Double_t zmin, Double_t zmax,
                   UInt_t valTypeX=kNoAutoFill, UInt_t valTypeY=0, UInt_t valTypeZ=0,
-                  Bool_t logBinX=kFALSE, Bool_t logBinY=kFALSE, Bool_t logBinZ=kFALSE);
+                  Bool_t logBinX=kFALSE, Bool_t logBinY=kFALSE, Bool_t logBinZ=kFALSE, TString option="");
   
   void UserProfile(const char* histClass,const char *name, const char* title,
                   UInt_t valTypeP,
-                  const char* binning, UInt_t valTypeX=kNoAutoFill);
+                  const char* binning, UInt_t valTypeX=kNoAutoFill, TString option="");
   
   void UserProfile(const char* histClass,const char *name, const char* title,
                   UInt_t valTypeP,
-                  const TVectorD * const binsX, UInt_t valTypeX=kNoAutoFill);
+                  const TVectorD * const binsX, UInt_t valTypeX=kNoAutoFill, TString option="");
   
   void UserProfile(const char* histClass,const char *name, const char* title,
                   UInt_t valTypeP,
                   const TVectorD * const binsX, const TVectorD * const binsY,
-                  UInt_t valTypeX=kNoAutoFill, UInt_t valTypeY=0);
+                  UInt_t valTypeX=kNoAutoFill, UInt_t valTypeY=0, TString option="");
   
   void UserProfile(const char* histClass,const char *name, const char* title,
                   UInt_t valTypeP,
                   const TVectorD * const binsX, const TVectorD * const binsY, const TVectorD * const binsZ,
-                  UInt_t valTypeX=kNoAutoFill, UInt_t valTypeY=0, UInt_t valTypeZ=0);
+                  UInt_t valTypeX=kNoAutoFill, UInt_t valTypeY=0, UInt_t valTypeZ=0, TString option="");
 
 
   void UserHistogram(const char* histClass,const char *name, const char* title,
index bba26e68f091255b08312e6b32028174032b15e4..4e991d54a11b6ba94a07f6a8cc6518b425559538 100644 (file)
@@ -33,6 +33,7 @@ ClassImp(AliDielectronPair)
 AliDielectronPair::AliDielectronPair() :
   fType(-1),
   fLabel(-1),
+  fPdgCode(0),
   fPair(),
   fD1(),
   fD2(),
@@ -50,6 +51,7 @@ AliDielectronPair::AliDielectronPair(AliVTrack * const particle1, Int_t pid1,
                                      AliVTrack * const particle2, Int_t pid2, Char_t type) :
   fType(type),
   fLabel(-1),
+  fPdgCode(0),
   fPair(),
   fD1(),
   fD2(),
@@ -69,6 +71,7 @@ AliDielectronPair::AliDielectronPair(const AliKFParticle * const particle1,
                                      AliVTrack * const refParticle2, Char_t type) :
   fType(type),
   fLabel(-1),
+  fPdgCode(0),
   fPair(),
   fD1(),
   fD2(),
index 6bd2439e329a09ffa58e135bb5af7e0af7fc5b61..bbac9b9f654d995c1d3205c165a4e9e8af1d710a 100644 (file)
@@ -89,8 +89,7 @@ public:
   virtual Int_t   GetLabel() const  { return fLabel;      }
   // PID
   virtual const Double_t *PID() const { return 0;} //TODO: check
-  // Dummy
-  Int_t PdgCode() const {return 0;}
+
   //
   // Double_t GetLXY(const AliVVertex * const vtx) const;
   // Double_t GetPseudoProperTime(const AliVVertex * const vtx) const;
@@ -99,7 +98,10 @@ public:
   UChar_t GetType() const { return fType; }
   void SetType(Char_t type) { fType=type; }
 
+  // MC information
   void SetLabel(Int_t label) {fLabel=label;}
+  void SetPdgCode(Int_t pdgCode) { fPdgCode=pdgCode; }
+  Int_t PdgCode() const {return fPdgCode;}
 
   void SetProductionVertex(const AliKFParticle &Vtx) { fPair.SetProductionVertex(Vtx); }
   
@@ -138,6 +140,7 @@ public:
 private:
   Char_t   fType;         // type of the pair e.g. like sign SE, unlike sign SE, ... see AliDielectron
   Int_t    fLabel;        // MC label
+  Int_t    fPdgCode;      // pdg code in case it is a MC particle
   
   AliKFParticle fPair;   // KF particle internally used for pair calculation
   AliKFParticle fD1;     // KF particle first daughter
@@ -146,7 +149,7 @@ private:
   TRef fRefD1;           // Reference to first daughter
   TRef fRefD2;           // Reference to second daughter
   
-  ClassDef(AliDielectronPair,3)
+  ClassDef(AliDielectronPair,4)
 };
 
 #endif
index 2b36dbce2ac32530eba9b0f15bf9a2c58757e35e..a77ab5d2b16b90aca9f98d8001e48dc75883410c 100644 (file)
@@ -146,7 +146,7 @@ inline void AliDielectronSignalBase::SetSignificanceAndSOB()
   fErrors(3) = fValues(3)*TMath::Sqrt(epsSig*epsSig + epsBknd*epsBknd);
   // Significance
   fValues(2) = ((fValues(0)+fValues(1))>0 ? fValues(0)/TMath::Sqrt(fValues(0)+fValues(1)) : 0);
-  Float_t s = fValues(0); Float_t b = fValues(1);
+  Float_t s = (fValues(0)>0?fValues(0):0); Float_t b = fValues(1);
   fErrors(2) = ((s+b)>0 ? TMath::Sqrt((s*(s+2*b)*(s+2*b)+b*s*s)/(4*TMath::Power(s+b,3))) : 0);
 }
 
index 97ab7251f049f954974bd26733e458c372a48c10..541d35dc1e45e36181bb05d6d770227ef37a8427 100644 (file)
@@ -151,6 +151,7 @@ const char* AliDielectronVarManager::fgkParticleNames[AliDielectronVarManager::k
   "DCA",
   "PairType",
   "PseudoProperTime",
+  "PseudoProperTimeErr",
   "PseudoProperTimeResolution",
   "PseudoProperTimePull",
   "TRDpidEffPair",
@@ -168,6 +169,9 @@ const char* AliDielectronVarManager::fgkParticleNames[AliDielectronVarManager::k
   "v0ATPCDiffH2",
   "v0CTPCDiffH2",
   "v0Av0CDiffH2",
+  "v0ArpH2FlowV2",         
+  "v0CrpH2FlowV2",      
+  "v0ACrpH2FlowV2",
 
   "MultV0A", 
   "MultV0C",
index 9d69b929e23285867f76d1a84ae6492e2a992a0e..670ea72dda745a2dd9ac78db37109cb20182d4a4 100644 (file)
@@ -201,6 +201,7 @@ public:
     kDCA,                    // distance of closest approach TODO: not implemented yet
     kPairType,               // type of the pair, like like sign ++ unlikesign ...
     kPseudoProperTime,       // pseudo proper time
+    kPseudoProperTimeErr,    // pseudo proper time error
     kPseudoProperTimeResolution,     // resolution for pseudo proper decay time (reconstructed - MC truth)
     kPseudoProperTimePull,   // normalizd resolution for pseudo proper time = (reco - MC truth)/dReco
     kTRDpidEffPair,          // TRD pid efficieny from conversion electrons
@@ -213,13 +214,16 @@ public:
     kYRes,                   // primary vertex y-resolution
     kZRes,                   // primary vertex z-resolution
 
-    // v0 reaction plane quantities from AliEPSelectionTaks
+    //// 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
     kv0ATPCDiffH2,             // V0A-TPC reaction plane difference for 2nd harmonic
     kv0CTPCDiffH2,             // V0C-TPC reaction plane difference for 2nd harmonic
     kv0Av0CDiffH2,             // V0A-V0C reaction plane difference for 2nd harmonic
+    kv0ArpH2FlowV2,          // v2 coefficient with respect to the 2nd order reaction plane from V0-A
+    kv0CrpH2FlowV2,          // v2 coefficient with respect to the 2nd order reaction plane from V0-C
+    kv0ACrpH2FlowV2,         // v2 coefficient with respect to the 2nd order reaction plane from V0-A + V0-C
 
     kMultV0A,                // VZERO multiplicity and ADC amplitudes
     kMultV0C,
@@ -481,7 +485,7 @@ inline void AliDielectronVarManager::FillVarESDtrack(const AliESDtrack *particle
   values[AliDielectronVarManager::kTPCsignalNfrac]= tpcNcls>0?tpcSignalN/tpcNcls:0;
   values[AliDielectronVarManager::kNclsTRD]       = particle->GetNcls(2); // TODO: get rid of the plain numbers
   values[AliDielectronVarManager::kTRDntracklets] = particle->GetTRDntracklets(); // TODO: GetTRDtracklets/GetTRDntracklets?
-  values[AliDielectronVarManager::kTRDpidQuality] = particle->GetTRDpidQuality();
+  values[AliDielectronVarManager::kTRDpidQuality] = particle->GetTRDntrackletsPID();
   values[AliDielectronVarManager::kTPCclsDiff]    = tpcSignalN-tpcNcls;
   values[AliDielectronVarManager::kTrackStatus]   = (Double_t)particle->GetStatus();
   
@@ -655,8 +659,8 @@ inline void AliDielectronVarManager::FillVarAODTrack(const AliAODTrack *particle
   values[AliDielectronVarManager::kNclsITS]       = particle->GetITSNcls();
   values[AliDielectronVarManager::kITSchi2Cl]     = -1;
   values[AliDielectronVarManager::kNclsTPC]       = tpcNcls;
-  values[AliDielectronVarManager::kNclsSTPC]       = tpcNclsS;
-  values[AliDielectronVarManager::kNclsSFracTPC]       = tpcNcls>0?tpcNclsS/tpcNcls:0;
+  values[AliDielectronVarManager::kNclsSTPC]      = tpcNclsS;
+  values[AliDielectronVarManager::kNclsSFracTPC]  = tpcNcls>0?tpcNclsS/tpcNcls:0;
   values[AliDielectronVarManager::kNclsTPCiter1]  = tpcNcls; // not really available in AOD
   values[AliDielectronVarManager::kNFclsTPC]      = 0;
   values[AliDielectronVarManager::kNFclsTPCr]     = 0;
@@ -665,7 +669,7 @@ inline void AliDielectronVarManager::FillVarAODTrack(const AliAODTrack *particle
   values[AliDielectronVarManager::kTRDntracklets] = 0;
   values[AliDielectronVarManager::kTRDpidQuality] = 0;
   
-  values[AliDielectronVarManager::kTPCchi2Cl] = -1;
+  values[AliDielectronVarManager::kTPCchi2Cl]     = particle->Chi2perNDF()*(tpcNcls-5)/tpcNcls;  // it is stored as normalized to tpcNcls-5 (see AliAnalysisTaskESDfilter)
   values[AliDielectronVarManager::kTrackStatus]   = (Double_t)particle->GetStatus();
   
   //TRD pidProbs
@@ -678,7 +682,6 @@ inline void AliDielectronVarManager::FillVarAODTrack(const AliAODTrack *particle
   
   // Fill AliAODTrack interface information
   //
-
   values[AliDielectronVarManager::kKinkIndex0]    = particle->GetProdVertex()->GetType()==AliAODVertex::kKink ? 1 : 0;
 
   Double_t d0z0[2];
@@ -699,7 +702,14 @@ inline void AliDielectronVarManager::FillVarAODTrack(const AliAODTrack *particle
   values[AliDielectronVarManager::kTPCnSigmaPro]=0;
 
   values[AliDielectronVarManager::kITSclusterMap]   =   particle->GetITSClusterMap();
-  
+  values[AliDielectronVarManager::kITSLayerFirstCls] = -1.;
+  for (Int_t iC=0; iC<6; iC++) {
+    if (((particle->GetITSClusterMap()) & (1<<(iC))) > 0) {
+      values[AliDielectronVarManager::kITSLayerFirstCls] = iC;
+      break;
+    }
+  }
+
   AliAODPid *pid=particle->GetDetPid();
   if (pid){
     Double_t mom =pid->GetTPCmomentum();
@@ -723,7 +733,14 @@ inline void AliDielectronVarManager::FillVarAODTrack(const AliAODTrack *particle
     values[AliDielectronVarManager::kTPCnSigmaPro]=tpcNsigmaPro;
     
     values[AliDielectronVarManager::kTRDntracklets] = 0;
-    values[AliDielectronVarManager::kTRDpidQuality] = 0;
+    values[AliDielectronVarManager::kTRDpidQuality] = particle->GetTRDntrackletsPID();
+    Double_t prob[AliPID::kSPECIES];
+    fgPIDResponse->ComputeTRDProbability(particle,AliPID::kSPECIES,prob);
+    values[AliDielectronVarManager::kTRDprobEle]    = prob[AliPID::kElectron];
+    values[AliDielectronVarManager::kTRDprobPio]    = prob[AliPID::kPion];
+
+    values[AliDielectronVarManager::kTOFsignal]=pid->GetTOFsignal();
+    values[AliDielectronVarManager::kTOFbeta]  =0;
 
     Double_t tofNsigmaEle=fgPIDResponse->NumberOfSigmasTOF(particle,AliPID::kElectron);
     Double_t tofNsigmaPio=fgPIDResponse->NumberOfSigmasTOF(particle,AliPID::kPion);
@@ -1044,8 +1061,9 @@ inline void AliDielectronVarManager::FillVarDielectronPair(const AliDielectronPa
 
   Double_t errPseudoProperTime2 = -1;
   values[AliDielectronVarManager::kPsiPair]      = fgEvent ? pair->PsiPair(fgEvent->GetMagneticField()) : -5;
-  values[AliDielectronVarManager::kPseudoProperTime] = fgEvent ? pair->GetKFParticle().GetPseudoProperDecayTime(*(fgEvent->GetPrimaryVertex()), TDatabasePDG::Instance()->GetParticle(443)->Mass(), &errPseudoProperTime2 ) : -1e10;
+  values[AliDielectronVarManager::kPseudoProperTime] = fgEvent ? kfPair.GetPseudoProperDecayTime(*(fgEvent->GetPrimaryVertex()), TDatabasePDG::Instance()->GetParticle(443)->Mass(), &errPseudoProperTime2 ) : -1e10;
   // values[AliDielectronVarManager::kPseudoProperTime] = fgEvent ? pair->GetPseudoProperTime(fgEvent->GetPrimaryVertex()): -1e10;
+  values[AliDielectronVarManager::kPseudoProperTimeErr] = (errPseudoProperTime2 > 0) ? TMath::Sqrt(errPseudoProperTime2) : -1e10;
 
   // Flow quantities
   Double_t delta=0.0;
@@ -1222,6 +1240,9 @@ inline void AliDielectronVarManager::FillVarVEvent(const AliVEvent *event, Doubl
   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::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]) );
 
   // ESD VZERO information
   AliVVZERO* vzeroData = event->GetVZEROData();