]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWG4/PartCorrDep/AliAnaElectron.cxx
remove ; after include
[u/mrichter/AliRoot.git] / PWG4 / PartCorrDep / AliAnaElectron.cxx
index ced4e473cc132592ffaa6b4cb8420956b71ebb80..9d1e312b5fbd108e5105987e8e34d294315359b9 100755 (executable)
   \r
 // --- ROOT system --- \r
 #include <TH2F.h>\r
+#include <TH3F.h>\r
 #include <TParticle.h>\r
 #include <TNtuple.h>\r
 #include <TClonesArray.h>\r
-#include <TObjString.h>\r
+//#include <TObjString.h>\r
 //#include <Riostream.h>\r
 \r
 // --- Analysis system --- \r
@@ -36,7 +37,7 @@
 #include "AliCaloTrackReader.h"\r
 #include "AliMCAnalysisUtils.h"\r
 #include "AliAODCaloCluster.h"\r
-#include "AliFidutialCut.h"\r
+#include "AliFiducialCut.h"\r
 #include "AliAODTrack.h"\r
 #include "AliAODPid.h"\r
 #include "AliCaloPID.h"\r
@@ -54,7 +55,7 @@ ClassImp(AliAnaElectron)
 //____________________________________________________________________________\r
 AliAnaElectron::AliAnaElectron() \r
 : AliAnaPartCorrBaseClass(),fCalorimeter(""),\r
-  fpOverEmin(0.),fpOverEmax(0.),fResidualCut(0.),\r
+  fpOverEmin(0.),fpOverEmax(0.),fResidualCut(0.),fMinClusEne(0.),\r
   fDrCut(0.),fPairDcaCut(0.),fDecayLenCut(0.),fImpactCut(0.),\r
   fAssocPtCut(0.),fMassCut(0.),fSdcaCut(0.),fITSCut(0),\r
   fNTagTrkCut(0),fIPSigCut(0.),fJetEtaCut(0.3),fJetPhiMin(1.8),fJetPhiMax(2.9),\r
@@ -62,7 +63,9 @@ AliAnaElectron::AliAnaElectron()
   //event QA histos\r
   fhImpactXY(0),fhRefMult(0),fhRefMult2(0),\r
   //matching checks\r
-  fh1pOverE(0),fh1EOverp(0),fh1dR(0),fh2EledEdx(0),fh2MatchdEdx(0),fh2dEtadPhi(0),\r
+  fh3pOverE(0),fh3EOverp(0),fh3pOverE2(0),fh3EOverp2(0),fh3pOverE3(0),fh3EOverp3(0),\r
+  fh2pOverE(0),fh2EOverp(0),fh2pOverE2(0),fh2EOverp2(0),\r
+  fh1dR(0),fh2EledEdx(0),fh2MatchdEdx(0),fh2dEtadPhi(0),\r
   fh2dEtadPhiMatched(0),fh2dEtadPhiUnmatched(0),fh2TrackPVsClusterE(0),\r
   fh2TrackPtVsClusterE(0),fh2TrackPhiVsClusterPhi(0),fh2TrackEtaVsClusterEta(0),\r
   //Photonic electron checks\r
@@ -71,13 +74,17 @@ AliAnaElectron::AliAnaElectron()
   fhPtElectron(0),fhPhiElectron(0),fhEtaElectron(0),\r
   fhPtNPE(0),fhPhiNPE(0),fhEtaNPE(0),\r
   fhPtPE(0),fhPhiPE(0),fhEtaPE(0),\r
+  //for comparisons with tracking detectors\r
+  fhPtHadron(0),fhPtNPEleTPC(0),fhPtNPEleTPCTRD(0),fhPtNPEleTTE(0),\r
+  fhPtNPEleEMCAL(0),\r
   //DVM B-tagging\r
   fhDVMBtagCut1(0),fhDVMBtagCut2(0),fhDVMBtagCut3(0),fhDVMBtagQA1(0),fhDVMBtagQA2(0),\r
   fhDVMBtagQA3(0),fhDVMBtagQA4(0),fhDVMBtagQA5(0),\r
   //IPSig B-tagging\r
   fhIPSigBtagQA1(0),fhIPSigBtagQA2(0),fhTagJetPt1x4(0),fhTagJetPt2x3(0),fhTagJetPt3x2(0),\r
+  fhePlusTagJetPt1x4(0),fhePlusTagJetPt2x3(0),fhePlusTagJetPt3x2(0),\r
   //B-Jet histograms\r
-  fhJetType(0),fhBJetXsiFF(0),fhBJetPtFF(0),fhBJetEtaPhi(0),\r
+  fhJetType(0),fhLeadJetType(0),fhBJetXsiFF(0),fhBJetPtFF(0),fhBJetEtaPhi(0),\r
   fhNonBJetXsiFF(0),fhNonBJetPtFF(0),fhNonBJetEtaPhi(0),\r
   /////////////////////////////////////////////////////////////\r
   //Histograms that rely on MC info (not filled for real data)\r
@@ -85,11 +92,14 @@ AliAnaElectron::AliAnaElectron()
   //reco electrons from various sources\r
   fhPhiConversion(0),fhEtaConversion(0),\r
   //for comparisons with tracking detectors\r
-  fhPtHadron(0),fhPtNPEleTPC(0),fhPtNPEleTPCTRD(0),fhPtNPEleTTE(0),\r
+  fhPtTrack(0),\r
+  fhPtNPEBHadron(0),\r
   //for computing efficiency of B-jet tags\r
-  fhBJetPt1x4(0),fhBJetPt2x3(0),fhBJetPt3x2(0),fhDVMJet(0),\r
+  fhBJetPt1x4(0),fhBJetPt2x3(0),fhBJetPt3x2(0),\r
+  fhFakeJetPt1x4(0),fhFakeJetPt2x3(0),fhFakeJetPt3x2(0),fhDVMJet(0),\r
   //MC rate histograms/ntuple\r
-  fMCEleNtuple(0),fhMCBJetElePt(0),fhPtMCHadron(0),fhPtMCElectron(0)\r
+  fMCEleNtuple(0),fhMCBJetElePt(0),fhMCBHadronElePt(0),fhPtMCHadron(0),fhPtMCElectron(0),\r
+  fhMCXYConversion(0),fhMCRadPtConversion(0)\r
 {\r
   //default ctor\r
   \r
@@ -101,7 +111,8 @@ AliAnaElectron::AliAnaElectron()
 //____________________________________________________________________________\r
 AliAnaElectron::AliAnaElectron(const AliAnaElectron & g) \r
   : AliAnaPartCorrBaseClass(g),fCalorimeter(g.fCalorimeter),\r
-    fpOverEmin(g.fpOverEmin),fpOverEmax(g.fpOverEmax),fResidualCut(g.fResidualCut),\r
+    fpOverEmin(g.fpOverEmin),fpOverEmax(g.fpOverEmax),\r
+    fResidualCut(g.fResidualCut),fMinClusEne(g.fMinClusEne),\r
     fDrCut(g.fDrCut),fPairDcaCut(g.fPairDcaCut),fDecayLenCut(g.fDecayLenCut),fImpactCut(g.fImpactCut),\r
     fAssocPtCut(g.fAssocPtCut),fMassCut(g.fMassCut),fSdcaCut(g.fSdcaCut),fITSCut(g.fITSCut),\r
     fNTagTrkCut(g.fNTagTrkCut),fIPSigCut(g.fIPSigCut),\r
@@ -110,7 +121,12 @@ AliAnaElectron::AliAnaElectron(const AliAnaElectron & g)
     //event QA histos\r
     fhImpactXY(g.fhImpactXY),fhRefMult(g.fhRefMult),fhRefMult2(g.fhRefMult2),\r
     //matching checks\r
-    fh1pOverE(g.fh1pOverE),fh1EOverp(g.fh1EOverp),fh1dR(g.fh1dR),fh2EledEdx(g.fh2EledEdx),\r
+    fh3pOverE(g.fh3pOverE),fh3EOverp(g.fh3EOverp),\r
+    fh3pOverE2(g.fh3pOverE2),fh3EOverp2(g.fh3EOverp2),\r
+    fh3pOverE3(g.fh3pOverE3),fh3EOverp3(g.fh3EOverp3),\r
+    fh2pOverE(g.fh2pOverE),fh2EOverp(g.fh2EOverp),\r
+    fh2pOverE2(g.fh2pOverE2),fh2EOverp2(g.fh2EOverp2),\r
+    fh1dR(g.fh1dR),fh2EledEdx(g.fh2EledEdx),\r
     fh2MatchdEdx(g.fh2MatchdEdx),fh2dEtadPhi(g.fh2dEtadPhi),\r
     fh2dEtadPhiMatched(g.fh2dEtadPhiMatched),fh2dEtadPhiUnmatched(g.fh2dEtadPhiUnmatched),\r
     fh2TrackPVsClusterE(g.fh2TrackPVsClusterE),fh2TrackPtVsClusterE(g.fh2TrackPtVsClusterE),\r
@@ -121,6 +137,10 @@ AliAnaElectron::AliAnaElectron(const AliAnaElectron & g)
     fhPtElectron(g.fhPtElectron),fhPhiElectron(g.fhPhiElectron),fhEtaElectron(g.fhEtaElectron),\r
     fhPtNPE(g.fhPtNPE),fhPhiNPE(g.fhPhiNPE),fhEtaNPE(g.fhEtaNPE),\r
     fhPtPE(g.fhPtPE),fhPhiPE(g.fhPhiPE),fhEtaPE(g.fhEtaPE),\r
+    //for comparisons with tracking detectors\r
+    fhPtHadron(g.fhPtHadron),fhPtNPEleTPC(g.fhPtNPEleTPC),\r
+    fhPtNPEleTPCTRD(g.fhPtNPEleTPCTRD),fhPtNPEleTTE(g.fhPtNPEleTTE),\r
+    fhPtNPEleEMCAL(g.fhPtNPEleEMCAL),\r
     //DVM B-tagging\r
     fhDVMBtagCut1(g.fhDVMBtagCut1),fhDVMBtagCut2(g.fhDVMBtagCut2),fhDVMBtagCut3(g.fhDVMBtagCut3),\r
     fhDVMBtagQA1(g.fhDVMBtagQA1),fhDVMBtagQA2(g.fhDVMBtagQA2),\r
@@ -128,24 +148,30 @@ AliAnaElectron::AliAnaElectron(const AliAnaElectron & g)
     //IPSig B-tagging\r
     fhIPSigBtagQA1(g.fhIPSigBtagQA1),fhIPSigBtagQA2(g.fhIPSigBtagQA2),\r
     fhTagJetPt1x4(g.fhTagJetPt1x4),fhTagJetPt2x3(g.fhTagJetPt2x3),fhTagJetPt3x2(g.fhTagJetPt3x2),\r
+    fhePlusTagJetPt1x4(g.fhePlusTagJetPt1x4),fhePlusTagJetPt2x3(g.fhePlusTagJetPt2x3),\r
+    fhePlusTagJetPt3x2(g.fhePlusTagJetPt3x2),\r
     //B-Jet histograms\r
-    fhJetType(g.fhJetType),fhBJetXsiFF(g.fhBJetXsiFF),fhBJetPtFF(g.fhBJetPtFF),\r
-    fhBJetEtaPhi(g.fhBJetEtaPhi),fhNonBJetXsiFF(g.fhNonBJetXsiFF),fhNonBJetPtFF(g.fhNonBJetPtFF),\r
-    fhNonBJetEtaPhi(g.fhNonBJetEtaPhi),\r
+    fhJetType(g.fhJetType),fhLeadJetType(g.fhLeadJetType),fhBJetXsiFF(g.fhBJetXsiFF),\r
+    fhBJetPtFF(g.fhBJetPtFF),fhBJetEtaPhi(g.fhBJetEtaPhi),fhNonBJetXsiFF(g.fhNonBJetXsiFF),\r
+    fhNonBJetPtFF(g.fhNonBJetPtFF),fhNonBJetEtaPhi(g.fhNonBJetEtaPhi),\r
     /////////////////////////////////////////////////////////////\r
     //Histograms that rely on MC info (not filled for real data)\r
     fEleNtuple(g.fEleNtuple),\r
     //reco electrons from various sources\r
     fhPhiConversion(g.fhPhiConversion),fhEtaConversion(g.fhEtaConversion),\r
     //for comparisons with tracking detectors\r
-    fhPtHadron(g.fhPtHadron),fhPtNPEleTPC(g.fhPtNPEleTPC),\r
-    fhPtNPEleTPCTRD(g.fhPtNPEleTPCTRD),fhPtNPEleTTE(g.fhPtNPEleTTE),\r
+    fhPtTrack(g.fhPtTrack),\r
+    fhPtNPEBHadron(g.fhPtNPEBHadron),\r
     //for computing efficiency of B-jet tags\r
     fhBJetPt1x4(g.fhBJetPt1x4),fhBJetPt2x3(g.fhBJetPt2x3),\r
-    fhBJetPt3x2(g.fhBJetPt3x2),fhDVMJet(g.fhDVMJet),\r
+    fhBJetPt3x2(g.fhBJetPt3x2),\r
+    fhFakeJetPt1x4(g.fhFakeJetPt1x4),fhFakeJetPt2x3(g.fhBJetPt2x3),\r
+    fhFakeJetPt3x2(g.fhFakeJetPt3x2),fhDVMJet(g.fhDVMJet),\r
     //MC rate histograms/ntuple\r
     fMCEleNtuple(g.fMCEleNtuple),fhMCBJetElePt(g.fhMCBJetElePt),\r
-    fhPtMCHadron(g.fhPtMCHadron),fhPtMCElectron(g.fhPtMCElectron)\r
+    fhMCBHadronElePt(g.fhMCBHadronElePt),\r
+    fhPtMCHadron(g.fhPtMCHadron),fhPtMCElectron(g.fhPtMCElectron),\r
+    fhMCXYConversion(g.fhMCXYConversion),fhMCRadPtConversion(g.fhMCRadPtConversion)\r
 {\r
   // cpy ctor\r
   \r
@@ -161,6 +187,7 @@ AliAnaElectron & AliAnaElectron::operator = (const AliAnaElectron & g)
   fpOverEmin = g.fpOverEmin;\r
   fpOverEmax = g.fpOverEmax;\r
   fResidualCut = g.fResidualCut;\r
+  fMinClusEne = g.fMinClusEne;\r
   fDrCut = g.fDrCut;\r
   fPairDcaCut = g.fPairDcaCut;\r
   fDecayLenCut = g.fDecayLenCut;\r
@@ -180,8 +207,16 @@ AliAnaElectron & AliAnaElectron::operator = (const AliAnaElectron & g)
   fhRefMult  = g.fhRefMult;\r
   fhRefMult2 = g.fhRefMult2;\r
   //matching checks\r
-  fh1pOverE = g.fh1pOverE;\r
-  fh1EOverp = g.fh1EOverp;\r
+  fh3pOverE  = g.fh3pOverE;\r
+  fh3EOverp  = g.fh3EOverp;\r
+  fh3pOverE2 = g.fh3pOverE2;\r
+  fh3EOverp2 = g.fh3EOverp2;\r
+  fh3pOverE3 = g.fh3pOverE3;\r
+  fh3EOverp3 = g.fh3EOverp3;\r
+  fh2pOverE  = g.fh2pOverE;\r
+  fh2EOverp  = g.fh2EOverp;\r
+  fh2pOverE2 = g.fh2pOverE2;\r
+  fh2EOverp2 = g.fh2EOverp2;\r
   fh1dR     = g.fh1dR;\r
   fh2EledEdx = g.fh2EledEdx;\r
   fh2MatchdEdx = g.fh2MatchdEdx;\r
@@ -205,6 +240,10 @@ AliAnaElectron & AliAnaElectron::operator = (const AliAnaElectron & g)
   fhPtPE = g.fhPtPE;\r
   fhPhiPE = g.fhPhiPE;\r
   fhEtaPE = g.fhEtaPE; \r
+  //for comparisons with tracking detectors\r
+  fhPtHadron = g.fhPtHadron; fhPtNPEleTPC = g.fhPtNPEleTPC; \r
+  fhPtNPEleTPCTRD = g.fhPtNPEleTPCTRD; fhPtNPEleTTE = g.fhPtNPEleTTE; \r
+  fhPtNPEleEMCAL = g.fhPtNPEleEMCAL; \r
   //DVM B-tagging\r
   fhDVMBtagCut1 = g.fhDVMBtagCut1;\r
   fhDVMBtagCut2 = g.fhDVMBtagCut2; \r
@@ -220,8 +259,12 @@ AliAnaElectron & AliAnaElectron::operator = (const AliAnaElectron & g)
   fhTagJetPt1x4 = g.fhTagJetPt1x4; \r
   fhTagJetPt2x3 = g.fhTagJetPt2x3; \r
   fhTagJetPt3x2 = g.fhTagJetPt3x2; \r
+  fhePlusTagJetPt1x4 = g.fhePlusTagJetPt1x4; \r
+  fhePlusTagJetPt2x3 = g.fhePlusTagJetPt2x3; \r
+  fhePlusTagJetPt3x2 = g.fhePlusTagJetPt3x2; \r
   //B-Jet histograms\r
   fhJetType = g.fhJetType; \r
+  fhLeadJetType = g.fhLeadJetType; \r
   fhBJetXsiFF = g.fhBJetXsiFF; \r
   fhBJetPtFF = g.fhBJetPtFF; \r
   fhBJetEtaPhi = g.fhBJetEtaPhi; \r
@@ -235,14 +278,19 @@ AliAnaElectron & AliAnaElectron::operator = (const AliAnaElectron & g)
   fhPhiConversion = g.fhPhiConversion; \r
   fhEtaConversion = g.fhEtaConversion;\r
   //for comparisons with tracking detectors\r
-  fhPtHadron = g.fhPtHadron; fhPtNPEleTPC = g.fhPtNPEleTPC; \r
-  fhPtNPEleTPCTRD = g.fhPtNPEleTPCTRD; fhPtNPEleTTE = g.fhPtNPEleTTE; \r
+  fhPtTrack = g.fhPtTrack;\r
+  fhPtNPEBHadron = g.fhPtNPEBHadron;\r
   //for computing efficiency of B-jet tags\r
   fhBJetPt1x4 = g.fhBJetPt1x4; fhBJetPt2x3 = g.fhBJetPt2x3; \r
-  fhBJetPt3x2 = g.fhBJetPt3x2; fhDVMJet = g.fhDVMJet;\r
+  fhBJetPt3x2 = g.fhBJetPt3x2;\r
+  fhFakeJetPt1x4 = g.fhFakeJetPt1x4; fhFakeJetPt2x3 = g.fhFakeJetPt2x3; \r
+  fhFakeJetPt3x2 = g.fhFakeJetPt3x2; fhDVMJet = g.fhDVMJet;\r
   //MC rate histograms/ntuple\r
   fMCEleNtuple = g.fMCEleNtuple; fhMCBJetElePt = g.fhMCBJetElePt; \r
+  fhMCBHadronElePt = g.fhMCBHadronElePt;\r
   fhPtMCHadron = g.fhPtMCHadron; fhPtMCElectron = g.fhPtMCElectron; \r
+  fhMCXYConversion = g.fhMCXYConversion;\r
+  fhMCRadPtConversion = g.fhMCRadPtConversion;\r
 \r
   return *this;\r
   \r
@@ -264,9 +312,9 @@ TList *  AliAnaElectron::GetCreateOutputObjects()
   TList * outputContainer = new TList() ; \r
   outputContainer->SetName("ElectronHistos") ; \r
 \r
-  Int_t nptbins  = GetHistoNPtBins();\r
-  Int_t nphibins = GetHistoNPhiBins();\r
-  Int_t netabins = GetHistoNEtaBins();\r
+  Int_t nptbins  = GetHistoPtBins();\r
+  Int_t nphibins = GetHistoPhiBins();\r
+  Int_t netabins = GetHistoEtaBins();\r
   Float_t ptmax  = GetHistoPtMax();\r
   Float_t phimax = GetHistoPhiMax();\r
   Float_t etamax = GetHistoEtaMax();\r
@@ -276,16 +324,25 @@ TList *  AliAnaElectron::GetCreateOutputObjects()
 \r
   //event QA\r
   fhImpactXY = new TH1F("hImpactXY","Impact parameter for all tracks",200,-10,10.);\r
-  fhRefMult = new TH1F("hRefMult" ,"refmult QA: " ,100,0,200);\r
-  fhRefMult2  = new TH1F("hRefMult2" ,"refmult2 QA: " ,100,0,200);\r
+  fhRefMult = new TH1F("hRefMult" ,"refmult QA: " ,5000,0,5000);\r
+  fhRefMult2  = new TH1F("hRefMult2" ,"refmult2 QA: " ,5000,0,5000);\r
 \r
   outputContainer->Add(fhImpactXY);\r
   outputContainer->Add(fhRefMult);\r
   outputContainer->Add(fhRefMult2);\r
   \r
   //matching checks\r
-  fh1pOverE = new TH1F("h1pOverE","EMCAL-TRACK matches p/E",200,0.,10.);\r
-  fh1EOverp = new TH1F("h1EOverp","EMCAL-TRACK matches E/p",200,0.,10.);\r
+  fh3pOverE  = new TH3F("h3pOverE"    ,"EMCAL-TRACK matches p/E",nptbins,ptmin,ptmax,200,0.,10.,30,0,30);\r
+  fh3EOverp  = new TH3F("h3EOverp"    ,"EMCAL-TRACK matches E/p",nptbins,ptmin,ptmax,200,0.,5. ,30,0,30);\r
+  fh3pOverE2 = new TH3F("h3pOverE_Trk","EMCAL-TRACK matches p/E",nptbins,ptmin,ptmax,200,0.,10.,30,0,30);\r
+  fh3EOverp2 = new TH3F("h3EOverp_Trk","EMCAL-TRACK matches E/p",nptbins,ptmin,ptmax,200,0.,5. ,30,0,30);\r
+  fh3pOverE3 = new TH3F("h3pOverE_Tpc","EMCAL-TRACK matches p/E",nptbins,ptmin,ptmax,200,0.,10.,30,0,30);\r
+  fh3EOverp3 = new TH3F("h3EOverp_Tpc","EMCAL-TRACK matches E/p",nptbins,ptmin,ptmax,200,0.,5. ,30,0,30);\r
+  fh2pOverE  = new TH2F("h2pOverE"    ,"EMCAL-TRACK matches p/E",nptbins,ptmin,ptmax,200,0.,10.);\r
+  fh2EOverp  = new TH2F("h2EOverp"    ,"EMCAL-TRACK matches E/p",nptbins,ptmin,ptmax,200,0.,5. );\r
+  fh2pOverE2 = new TH2F("h2pOverE_Trk","EMCAL-TRACK matches p/E",nptbins,ptmin,ptmax,200,0.,10.);\r
+  fh2EOverp2 = new TH2F("h2EOverp_Trk","EMCAL-TRACK matches E/p",nptbins,ptmin,ptmax,200,0.,5. );\r
+\r
   fh1dR = new TH1F("h1dR","EMCAL-TRACK matches dR",300, 0.,TMath::Pi());\r
   fh2EledEdx = new TH2F("h2EledEdx","dE/dx vs. p for electrons",200,0.,50.,200,0.,400.);\r
   fh2MatchdEdx = new TH2F("h2MatchdEdx","dE/dx vs. p for all matches",200,0.,50.,200,0.,400.);\r
@@ -298,8 +355,16 @@ TList *  AliAnaElectron::GetCreateOutputObjects()
   fh2TrackPhiVsClusterPhi = new TH2F("h2TrackPhiVsClusterPhi","h2TrackPhiVsClusterPhi",nphibins,phimin,phimax,nphibins,phimin,phimax);\r
   fh2TrackEtaVsClusterEta = new TH2F("h2TrackEtaVsClusterEta","h2TrackEtaVsClusterEta",netabins,etamin,etamax,netabins,etamin,etamax);\r
 \r
-  outputContainer->Add(fh1pOverE) ; \r
-  outputContainer->Add(fh1EOverp) ; \r
+  outputContainer->Add(fh3pOverE) ;\r
+  outputContainer->Add(fh3EOverp) ;\r
+  outputContainer->Add(fh3pOverE2) ;\r
+  outputContainer->Add(fh3EOverp2) ;\r
+  outputContainer->Add(fh3pOverE3) ;\r
+  outputContainer->Add(fh3EOverp3) ;\r
+  outputContainer->Add(fh2pOverE) ;\r
+  outputContainer->Add(fh2EOverp) ;\r
+  outputContainer->Add(fh2pOverE2) ;\r
+  outputContainer->Add(fh2EOverp2) ;\r
   outputContainer->Add(fh1dR) ; \r
   outputContainer->Add(fh2EledEdx) ;\r
   outputContainer->Add(fh2MatchdEdx) ;\r
@@ -339,6 +404,26 @@ TList *  AliAnaElectron::GetCreateOutputObjects()
   outputContainer->Add(fhPhiPE) ; \r
   outputContainer->Add(fhEtaPE) ;\r
 \r
+  //These histograms are mixed REAL/MC:\r
+  //Bins along y-axis are:  \r
+  //0 - unfiltered (filled for both real and MC data) \r
+  //1 - bottom, 2 - charm, 3 - charm from bottom  (MC only)\r
+  //4 - conversion, 5 - Dalitz, 6 - W and Z, 7 - junk/unknown (MC only)\r
+  //8 - misidentified (MC only)\r
+\r
+  //histograms for comparison to tracking detectors\r
+  fhPtHadron = new TH2F("hPtHadron","Charged hadrons w/in EMCAL acceptance",nptbins,ptmin,ptmax,10,0,10);\r
+  fhPtNPEleTPC = new TH2F("hPtNPEleTPC","Non-phot. Electrons identified by TPC w/in EMCAL acceptance",nptbins,ptmin,ptmax,10,0,10);\r
+  fhPtNPEleTPCTRD = new TH2F("hPtNPEleTPCTRD","Non-phot. Electrons identified by TPC+TRD w/in EMCAL acceptance",nptbins,ptmin,ptmax,10,0,10);\r
+  fhPtNPEleTTE = new TH2F("hPtNPEleTTE","Non-phot. Electrons identified by TPC+TRD+EMCAL w/in EMCAL acceptance",nptbins,ptmin,ptmax,10,0,10);    \r
+  fhPtNPEleEMCAL = new TH2F("hPtNPEleEMCAL","Non-phot. Electrons identified by EMCAL w/in EMCAL acceptance",nptbins,ptmin,ptmax,10,0,10);\r
+  \r
+  outputContainer->Add(fhPtHadron);\r
+  outputContainer->Add(fhPtNPEleTPC);\r
+  outputContainer->Add(fhPtNPEleTPCTRD);\r
+  outputContainer->Add(fhPtNPEleTTE);\r
+  outputContainer->Add(fhPtNPEleEMCAL);\r
+\r
   //B-tagging\r
   fhDVMBtagCut1 = new TH2F("hdvmbtag_cut1","DVM B-tag result cut1", 10,0,10 ,nptbins,ptmin,ptmax);\r
   fhDVMBtagCut2 = new TH2F("hdvmbtag_cut2","DVM B-tag result cut2", 10,0,10 ,nptbins,ptmin,ptmax);\r
@@ -361,18 +446,25 @@ TList *  AliAnaElectron::GetCreateOutputObjects()
   //IPSig B-tagging\r
   fhIPSigBtagQA1  = new TH1F("hipsigbtag_qa1" ,"IPSig B-tag QA: # tag tracks", 20,0,20);\r
   fhIPSigBtagQA2  = new TH1F("hipsigbtag_qa2" ,"IPSig B-tag QA: IP significance", 200,-10.,10.);\r
-  fhTagJetPt1x4 = new TH1F("hTagJetPt1x4","tagged jet pT (1 track, ipSignif>4);p_{T}",1000,0.,100.);\r
-  fhTagJetPt2x3 = new TH1F("hTagJetPt2x3","tagged jet pT (2 track, ipSignif>3);p_{T}",1000,0.,100.);\r
-  fhTagJetPt3x2 = new TH1F("hTagJetPt3x2","tagged jet pT (3 track, ipSignif>2);p_{T}",1000,0.,100.);\r
+  fhTagJetPt1x4 = new TH1F("hTagJetPt1x4","tagged jet pT (1 track, ipSignif>4);p_{T}",300,0.,300.);\r
+  fhTagJetPt2x3 = new TH1F("hTagJetPt2x3","tagged jet pT (2 track, ipSignif>3);p_{T}",300,0.,300.);\r
+  fhTagJetPt3x2 = new TH1F("hTagJetPt3x2","tagged jet pT (3 track, ipSignif>2);p_{T}",300,0.,300.);\r
+  fhePlusTagJetPt1x4 = new TH1F("hePlusTagJetPt1x4","tagged eJet pT (1 track, ipSignif>4);p_{T}",300,0.,300.);\r
+  fhePlusTagJetPt2x3 = new TH1F("hePlusTagJetPt2x3","tagged eJet pT (2 track, ipSignif>3);p_{T}",300,0.,300.);\r
+  fhePlusTagJetPt3x2 = new TH1F("hePlusTagJetPt3x2","tagged eJet pT (3 track, ipSignif>2);p_{T}",300,0.,300.);\r
 \r
   outputContainer->Add(fhIPSigBtagQA1) ;\r
   outputContainer->Add(fhIPSigBtagQA2) ;\r
   outputContainer->Add(fhTagJetPt1x4);\r
   outputContainer->Add(fhTagJetPt2x3);\r
   outputContainer->Add(fhTagJetPt3x2);\r
+  outputContainer->Add(fhePlusTagJetPt1x4);\r
+  outputContainer->Add(fhePlusTagJetPt2x3);\r
+  outputContainer->Add(fhePlusTagJetPt3x2);\r
 \r
   //B-Jet histograms\r
-  fhJetType = new TH2F("hJetType","# jets passing each tag method vs jet pt",10,0,10,300,0.,300.);\r
+  fhJetType = new TH2F("hJetType","# jets passing each tag method vs jet pt",15,0,15,300,0.,300.);\r
+  fhLeadJetType = new TH2F("hLeadJetType","# leading jets passing each tag method vs jet pt",15,0,15,300,0.,300.);\r
   fhBJetXsiFF = new TH2F("hBJetXsiFF","B-jet #Xsi Frag. Fn.",100,0.,10.,300,0.,300.);\r
   fhBJetPtFF = new TH2F("hBJetPtFF","B-jet p_{T} Frag. Fn.",nptbins,ptmin,ptmax,300,0.,300.);\r
   fhBJetEtaPhi = new TH2F("hBJetEtaPhi","B-jet eta-phi distribution",netabins,etamin,etamax,nphibins,phimin,phimax);\r
@@ -381,6 +473,7 @@ TList *  AliAnaElectron::GetCreateOutputObjects()
   fhNonBJetEtaPhi = new TH2F("hNonBJetEtaPhi","Non B-jet eta-phi distribution",netabins,etamin,etamax,nphibins,phimin,phimax);\r
 \r
   outputContainer->Add(fhJetType);\r
+  outputContainer->Add(fhLeadJetType);\r
   outputContainer->Add(fhBJetXsiFF);\r
   outputContainer->Add(fhBJetPtFF);\r
   outputContainer->Add(fhBJetEtaPhi);\r
@@ -399,7 +492,7 @@ TList *  AliAnaElectron::GetCreateOutputObjects()
 \r
     //electrons from various MC sources\r
     fhPhiConversion = new TH2F("hPhiConversion","Conversion Electron phi vs pT",nptbins,ptmin,ptmax,nphibins,phimin,phimax);\r
-    fhEtaConversion = new TH2F("hEtaConversion","Conversion Electron eta vs. eta",nptbins,ptmin,ptmax,netabins,etamin,etamax);\r
+    fhEtaConversion = new TH2F("hEtaConversion","Conversion Electron eta vs. pT",nptbins,ptmin,ptmax,netabins,etamin,etamax);\r
 \r
     outputContainer->Add(fhPhiConversion);\r
     outputContainer->Add(fhEtaConversion);\r
@@ -408,25 +501,27 @@ TList *  AliAnaElectron::GetCreateOutputObjects()
     //4 - conversion, 5 - Dalitz, 6 - W and Z, 7 - junk/unknown, 8 - misidentified\r
 \r
     //histograms for comparison to tracking detectors\r
-    fhPtHadron = new TH2F("hPtHadron","Charged hadrons w/in EMCAL acceptance",nptbins,ptmin,ptmax,10,0,10);\r
-    fhPtNPEleTPC = new TH2F("hPtNPEleTPC","Non-phot. Electrons identified by TPC w/in EMCAL acceptance",nptbins,ptmin,ptmax,10,0,10);\r
-    fhPtNPEleTPCTRD = new TH2F("hPtNPEleTPCTRD","Non-phot. Electrons identified by TPC+TRD w/in EMCAL acceptance",nptbins,ptmin,ptmax,10,0,10);\r
-    fhPtNPEleTTE = new TH2F("hPtNPEleTTE","Non-phot. Electrons identified by TPC+TRD+EMCAL w/in EMCAL acceptance",nptbins,ptmin,ptmax,10,0,10);\r
+    fhPtTrack  = new TH2F("hPtTrack","Track w/in EMCAL acceptance",nptbins,ptmin,ptmax,10,0,10);\r
+    fhPtNPEBHadron = new TH2F("hPtNPEBHadron","Non-phot. b-electrons (TPC+TRD+EMCAL) vs B-hadron pt w/in EMCAL acceptance",nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);\r
 \r
-    outputContainer->Add(fhPtHadron);\r
-    outputContainer->Add(fhPtNPEleTPC);\r
-    outputContainer->Add(fhPtNPEleTPCTRD);\r
-    outputContainer->Add(fhPtNPEleTTE);\r
+    outputContainer->Add(fhPtTrack);\r
+    outputContainer->Add(fhPtNPEBHadron);\r
 \r
     //for computing efficiency of IPSig tag\r
-    fhBJetPt1x4 = new TH1F("hBJetPt1x4","tagged B-jet pT (1 track, ipSignif>4);p_{T}",1000,0.,100.);\r
-    fhBJetPt2x3 = new TH1F("hBJetPt2x3","tagged B-jet pT (2 track, ipSignif>3);p_{T}",1000,0.,100.);\r
-    fhBJetPt3x2 = new TH1F("hBJetPt3x2","tagged B-jet pT (3 track, ipSignif>2);p_{T}",1000,0.,100.);\r
+    fhBJetPt1x4 = new TH1F("hBJetPt1x4","tagged B-jet pT (1 track, ipSignif>4);p_{T}",300,0.,300.);\r
+    fhBJetPt2x3 = new TH1F("hBJetPt2x3","tagged B-jet pT (2 track, ipSignif>3);p_{T}",300,0.,300.);\r
+    fhBJetPt3x2 = new TH1F("hBJetPt3x2","tagged B-jet pT (3 track, ipSignif>2);p_{T}",300,0.,300.);\r
+    fhFakeJetPt1x4 = new TH1F("hFakeJetPt1x4","fake tagged B-jet pT (1 track, ipSignif>4);p_{T}",300,0.,300.);\r
+    fhFakeJetPt2x3 = new TH1F("hFakeJetPt2x3","fake tagged B-jet pT (2 track, ipSignif>3);p_{T}",300,0.,300.);\r
+    fhFakeJetPt3x2 = new TH1F("hFakeJetPt3x2","fake tagged B-jet pT (3 track, ipSignif>2);p_{T}",300,0.,300.);\r
     fhDVMJet = new TH2F("hDVM_algo","# DVM jets passing vs Mc-Bjet",10,0,10,300,0.,300.);\r
 \r
     outputContainer->Add(fhBJetPt1x4);\r
     outputContainer->Add(fhBJetPt2x3);\r
     outputContainer->Add(fhBJetPt3x2);\r
+    outputContainer->Add(fhFakeJetPt1x4);\r
+    outputContainer->Add(fhFakeJetPt2x3);\r
+    outputContainer->Add(fhFakeJetPt3x2);\r
     outputContainer->Add(fhDVMJet);\r
 \r
     //MC Only histograms\r
@@ -438,61 +533,70 @@ TList *  AliAnaElectron::GetCreateOutputObjects()
     }\r
 \r
     fhMCBJetElePt = new TH2F("hMCBJetElePt","MC B-jet pT vs. electron pT",300,0.,300.,300,0.,300.);\r
+    fhMCBHadronElePt = new TH2F("hMCBHadronElePt","MC B-hadron pT vs. electron pT",nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);\r
     fhPtMCHadron = new TH1F("hPtMCHadron","MC Charged hadrons w/in EMCAL acceptance",nptbins,ptmin,ptmax);\r
 \r
     //Bins along y-axis are:  0 - unfiltered, 1 - bottom, 2 - charm, 3 - charm from bottom,\r
     //4 - conversion, 5 - Dalitz, 6 - W and Z, 7 - junk/unknown\r
     fhPtMCElectron = new TH2F("hPtMCElectron","MC electrons from various sources w/in EMCAL acceptance",nptbins,ptmin,ptmax,10,0,10);\r
 \r
+    fhMCXYConversion = new TH2F("hMCXYConversion","XvsY of conversion electrons",400,-400.,400.,400,-400.,400.);\r
+    fhMCRadPtConversion = new TH2F("hMCRadPtConversion","Radius vs pT of conversion electrons",200,0.,400.,nptbins,ptmin,ptmax);\r
+\r
     outputContainer->Add(fhMCBJetElePt);\r
+    outputContainer->Add(fhMCBHadronElePt);\r
     outputContainer->Add(fhPtMCHadron);\r
     outputContainer->Add(fhPtMCElectron);\r
+    outputContainer->Add(fhMCXYConversion);\r
+    outputContainer->Add(fhMCRadPtConversion);\r
 \r
   }//Histos with MC\r
   \r
   //Save parameters used for analysis\r
-  TString parList ; //this will be list of parameters used for this analysis.\r
-  char onePar[500] ;\r
-  \r
-  sprintf(onePar,"--- AliAnaElectron ---\n") ;\r
-  parList+=onePar ;    \r
-  sprintf(onePar,"fCalorimeter: %s\n",fCalorimeter.Data()) ;\r
-  parList+=onePar ;  \r
-  sprintf(onePar,"fpOverEmin: %f\n",fpOverEmin) ;\r
-  parList+=onePar ;  \r
-  sprintf(onePar,"fpOverEmax: %f\n",fpOverEmax) ;\r
-  parList+=onePar ;  \r
-  sprintf(onePar,"fResidualCut: %f\n",fResidualCut) ;\r
-  parList+=onePar ;  \r
-  sprintf(onePar,"---DVM Btagging\n");\r
-  parList+=onePar ;\r
-  sprintf(onePar,"max IP-cut (e,h): %f\n",fImpactCut);\r
-  parList+=onePar ;\r
-  sprintf(onePar,"min ITS-hits: %d\n",fITSCut);\r
-  parList+=onePar ;\r
-  sprintf(onePar,"max dR (e,h): %f\n",fDrCut);\r
-  parList+=onePar ;\r
-  sprintf(onePar,"max pairDCA: %f\n",fPairDcaCut);\r
-  parList+=onePar ;\r
-  sprintf(onePar,"max decaylength: %f\n",fDecayLenCut);\r
-  parList+=onePar ;\r
-  sprintf(onePar,"min Associated Pt: %f\n",fAssocPtCut);\r
-  parList+=onePar ;\r
-  sprintf(onePar,"---IPSig Btagging\n");\r
-  parList+=onePar ;\r
-  sprintf(onePar,"min tag track: %d\n",fNTagTrkCut);\r
-  parList+=onePar ;\r
-  sprintf(onePar,"min IP significance: %f\n",fIPSigCut);\r
-  parList+=onePar ;\r
-\r
-  //Get parameters set in base class.\r
-  parList += GetBaseParametersList() ;\r
-  \r
-  //Get parameters set in FidutialCut class (not available yet)\r
-  //parlist += GetFidCut()->GetFidCutParametersList() \r
-  \r
-  TObjString *oString= new TObjString(parList) ;\r
-  outputContainer->Add(oString);\r
+//  TString parList ; //this will be list of parameters used for this analysis.\r
+//  char onePar[500] ;\r
+//  \r
+//  sprintf(onePar,"--- AliAnaElectron ---\n") ;\r
+//  parList+=onePar ;  \r
+//  sprintf(onePar,"fCalorimeter: %s\n",fCalorimeter.Data()) ;\r
+//  parList+=onePar ;  \r
+//  sprintf(onePar,"fpOverEmin: %f\n",fpOverEmin) ;\r
+//  parList+=onePar ;  \r
+//  sprintf(onePar,"fpOverEmax: %f\n",fpOverEmax) ;\r
+//  parList+=onePar ;  \r
+//  sprintf(onePar,"fResidualCut: %f\n",fResidualCut) ;\r
+//  parList+=onePar ;  \r
+//  sprintf(onePar,"fMinClusEne: %f\n",fMinClusEne) ;\r
+//  parList+=onePar ;\r
+//  sprintf(onePar,"---DVM Btagging\n");\r
+//  parList+=onePar ;\r
+//  sprintf(onePar,"max IP-cut (e,h): %f\n",fImpactCut);\r
+//  parList+=onePar ;\r
+//  sprintf(onePar,"min ITS-hits: %d\n",fITSCut);\r
+//  parList+=onePar ;\r
+//  sprintf(onePar,"max dR (e,h): %f\n",fDrCut);\r
+//  parList+=onePar ;\r
+//  sprintf(onePar,"max pairDCA: %f\n",fPairDcaCut);\r
+//  parList+=onePar ;\r
+//  sprintf(onePar,"max decaylength: %f\n",fDecayLenCut);\r
+//  parList+=onePar ;\r
+//  sprintf(onePar,"min Associated Pt: %f\n",fAssocPtCut);\r
+//  parList+=onePar ;\r
+//  sprintf(onePar,"---IPSig Btagging\n");\r
+//  parList+=onePar ;\r
+//  sprintf(onePar,"min tag track: %d\n",fNTagTrkCut);\r
+//  parList+=onePar ;\r
+//  sprintf(onePar,"min IP significance: %f\n",fIPSigCut);\r
+//  parList+=onePar ;\r
+//\r
+//  //Get parameters set in base class.\r
+//  parList += GetBaseParametersList() ;\r
+//  \r
+//  //Get parameters set in FiducialCut class (not available yet)\r
+//  //parlist += GetFidCut()->GetFidCutParametersList() \r
+//  \r
+//  TObjString *oString= new TObjString(parList) ;\r
+//  outputContainer->Add(oString);\r
   \r
   return outputContainer ;\r
   \r
@@ -527,8 +631,9 @@ void AliAnaElectron::InitParameters()
 \r
   fCalorimeter = "EMCAL" ;\r
   fpOverEmin = 0.5;\r
-  fpOverEmax = 1.5;\r
+  fpOverEmax = 1.2;\r
   fResidualCut = 0.02;\r
+  fMinClusEne = 4.0;\r
   //DVM B-tagging\r
   fDrCut       = 1.0; \r
   fPairDcaCut  = 0.02;\r
@@ -557,8 +662,6 @@ void  AliAnaElectron::MakeAnalysisFillAOD()
   // Also fill some QA histograms\r
   //\r
 \r
-  TObjArray *cl = new TObjArray();\r
-\r
   Double_t bfield = 0.;\r
   if(GetReader()->GetDataType() != AliCaloTrackReader::kMC) bfield = GetReader()->GetBField();\r
 \r
@@ -567,7 +670,8 @@ void  AliAnaElectron::MakeAnalysisFillAOD()
     printf("This class not yet implemented for PHOS\n");\r
     abort();\r
   }\r
-  cl = GetAODEMCAL();\r
+  \r
+  TObjArray *cl = GetAODEMCAL();\r
   \r
   ////////////////////////////////////////////////\r
   //Start from tracks and get associated clusters \r
@@ -594,12 +698,11 @@ void  AliAnaElectron::MakeAnalysisFillAOD()
     fhImpactXY->Fill(imp[0]);\r
 \r
     //JLK CHECK\r
-    AliESDtrack esdTrack(track);\r
-    Double_t tpcpid[AliPID::kSPECIES];\r
-    esdTrack.GetTPCpid(tpcpid);\r
-    Double_t eProb = tpcpid[AliPID::kElectron];\r
-    printf("<%d> ESD eProb = %2.2f\n",itrk,eProb);\r
-\r
+    //AliESDtrack esdTrack(track);\r
+    //Double_t tpcpid[AliPID::kSPECIES];\r
+    //esdTrack.GetTPCpid(tpcpid);\r
+    //Double_t eProb = tpcpid[AliPID::kElectron];\r
+    //if(eProb > 0) printf("<%d> ESD eProb = %2.2f\n",itrk,eProb);\r
 \r
     AliAODPid* pid = (AliAODPid*) track->GetDetPid();\r
     if(pid == 0) {\r
@@ -617,9 +720,19 @@ void  AliAnaElectron::MakeAnalysisFillAOD()
       Double_t teta = pos.Eta();\r
       Double_t tmom = mom.Mag();\r
       \r
-      TLorentzVector mom2(mom,0.);\r
-      Bool_t in =  GetFidutialCut()->IsInFidutialCut(mom2,fCalorimeter) ;\r
-      if(GetDebug() > 1) printf("AliAnaElectron::MakeAnalysisFillAOD() - Track pt %2.2f, phi %2.2f, eta %2.2f in fidutial cut %d\n",track->Pt(), track->Phi(), track->Eta(), in);\r
+      //TLorentzVector mom2(mom,0.);\r
+      Bool_t in = kFALSE;\r
+      if(mom.Phi()*180./TMath::Pi() > 80. && mom.Phi()*180./TMath::Pi() < 190. &&\r
+        mom.Eta() > -0.7 && mom.Eta() < 0.7) in = kTRUE;\r
+      //Also check the track\r
+      if(track->Phi()*180./TMath::Pi() > 80. && track->Phi()*180./TMath::Pi() < 190. &&\r
+        track->Eta() > -0.7 && track->Eta() < 0.7) in = kTRUE;\r
+      ////////////////////////////\r
+      //THIS HAS A MEM LEAK JLK 24-Oct-09\r
+      //Bool_t in =  GetFiducialCut()->IsInFiducialCut(mom2,fCalorimeter) ;\r
+      ///////////////////////////\r
+      if(GetDebug() > 1) printf("AliAnaElectron::MakeAnalysisFillAOD() - Track(Extrap) pt %2.2f(%2.2f), phi %2.2f(%2.2f), eta %2.2f(%2.2f) in fiducial cut %d\n",track->Pt(), mom.Pt(), track->Phi(), mom.Phi(), track->Eta(),mom.Eta(), in);\r
+\r
       if(mom.Pt() > GetMinPt() && in) {\r
        \r
        Double_t dEdx = pid->GetTPCsignal();\r
@@ -651,14 +764,33 @@ void  AliAnaElectron::MakeAnalysisFillAOD()
          if(trkChgHad) fhPtHadron->Fill(track->Pt(),GetMCSource(tmctag));\r
          if(tpcEle && !photonic) fhPtNPEleTPC->Fill(track->Pt(),GetMCSource(tmctag));\r
          if(trkEle && !photonic) fhPtNPEleTPCTRD->Fill(track->Pt(),GetMCSource(tmctag));\r
+         fhPtTrack->Fill(track->Pt(),GetMCSource(tmctag));\r
        }\r
 \r
        Bool_t emcEle = kFALSE;      \r
        //For tracks in EMCAL acceptance, pair them with all clusters\r
        //and fill the dEta vs dPhi for these pairs:\r
+\r
+       Double_t minR  = 99;\r
+        Double_t minPe =-1;\r
+        Double_t minEp =-1;\r
+        Double_t minMult = -1;\r
+        Double_t minPt   = -1;\r
+\r
        for(Int_t iclus = 0; iclus < ntot; iclus++) {\r
          AliAODCaloCluster * clus = (AliAODCaloCluster*) (cl->At(iclus));\r
          if(!clus) continue;\r
+\r
+         //As of 11-Oct-2009\r
+         //only select "good" clusters   \r
+         if (clus->GetNCells()       < 2    ) continue;\r
+          if (clus->GetNCells()       > 30   ) continue;\r
+          if (clus->E()               < fMinClusEne ) continue;\r
+          if (clus->GetDispersion()   > 1    ) continue;\r
+          if (clus->GetM20()          > 0.4  ) continue;\r
+          if (clus->GetM02()          > 0.4  ) continue;\r
+          if (clus->GetM20()          < 0.03 ) continue;\r
+          if (clus->GetM02()          < 0.03 ) continue;\r
          \r
          Double_t x[3];\r
          clus->GetPosition(x);\r
@@ -682,10 +814,21 @@ void  AliAnaElectron::MakeAnalysisFillAOD()
          //Good match\r
          if(res < fResidualCut) {\r
            fh2dEtadPhiMatched->Fill(deta,dphi);\r
+           fh2MatchdEdx->Fill(track->P(),dEdx);\r
            iCluster = iclus;\r
-           \r
-           Int_t cmctag = -1;\r
-           \r
+\r
+           Double_t energy = clus->E(); \r
+           if(energy > 0) pOverE = tmom/energy;\r
+\r
+           if (res< minR) {\r
+              minR  = res;\r
+              minPe = pOverE;\r
+              minEp = energy/tmom;\r
+              minMult = clus->GetNCells() ;\r
+              minPt = track->Pt();\r
+            }\r
+\r
+           Int_t cmctag = -1;      \r
            if(IsDataMC()) {  \r
              //Do you want the cluster or the track label?\r
              Int_t input = 0;\r
@@ -696,31 +839,42 @@ void  AliAnaElectron::MakeAnalysisFillAOD()
            if(fWriteNtuple) {\r
              fEleNtuple->Fill(tmctag,cmctag,track->Pt(),track->Phi(),track->Eta(),track->P(),clus->E(),deta,dphi,clus->GetNCells(),dEdx,pidProb,imp[0],imp[1]);\r
            }\r
-           \r
-           fh2MatchdEdx->Fill(track->P(),dEdx);\r
-           \r
-           Double_t energy = clus->E(); \r
-           if(energy > 0) pOverE = tmom/energy;\r
-           fh1pOverE->Fill(pOverE);\r
-           fh1EOverp->Fill(energy/tmom);\r
-           \r
-           Int_t mult = clus->GetNCells();\r
-           if(mult < 2 &&  GetDebug() > 0) printf("Single digit cluster.\n");\r
-           \r
-           //////////////////////////////\r
-           //Electron cuts happen here!//\r
-           //////////////////////////////\r
-           if(pOverE > fpOverEmin && pOverE < fpOverEmax) emcEle = kTRUE;\r
+\r
          } else {\r
            fh2dEtadPhiUnmatched->Fill(deta,dphi);\r
-         }\r
-         \r
-       } //calocluster loop\r
-       \r
+         }//res cut\r
+       }//calo cluster loop\r
+\r
+       fh3pOverE->Fill(minPt,minPe ,minMult);\r
+       fh3EOverp->Fill(minPt,minEp ,minMult);\r
+       if (trkEle) {\r
+         fh3pOverE2->Fill(minPt,minPe ,minMult);\r
+         fh3EOverp2->Fill(minPt,minEp ,minMult);\r
+       }\r
+       if (tpcEle) {\r
+         fh3pOverE3->Fill(minPt,minPe ,minMult);\r
+         fh3EOverp3->Fill(minPt,minEp ,minMult);\r
+       }\r
+       //new\r
+       if (tmctag>-1 && GetMCSource(tmctag)<8 ) {\r
+          fh2pOverE->Fill(minPt,minPe );\r
+          fh2EOverp->Fill(minPt,minEp );\r
+          if (trkEle) {\r
+            fh2pOverE2->Fill(minPt,minPe );\r
+            fh2EOverp2->Fill(minPt,minEp );\r
+          }\r
+        }\r
+\r
+       //////////////////////////////\r
+       //Electron cuts happen here!//\r
+       //////////////////////////////\r
+       if(minPe > fpOverEmin && minPe < fpOverEmax) emcEle = kTRUE;\r
+\r
        ///////////////////////////\r
        //Fill AOD with electrons//\r
        ///////////////////////////\r
-       if(emcEle || trkEle) {\r
+       //Take all emcal electrons, but the others only if pT < 10 GeV\r
+       if(emcEle || ( (tpcEle || trkEle) && track->Pt() < 10.) ) {\r
 \r
          //B-tagging\r
          if(GetDebug() > 1) printf("Found Electron - do b-tagging\n");\r
@@ -734,15 +888,17 @@ void  AliAnaElectron::MakeAnalysisFillAOD()
          tr.SetLabel(track->GetLabel());\r
          tr.SetCaloLabel(iCluster,-1); //sets the indices of the original caloclusters\r
          tr.SetTrackLabel(itrk,-1); //sets the indices of the original tracks\r
-         if(emcEle) //PID determined by EMCAL\r
+         if(emcEle) {//PID determined by EMCAL\r
            tr.SetDetector(fCalorimeter);\r
-         else\r
+         } else {\r
            tr.SetDetector("CTS"); //PID determined by CTS\r
+         }\r
+\r
          if(GetReader()->GetAODCTSNormalInputEntries() <= itrk) tr.SetInputFileIndex(1);\r
          //Make this preserve sign of particle\r
          if(track->Charge() < 0) tr.SetPdg(11); //electron is 11\r
          else  tr.SetPdg(-11); //positron is -11\r
-         Int_t btag = -1;\r
+         Int_t btag = 0;\r
          if(dvmbtag > 0) tr.SetBTagBit(btag,tr.kDVMTag0);\r
          if(dvmbtag > 1) tr.SetBTagBit(btag,tr.kDVMTag1);\r
          if(dvmbtag > 2) tr.SetBTagBit(btag,tr.kDVMTag2);\r
@@ -782,8 +938,6 @@ void  AliAnaElectron::MakeAnalysisFillHistograms()
 \r
   AliStack * stack = 0x0;\r
   TParticle * primary = 0x0;\r
-  TClonesArray * mcparticles0 = 0x0;\r
-  TClonesArray * mcparticles1 = 0x0;\r
   AliAODMCParticle * aodprimary = 0x0;\r
 \r
   Int_t ph1 = 0;  //photonic 1 count\r
@@ -792,26 +946,11 @@ void  AliAnaElectron::MakeAnalysisFillHistograms()
 \r
   if(IsDataMC()) {\r
     if(GetReader()->ReadStack()){\r
-      stack =  GetMCStack() ;\r
-      \r
+      stack =  GetMCStack() ;      \r
       if(!stack)\r
        printf("AliAnaElectron::MakeAnalysisFillHistograms() *** no stack ***: \n");\r
       \r
     }\r
-    else if(GetReader()->ReadAODMCParticles()){\r
-      //Get the list of MC particles\r
-      mcparticles0 = GetReader()->GetAODMCParticles(0);\r
-      if(!mcparticles0 && GetDebug() > 0)     {\r
-       printf("AliAnaElectron::MakeAnalysisFillHistograms() -  Standard MCParticles not available!\n");\r
-      }\r
-      if(GetReader()->GetSecondInputAODTree()){\r
-       mcparticles1 = GetReader()->GetAODMCParticles(1);\r
-       if(!mcparticles1 && GetDebug() > 0)     {\r
-         printf("AliAnaElectron::MakeAnalysisFillHistograms() -  Second input MCParticles not available!\n");\r
-       }\r
-      }\r
-      \r
-    }\r
   }// is data and MC\r
 \r
   ////////////////////////////////////\r
@@ -823,6 +962,10 @@ void  AliAnaElectron::MakeAnalysisFillHistograms()
 \r
     for(Int_t ijet = 0; ijet < njets ; ijet++) {\r
       AliAODJet * jet = (AliAODJet*)(GetReader()->GetOutputEvent())->GetJet(ijet) ;\r
+      //Only consider jets with pt > 10 GeV (the rest have to be junk)\r
+      //printf("AODJet<%d> pt = %2.2f\n",ijet,jet->Pt());\r
+      if(jet->Pt() < 10.) continue;\r
+\r
       if(GetDebug() > 3) {\r
        printf("AliAODJet ijet = %d\n",ijet);\r
        jet->Print("");\r
@@ -837,7 +980,11 @@ void  AliAnaElectron::MakeAnalysisFillHistograms()
       //For DVM jet tag, we will look for DVM electrons\r
       //For IPSig, we compute the IPSig for all tracks and if the\r
       //number passing is above the cut, it passes\r
+      Bool_t leadJet  = kFALSE;\r
+      if (ijet==0) leadJet= kTRUE;\r
       Bool_t eJet = kFALSE;  \r
+      Bool_t eJet2    = kFALSE; //electron triggered\r
+      Bool_t hadJet   = kFALSE; //hadron triggered \r
       Bool_t dvmJet = kFALSE;  \r
       Bool_t ipsigJet = kFALSE;\r
       TRefArray* rt = jet->GetRefTracks();\r
@@ -851,6 +998,8 @@ void  AliAnaElectron::MakeAnalysisFillHistograms()
         if( GetIPSignificance(jetTrack, jet->Phi()) > 2.) trackCounter[3]++;\r
        Bool_t isNPE = CheckTrack(jetTrack,"NPE");\r
        if(isNPE) eJet = kTRUE;\r
+       if ( isNPE && jetTrack->Pt()>10.0 ) eJet2  =kTRUE;\r
+        if (!isNPE && jetTrack->Pt()>10.0) hadJet =kTRUE;\r
        Bool_t isDVM = CheckTrack(jetTrack,"DVM");\r
        if(isDVM) dvmJet = kTRUE;\r
       }\r
@@ -859,24 +1008,40 @@ void  AliAnaElectron::MakeAnalysisFillHistograms()
       if(trackCounter[2]>1) fhTagJetPt2x3->Fill(jet->Pt());\r
       if(trackCounter[3]>2) fhTagJetPt3x2->Fill(jet->Pt());\r
 \r
+      if(trackCounter[1]>0 && eJet) fhePlusTagJetPt1x4->Fill(jet->Pt());\r
+      if(trackCounter[2]>1 && eJet) fhePlusTagJetPt2x3->Fill(jet->Pt());\r
+      if(trackCounter[3]>2 && eJet) fhePlusTagJetPt3x2->Fill(jet->Pt());\r
+\r
       if(trackCounter[0] > fNTagTrkCut) ipsigJet = kTRUE;\r
 \r
       if(IsDataMC()) {\r
        //determine tagging efficiency & mis-tagging rate\r
        //using b-quarks from stack\r
-       Bool_t isTrueBjet = IsMcBJet(jet->Eta(), jet->Phi() ,stack);\r
+       Bool_t isTrueBjet = IsMcBJet(jet->Eta(), jet->Phi());\r
+       Bool_t isTrueDjet = IsMcDJet(jet->Eta(), jet->Phi());\r
        if (isTrueBjet && GetDebug() > 0) printf("== True Bjet==\n");\r
+       if (isTrueDjet && GetDebug() > 0) printf("== True Charm-jet==\n");\r
        if (dvmJet && GetDebug() > 0)     printf("== found DVM jet==\n");\r
 \r
        if(isTrueBjet && dvmJet) fhDVMJet->Fill(0.,jet->Pt()); // good tagged\r
        if(isTrueBjet && !dvmJet) fhDVMJet->Fill(1.,jet->Pt()); // missed tagged\r
        if(!isTrueBjet && dvmJet) fhDVMJet->Fill(2.,jet->Pt());  // fake tagged\r
        if(!isTrueBjet && !dvmJet) fhDVMJet->Fill(3.,jet->Pt());  // others\r
+        if(isTrueDjet && !isTrueBjet &&   dvmJet) fhDVMJet->Fill(4.,jet->Pt()); // charm-tagged\r
+        if(isTrueDjet && !isTrueBjet &&  !dvmJet) fhDVMJet->Fill(5.,jet->Pt()); // charm -not tagged\r
+        if(!(isTrueDjet||isTrueBjet ) &&  dvmJet) fhDVMJet->Fill(6.,jet->Pt()); // light flavor -tagged\r
+        if(!(isTrueDjet||isTrueBjet ) && !dvmJet) fhDVMJet->Fill(7.,jet->Pt()); // light flavor -not tagged\r
+       if(isTrueBjet &&  eJet && dvmJet) fhDVMJet->Fill(8.,jet->Pt()); // bjet with electron\r
+        if(isTrueBjet && !eJet && dvmJet) fhDVMJet->Fill(9.,jet->Pt()); // needs more thought\r
 \r
        if(isTrueBjet) {\r
          if(trackCounter[1]>0) fhBJetPt1x4->Fill(jet->Pt());\r
          if(trackCounter[2]>1) fhBJetPt2x3->Fill(jet->Pt());\r
          if(trackCounter[3]>2) fhBJetPt3x2->Fill(jet->Pt());\r
+       } else {\r
+         if(trackCounter[1]>0) fhFakeJetPt1x4->Fill(jet->Pt());\r
+         if(trackCounter[2]>1) fhFakeJetPt2x3->Fill(jet->Pt());\r
+         if(trackCounter[3]>2) fhFakeJetPt3x2->Fill(jet->Pt());\r
        }\r
       }\r
 \r
@@ -890,10 +1055,25 @@ void  AliAnaElectron::MakeAnalysisFillHistograms()
       if(dvmJet && ipsigJet && !eJet)   fhJetType->Fill(6.,jet->Pt()); //dvm & ipsig\r
       if(dvmJet && ipsigJet && eJet)    fhJetType->Fill(7.,jet->Pt()); //all\r
       if(dvmJet || ipsigJet || eJet)    fhJetType->Fill(8.,jet->Pt()); //any of them\r
+      if(eJet  )    fhJetType->Fill(9.,jet->Pt()); //any of them\r
+      if(dvmJet)    fhJetType->Fill(10.,jet->Pt()); //any of them\r
+      if(eJet2 )    fhJetType->Fill(11.,jet->Pt()); //any of them\r
+      if(hadJet)    fhJetType->Fill(12.,jet->Pt()); //any of them\r
 \r
       if(eJet || ipsigJet || dvmJet) fhBJetEtaPhi->Fill(jet->Eta(),jet->Phi());\r
       else fhNonBJetEtaPhi->Fill(jet->Eta(),jet->Phi());\r
 \r
+      //leading jets\r
+      if (leadJet) {\r
+       fhLeadJetType->Fill(0.,jet->Pt()); //all\r
+        if(eJet   )    fhLeadJetType->Fill(1.,jet->Pt());\r
+        if(eJet2  )    fhLeadJetType->Fill(2.,jet->Pt());\r
+        if(hadJet )    fhLeadJetType->Fill(3.,jet->Pt());\r
+        if(eJet   && (dvmJet || ipsigJet) )    fhLeadJetType->Fill(4.,jet->Pt());\r
+        if(eJet2  && (dvmJet || ipsigJet) )    fhLeadJetType->Fill(5.,jet->Pt());\r
+        if(hadJet && (dvmJet || ipsigJet) )    fhLeadJetType->Fill(6.,jet->Pt());\r
+      }\r
+\r
       for(Int_t itrk = 0; itrk < ntrk; itrk++) {\r
        AliAODTrack* jetTrack = (AliAODTrack*)jet->GetTrack(itrk);\r
        Double_t xsi = TMath::Log(jet->Pt()/jetTrack->Pt());\r
@@ -954,8 +1134,17 @@ void  AliAnaElectron::MakeAnalysisFillHistograms()
     //with Minv near a relevant resonance\r
     if(!photonic) {\r
       fhPtNPEleTTE->Fill(ptele,0); //0 = no MC info\r
-      if(IsDataMC()) fhPtNPEleTTE->Fill(ptele,GetMCSource(mctag));\r
-    }\r
+      if(ele->GetDetector() == fCalorimeter) fhPtNPEleEMCAL->Fill(ptele,0);\r
+      if(IsDataMC()) {\r
+       fhPtNPEleTTE->Fill(ptele,GetMCSource(mctag));\r
+       if(ele->GetDetector() == "EMCAL") fhPtNPEleEMCAL->Fill(ptele,GetMCSource(mctag));\r
+       if(GetMCSource(mctag) == 1) { //it's a bottom electron, now\r
+                                     //get the parent's pt\r
+         Double_t ptbHadron = GetBParentPt(ele->GetLabel());\r
+         fhPtNPEBHadron->Fill(ptele,ptbHadron);\r
+       } //mctag\r
+      } //isdatamc\r
+    } //!photonic\r
 \r
     //kept for historical reasons?\r
     fhPtElectron  ->Fill(ptele);\r
@@ -1001,112 +1190,112 @@ void  AliAnaElectron::MakeAnalysisFillHistograms()
        TVector3 tempVect(p[0],p[1],p[2]);\r
        if ( TMath::Abs(tempVect.Eta())>fJetEtaCut || tempVect.Phi() < fJetPhiMin || tempVect.Phi() > fJetPhiMax) continue;\r
        //Only store it if it has a b-quark within dR < 0.2 of jet axis ?\r
-       if(IsMcBJet(tempVect.Eta(),tempVect.Phi(),stack)) {\r
+       if(IsMcBJet(tempVect.Eta(),tempVect.Phi())) {\r
          bjetVect[iCount].SetXYZ(p[0], p[1], p[2]);\r
          iCount++;\r
        }\r
       }\r
     }\r
-        \r
-    if(GetReader()->ReadStack()) {\r
-      for(Int_t ipart = 0; ipart < stack->GetNtrack(); ipart++) {\r
-       primary = stack->Particle(ipart);\r
-       TLorentzVector mom;\r
-       primary->Momentum(mom);\r
-       Bool_t in = GetFidutialCut()->IsInFidutialCut(mom,fCalorimeter);\r
-       if(primary->Pt() < GetMinPt()) continue;\r
-       if(!in) continue;\r
-\r
-       Int_t pdgcode = primary->GetPdgCode();\r
-       if(TMath::Abs(pdgcode) == 211 || TMath::Abs(pdgcode) == 321 || TMath::Abs(pdgcode) == 2212)\r
-         fhPtMCHadron->Fill(primary->Pt());\r
-\r
-       //we only care about electrons\r
-       if(TMath::Abs(pdgcode) != 11) continue;\r
-       //we only want TRACKABLE electrons (TPC 85-250cm)\r
-       if(primary->R() > 200.) continue;\r
-       //Ignore low pt electrons\r
-       if(primary->Pt() < 0.2) continue;\r
-       \r
-       //find out what the ancestry of this electron is\r
-       Int_t mctag = -1;\r
-       Int_t input = 0;\r
-       mctag = GetMCAnalysisUtils()->CheckOrigin(ipart,GetReader(),input);\r
-\r
-       if(GetMCSource(mctag)==1) { //bottom electron\r
-         //See if it is within dR < 0.4 of a bjet\r
-         for(Int_t ij = 0; ij < nPythiaGenJets; ij++) {\r
-           Double_t deta = primary->Eta() - bjetVect[ij].Eta();\r
-           Double_t dphi = primary->Phi() - bjetVect[ij].Phi();\r
-           Double_t dR = TMath::Sqrt(deta*deta + dphi*dphi);\r
-           if(dR < 0.4) {\r
-             fhMCBJetElePt->Fill(primary->Pt(),bjetVect[ij].Pt());\r
-           }\r
-         }\r
-       }\r
 \r
-       fhPtMCElectron->Fill(primary->Pt(),0);  //0 = unfiltered\r
-       fhPtMCElectron->Fill(primary->Pt(),GetMCSource(mctag));\r
+    Int_t nPart = GetNumAODMCParticles();\r
+    if(GetReader()->ReadStack()) nPart = stack->GetNtrack();\r
 \r
-       //fill ntuple\r
-       if(fWriteNtuple) {\r
-         fMCEleNtuple->Fill(mctag,primary->Pt(),primary->Phi(),primary->Eta(),primary->Vx(),primary->Vy(),primary->Vz());\r
-       }\r
+    for(Int_t ipart = 0; ipart < nPart; ipart++) {\r
 \r
-      } //stack loop\r
+      //All the variables we want from MC particles\r
+      Double_t px = 0.; Double_t py = 0.; Double_t pz = 0.; Double_t e = 0.;\r
+      Double_t vx = -999.; Double_t vy = -999.; Double_t vz = -999.; Double_t vt = -999.;\r
+      Int_t pdg = 0; Int_t mpdg = 0; Double_t mpt = 0.;\r
 \r
-    } else if(GetReader()->ReadAODMCParticles()) {\r
-      Int_t npart0 = mcparticles0->GetEntriesFast();\r
-      Int_t npart1 = 0;\r
-      if(mcparticles1) npart1 = mcparticles1->GetEntriesFast();\r
-      Int_t npart = npart0+npart1;\r
-      for(Int_t ipart = 0; ipart < npart; ipart++) {\r
-       if(ipart < npart0) aodprimary = (AliAODMCParticle*)mcparticles0->At(ipart);\r
-       else aodprimary = (AliAODMCParticle*)mcparticles1->At(ipart-npart0);\r
-       if(!aodprimary) {\r
-         printf("AliAnaElectron::MakeAnalysisFillHistograms() *** no primary ***:  label %d \n", ipart);\r
-         continue;\r
+      if(GetReader()->ReadStack()) {\r
+       primary = stack->Particle(ipart);\r
+       pdg = primary->GetPdgCode();\r
+       px = primary->Px(); py = primary->Py(); pz = primary->Pz(); e = primary->Energy();\r
+       vx = primary->Vx(); vy = primary->Vy(); vz = primary->Vz(); vt = primary->T();\r
+       if(primary->GetMother(0)>=0) {\r
+         TParticle *parent = stack->Particle(primary->GetMother(0));\r
+         if (parent) {\r
+           mpdg = parent->GetPdgCode();\r
+           mpt = parent->Pt();\r
+         }\r
        }\r
+      } else if(GetReader()->ReadAODMCParticles()) {\r
+       aodprimary =  (AliAODMCParticle*)GetMCParticle(ipart);\r
+       pdg = aodprimary->GetPdgCode();\r
+       px = aodprimary->Px(); py = aodprimary->Py(); pz = aodprimary->Pz(); e = aodprimary->E();\r
+       vx = aodprimary->Xv(); vy = aodprimary->Yv(); vz = aodprimary->Zv(); vt = aodprimary->T();\r
+       Int_t parentId = aodprimary->GetMother();\r
+       if(parentId>=0) {\r
+         AliAODMCParticle *parent = (AliAODMCParticle*)GetMCParticle(parentId);\r
+         if (parent) {\r
+           mpdg = parent->GetPdgCode();\r
+           mpt = parent->Pt();\r
+         }\r
+       }       \r
+      }\r
 \r
-       Double_t mom[3] = {0.,0.,0.};\r
-       aodprimary->PxPyPz(mom);\r
-       TLorentzVector mom2(mom,0.);    \r
-       Bool_t in = GetFidutialCut()->IsInFidutialCut(mom2,fCalorimeter);\r
-       if(aodprimary->Pt() < GetMinPt()) continue;\r
-       if(!in) continue;\r
-\r
-       Int_t pdgcode = aodprimary->GetPdgCode();\r
-       if(TMath::Abs(pdgcode) == 211 || TMath::Abs(pdgcode) == 321 || TMath::Abs(pdgcode) == 2212)\r
-         fhPtMCHadron->Fill(aodprimary->Pt());\r
-\r
-       //we only care about electrons\r
-       if(TMath::Abs(pdgcode) != 11) continue;\r
-       //we only want TRACKABLE electrons (TPC 85-250cm)\r
-       Double_t radius = TMath::Sqrt(aodprimary->Xv()*aodprimary->Xv() + aodprimary->Yv()*aodprimary->Yv());\r
-       if(radius > 200.) continue;\r
-\r
-       //find out what the ancestry of this electron is\r
-       Int_t mctag = -1;\r
-       Int_t input = 0;\r
-       Int_t ival = ipart;\r
-       if(ipart > npart0) { ival -= npart0; input = 1;}\r
-       mctag = GetMCAnalysisUtils()->CheckOrigin(ival,GetReader(),input);\r
-\r
-       fhPtMCElectron->Fill(aodprimary->Pt(),0); //0 = unfiltered\r
-       fhPtMCElectron->Fill(aodprimary->Pt(),GetMCSource(mctag));\r
+      TLorentzVector mom(px,py,pz,e);\r
+      TLorentzVector pos(vx,vy,vz,vt);\r
+      Bool_t in = kFALSE;\r
+      if(mom.Phi()*180./TMath::Pi() > 80. && mom.Phi()*180./TMath::Pi() < 190. &&\r
+        mom.Eta() > -0.7 && mom.Eta() < 0.7) in = kTRUE;\r
+      /////////////////////////////////\r
+      //THIS HAS A MEM LEAK JLK 24-Oct-09\r
+      //Bool_t in = GetFiducialCut()->IsInFiducialCut(mom,fCalorimeter);\r
+      ////////////////////////////////\r
+      if(mom.Pt() < GetMinPt()) continue;\r
+      if(!in) continue;\r
+\r
+      if(TMath::Abs(pdg) == 211 || TMath::Abs(pdg) == 321 || TMath::Abs(pdg) == 2212)\r
+       fhPtMCHadron->Fill(mom.Pt());\r
+      \r
+      //we only care about electrons\r
+      if(TMath::Abs(pdg) != 11) continue;\r
+      //we only want TRACKABLE electrons (TPC 85-250cm)\r
+      if(pos.Rho() > 200.) continue;\r
+      //Ignore low pt electrons\r
+      if(mom.Pt() < 0.2) continue;\r
        \r
-       //fill ntuple\r
-       if(fWriteNtuple) {\r
-         fMCEleNtuple->Fill(mctag,aodprimary->Pt(),aodprimary->Phi(),aodprimary->Eta(),\r
-                            aodprimary->Xv(),aodprimary->Yv(),aodprimary->Zv());\r
+      //find out what the ancestry of this electron is\r
+      Int_t mctag = -1;\r
+      Int_t input = 0;\r
+      mctag = GetMCAnalysisUtils()->CheckOrigin(ipart,GetReader(),input);\r
+      \r
+      if(GetMCSource(mctag)==1) { //bottom electron\r
+       //See if it is within dR < 0.4 of a bjet\r
+       for(Int_t ij = 0; ij < nPythiaGenJets; ij++) {\r
+         Double_t deta = primary->Eta() - bjetVect[ij].Eta();\r
+         Double_t dphi = primary->Phi() - bjetVect[ij].Phi();\r
+         Double_t dR = TMath::Sqrt(deta*deta + dphi*dphi);\r
+         if(dR < 0.4) {\r
+           fhMCBJetElePt->Fill(primary->Pt(),bjetVect[ij].Pt());\r
+         }\r
        }\r
+      }\r
 \r
-      } //AODMC particles\r
-    } //input type\r
-  } //pure MC kine histos\r
-    \r
+      if ((TMath::Abs(mpdg) >500  && TMath::Abs(mpdg) <600 ) ||\r
+         (TMath::Abs(mpdg) >5000 && TMath::Abs(mpdg) <6000 ) )\r
+       {\r
+         fhMCBHadronElePt->Fill(mom.Pt(), mpt); \r
+       }\r
+      //CHECK THAT THIS IS CORRECTLY FILLED - SHOULD WE USE MCSOURCE HERE?\r
+      fhPtMCElectron->Fill(mom.Pt(),0);  //0 = unfiltered\r
+      fhPtMCElectron->Fill(mom.Pt(),GetMCSource(mctag));\r
+\r
+      if(GetMCSource(mctag) == 4) {//conversion\r
+       fhMCXYConversion->Fill(vx,vy);\r
+       fhMCRadPtConversion->Fill(TMath::Sqrt(vx*vx+vy*vy),mom.Pt());\r
+      }\r
+       \r
+      //fill ntuple\r
+      if(fWriteNtuple) {\r
+       fMCEleNtuple->Fill(mctag,mom.Pt(),mom.Phi(),mom.Eta(),vx,vy,vz);\r
+      }\r
+    }\r
+  } //MC loop\r
+  \r
   //if(GetDebug() > 0) \r
-    printf("\tAliAnaElectron::Photonic electron counts: ph1 %d, ph2 %d, Both %d\n",ph1,ph2,phB);\r
+  printf("\tAliAnaElectron::Photonic electron counts: ph1 %d, ph2 %d, Both %d\n",ph1,ph2,phB);\r
 }\r
 \r
 //__________________________________________________________________\r
@@ -1196,9 +1385,6 @@ Double_t AliAnaElectron::ComputeSignDca(AliAODTrack *tr, AliAODTrack *tr2 , floa
   Double_t massE = 0.000511;\r
   Double_t massK = 0.493677;\r
 \r
-  Double_t bfield = 5.; //kG\r
-  if(GetReader()->GetDataType() != AliCaloTrackReader::kMC) bfield = GetReader()->GetBField();\r
-\r
   Double_t vertex[3] = {-999.,-999.,-999}; //vertex\r
   if(GetReader()->GetDataType() != AliCaloTrackReader::kMC) {\r
     GetReader()->GetVertex(vertex); //If only one file, get the vertex from there\r
@@ -1215,11 +1401,15 @@ Double_t AliAnaElectron::ComputeSignDca(AliAODTrack *tr, AliAODTrack *tr2 , floa
   AliExternalTrackParam *param1 = new AliExternalTrackParam(tr);\r
   AliExternalTrackParam *param2 = new AliExternalTrackParam(tr2);\r
 \r
+  Double_t bfield[3];\r
+  param1->GetBxByBz(bfield);\r
+  Double_t bz = param1->GetBz();\r
+\r
   Double_t xplane1 = 0.; Double_t xplane2 = 0.;\r
-  Double_t pairdca = param1->GetDCA(param2,bfield,xplane1,xplane2);\r
+  Double_t pairdca = param1->GetDCA(param2,bz,xplane1,xplane2);\r
 \r
-  param1->PropagateTo(xplane1,bfield);\r
-  param2->PropagateTo(xplane2,bfield);\r
+  param1->PropagateToBxByBz(xplane1,bfield);\r
+  param2->PropagateToBxByBz(xplane2,bfield);\r
 \r
   Int_t id1 = 0, id2 = 0;\r
   AliESDv0 bvertex(*param1,id1,*param2,id2);\r
@@ -1237,6 +1427,8 @@ Double_t AliAnaElectron::ComputeSignDca(AliAODTrack *tr, AliAODTrack *tr2 , floa
   decayvector = secvtxpt - primV; //decay vector from PrimVtx\r
   Double_t decaylength = decayvector.Mag();\r
 \r
+  printf("\t JLK pairDCA = %2.2f\n",pairdca);\r
+\r
   if(GetDebug() > 0) {\r
     printf(">>ComputeSdca:: mom1=%f, mom2=%f \n", emomAtB.Perp(), hmomAtB.Perp() );\r
     printf(">>ComputeSdca:: pairDCA=%f, length=%f \n", pairdca,decaylength );\r
@@ -1289,7 +1481,6 @@ Double_t AliAnaElectron::GetIPSignificance(AliAODTrack *tr, Double_t jetPhi)
   }\r
 \r
   Double_t significance=0;\r
-  Double_t magField = 0;\r
   Double_t maxD = 10000.;\r
   Double_t impPar[] = {0,0};\r
   Double_t ipCov[]={0,0,0};\r
@@ -1302,7 +1493,9 @@ Double_t AliAnaElectron::GetIPSignificance(AliAODTrack *tr, Double_t jetPhi)
   AliVTrack* vTrack = (AliVTrack*)vEvent->GetTrack(trackIndex);\r
   if(!vTrack) return -99;\r
   AliESDtrack esdTrack(vTrack);\r
-  if(!esdTrack.PropagateToDCA(vv, magField, maxD, impPar, ipCov)) return -100;\r
+  Double_t bfield[3];\r
+  esdTrack.GetBxByBz(bfield);\r
+  if(!esdTrack.PropagateToDCABxByBz(vv, bfield, maxD, impPar, ipCov)) return -100;\r
   if(ipCov[0]<0) return -101;\r
 \r
   Double_t Pxy[] = {esdTrack.Px(), esdTrack.Py()};\r
@@ -1313,6 +1506,7 @@ Double_t AliAnaElectron::GetIPSignificance(AliAODTrack *tr, Double_t jetPhi)
   Double_t cosTheta = TMath::Cos(jetPhi - phiIP);\r
   Double_t sign = cosTheta/TMath::Abs(cosTheta);\r
   significance = TMath::Abs(impPar[0])/TMath::Sqrt(ipCov[0])*sign;\r
+  printf("\t JLK significance = %2.2f\n",significance);\r
   //ip = fabs(impPar[0]);\r
   fhIPSigBtagQA2->Fill(significance);\r
   return significance;\r
@@ -1354,8 +1548,10 @@ Bool_t AliAnaElectron::PhotonicPrim(const AliAODPWG4Particle* part)
   Bool_t itIS = kFALSE;\r
 \r
   Double_t massE = 0.000511;\r
-  Double_t bfield = 5.; //kG\r
-  if(GetReader()->GetDataType() != AliCaloTrackReader::kMC) bfield = GetReader()->GetBField();\r
+  Double_t massEta = 0.547;\r
+  Double_t massRho0 = 0.770;\r
+  Double_t massOmega = 0.782;\r
+  Double_t massPhi = 1.020;\r
 \r
   Int_t pdg1 = part->GetPdg();\r
   Int_t trackId = part->GetTrackLabel(0);\r
@@ -1408,14 +1604,20 @@ Bool_t AliAnaElectron::PhotonicPrim(const AliAODPWG4Particle* part)
     fh1OpeningAngle->Fill(dphi);\r
     fh1MinvPhoton->Fill(mass);\r
 \r
-    if(mass < 0.1) {\r
-      if(GetDebug() > 0) printf("######PROBABLY A PHOTON\n");\r
-      itIS = kTRUE;\r
-    }\r
-\r
+    if(mass < 0.1 ||\r
+       (mass > massEta-0.05 || mass < massEta+0.05) ||\r
+       (mass > massRho0-0.05 || mass < massRho0+0.05) ||\r
+       (mass > massOmega-0.05 || mass < massOmega+0.05) ||\r
+       (mass > massPhi-0.05 || mass < massPhi+0.05)) \r
+      {\r
+      \r
+       if(GetDebug() > 0) printf("######PROBABLY A PHOTON\n");\r
+       itIS = kTRUE;\r
+      }\r
+    \r
     //clean up\r
     delete param2;\r
-\r
+    \r
   }\r
 \r
   delete param1;\r
@@ -1431,6 +1633,11 @@ Bool_t AliAnaElectron::PhotonicV0(Int_t id)
   //invariant mass consistent with photon conversion\r
 \r
   Bool_t itIS = kFALSE;\r
+\r
+  Double_t massEta = 0.547;\r
+  Double_t massRho0 = 0.770;\r
+  Double_t massOmega = 0.782;\r
+  Double_t massPhi = 1.020;\r
   \r
   //---Get V0s---\r
   AliAODEvent *aod = (AliAODEvent*) GetReader()->GetInputEvent();\r
@@ -1445,7 +1652,11 @@ Bool_t AliAnaElectron::PhotonicV0(Int_t id)
       printf("## PhotonicV0() :: neg-id: %d, pos-id: %d, THIS id: %d\n", v0->GetNegID(), v0->GetPosID(), id);\r
       printf("## PhotonicV0() :: Minv(e,e): %f \n", v0->InvMass2Prongs(0,1,11,11) );\r
     }\r
-    if (mass < 0.100) {\r
+    if (mass < 0.100 ||\r
+       (mass > massEta-0.05 || mass < massEta+0.05) ||\r
+       (mass > massRho0-0.05 || mass < massRho0+0.05) ||\r
+       (mass > massOmega-0.05 || mass < massOmega+0.05) ||\r
+       (mass > massPhi-0.05 || mass < massPhi+0.05)) {\r
       if ( id == v0->GetNegID() || id == v0->GetPosID()) {\r
        itIS=kTRUE;\r
        if(GetDebug() > 0) printf("## PhotonicV0() :: It's a conversion electron!!! \n" );\r
@@ -1463,14 +1674,15 @@ Bool_t AliAnaElectron::GetDCA(const AliAODTrack* track,Double_t impPar[2], Doubl
   //Once alice-off gets its act together and fixes the AOD, this\r
   //should become obsolete.\r
 \r
-  Double_t bfield = 5.; //kG\r
   Double_t maxD = 100000.; //max transverse IP\r
   if(GetReader()->GetDataType() != AliCaloTrackReader::kMC) {\r
-    bfield = GetReader()->GetBField();\r
     AliVEvent* ve = (AliVEvent*)GetReader()->GetInputEvent();\r
     AliVVertex *vv = (AliVVertex*)ve->GetPrimaryVertex();\r
     AliESDtrack esdTrack(track);\r
-    Bool_t gotit = esdTrack.PropagateToDCA(vv,bfield,maxD,impPar,cov);\r
+    Double_t bfield[3];\r
+    esdTrack.GetBxByBz(bfield);\r
+    Bool_t gotit = esdTrack.PropagateToDCABxByBz(vv,bfield,maxD,impPar,cov);\r
+    printf("\t JLK impPar = %2.2f\n",impPar[0]);\r
     return gotit;\r
   }\r
 \r
@@ -1495,13 +1707,12 @@ Bool_t AliAnaElectron::CheckTrack(const AliAODTrack* track, const char* type)
     Int_t label = ele->GetTrackLabel(0);\r
     if(label != trackId) continue;  //skip to the next one if they don't match\r
 \r
-    if(type=="DVM") { \r
-      if(ele->CheckBTagBit(ele->GetBtag(),AliAODPWG4Particle::kDVMTag0) ||\r
-        ele->CheckBTagBit(ele->GetBtag(),AliAODPWG4Particle::kDVMTag1) ||\r
+    if(strcmp(type,"DVM")==0) { \r
+      if(ele->CheckBTagBit(ele->GetBtag(),AliAODPWG4Particle::kDVMTag1) ||\r
         ele->CheckBTagBit(ele->GetBtag(),AliAODPWG4Particle::kDVMTag2))\r
        pass = kTRUE;\r
 \r
-    } else if (type=="NPE") {\r
+    } else if (strcmp(type,"NPE")==0) {\r
 \r
       Bool_t photonic = kFALSE;\r
       Bool_t photonic1 = kFALSE;\r
@@ -1521,6 +1732,40 @@ Bool_t AliAnaElectron::CheckTrack(const AliAODTrack* track, const char* type)
 \r
 }\r
 \r
+//__________________________________________________________________\r
+Double_t AliAnaElectron::GetBParentPt(Int_t ipart)\r
+{\r
+  //return MC B parent pt\r
+  if(GetReader()->ReadStack()) { //only done if we have the stack                                                                                               \r
+    AliStack* stack = GetMCStack();\r
+    if(!stack) {\r
+      printf("Problem getting stack\n");\r
+      return 0.;\r
+    }\r
+    TParticle* prim = stack->Particle(ipart);\r
+    if(prim->GetMother(0)>=0) {\r
+      Int_t mpdg = 0;\r
+      TParticle *parent = stack->Particle(prim->GetMother(0));\r
+      if(parent) mpdg = parent->GetPdgCode();\r
+\r
+      if ((TMath::Abs(mpdg) >500  && TMath::Abs(mpdg) <600 ) ||\r
+         (TMath::Abs(mpdg) >5000 && TMath::Abs(mpdg) <6000 ) )\r
+       return parent->Pt();\r
+    }\r
+  } else if(GetReader()->ReadAODMCParticles()){\r
+    AliAODMCParticle* prim = (AliAODMCParticle*)GetMCParticle(ipart);\r
+    if(prim->GetMother()>=0) {\r
+      Int_t mpdg = 0;\r
+      AliAODMCParticle* parent = (AliAODMCParticle*)GetMCParticle(prim->GetMother());\r
+      if(parent) mpdg = parent->GetPdgCode();\r
+      if ((TMath::Abs(mpdg) >500  && TMath::Abs(mpdg) <600 ) ||\r
+          (TMath::Abs(mpdg) >5000 && TMath::Abs(mpdg) <6000 ) )\r
+        return parent->Pt();\r
+    }\r
+  }\r
+  return 0.;\r
+}\r
+\r
 //__________________________________________________________________\r
 Int_t AliAnaElectron::GetMCSource(Int_t tag)\r
 {\r
@@ -1528,6 +1773,9 @@ Int_t AliAnaElectron::GetMCSource(Int_t tag)
   //the number returned is the bin along one axis of 2-d histograms in\r
   //which to fill this electron\r
 \r
+  //Do this first\r
+  if(GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCConversion)) return 4;\r
+\r
   if(GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCElectron)) {\r
     //Bottom\r
     if(GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCEFromB)) return 1;\r
@@ -1536,8 +1784,8 @@ Int_t AliAnaElectron::GetMCSource(Int_t tag)
            && !GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCEFromB)) return 2;\r
     //Charm from bottom\r
     else if(GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCEFromCFromB)) return 3;\r
-    //Conversion\r
-    else if(GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCConversion)) return 4;\r
+    //    //Conversion\r
+    //else if(GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCConversion)) return 4;\r
     //Dalitz\r
     else if(GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCPi0Decay) \r
        || GetMCAnalysisUtils()->CheckTagBit(tag,AliMCAnalysisUtils::kMCEtaDecay) \r
@@ -1556,24 +1804,116 @@ Int_t AliAnaElectron::GetMCSource(Int_t tag)
 }\r
 \r
 //__________________________________________________________________\r
-Bool_t  AliAnaElectron::IsMcBJet(Double_t eta, Double_t phi, AliStack* stack)\r
+Int_t AliAnaElectron::GetNumAODMCParticles() \r
+{\r
+  //Get the number of AliAODMCParticles, if any\r
+  Int_t num = 0;\r
+\r
+  TClonesArray * mcparticles0 = 0x0;\r
+  TClonesArray * mcparticles1 = 0x0;\r
+\r
+  if(GetReader()->ReadAODMCParticles()){\r
+    //Get the list of MC particles\r
+    //                                                                                                 \r
+    mcparticles0 = GetReader()->GetAODMCParticles(0);\r
+    if(!mcparticles0 && GetDebug() > 0) {\r
+      printf("AliAnaElectron::MakeAnalysisFillHistograms() -  Standard MCParticles not available!\n");\r
+    }\r
+    if(GetReader()->GetSecondInputAODTree()){\r
+      mcparticles1 = GetReader()->GetAODMCParticles(1);\r
+      if(!mcparticles1 && GetDebug() > 0) {\r
+        printf("AliAnaElectron::MakeAnalysisFillHistograms() -  Second input MCParticles not available!\n");\r
+      }\r
+    }\r
+\r
+    Int_t npart0 = mcparticles0->GetEntriesFast();\r
+    Int_t npart1 = 0;\r
+    if(mcparticles1) npart1 = mcparticles1->GetEntriesFast();\r
+    Int_t npart = npart0+npart1;\r
+    return npart;\r
+\r
+  }\r
+\r
+  return num;\r
+}\r
+//__________________________________________________________________\r
+AliAODMCParticle* AliAnaElectron::GetMCParticle(Int_t ipart) \r
+{\r
+  //Get the MC particle at position ipart\r
+\r
+  AliAODMCParticle* aodprimary = 0x0;\r
+  TClonesArray * mcparticles0 = 0x0;\r
+  TClonesArray * mcparticles1 = 0x0;\r
+\r
+  if(GetReader()->ReadAODMCParticles()){\r
+    //Get the list of MC particles                                                                                                                           \r
+    mcparticles0 = GetReader()->GetAODMCParticles(0);\r
+    if(!mcparticles0 && GetDebug() > 0) {\r
+      printf("AliAnaElectron::MakeAnalysisFillHistograms() -  Standard MCParticles not available!\n");\r
+    }\r
+    if(GetReader()->GetSecondInputAODTree()){\r
+      mcparticles1 = GetReader()->GetAODMCParticles(1);\r
+      if(!mcparticles1 && GetDebug() > 0) {\r
+       printf("AliAnaElectron::MakeAnalysisFillHistograms() -  Second input MCParticles not available!\n");\r
+      }\r
+    }\r
+\r
+    Int_t npart0 = mcparticles0->GetEntriesFast();\r
+    Int_t npart1 = 0;\r
+    if(mcparticles1) npart1 = mcparticles1->GetEntriesFast();\r
+    if(ipart < npart0) aodprimary = (AliAODMCParticle*)mcparticles0->At(ipart);\r
+    else aodprimary = (AliAODMCParticle*)mcparticles1->At(ipart-npart0);\r
+    if(!aodprimary) {\r
+      printf("AliAnaElectron::GetMCParticle() *** no primary ***:  label %d \n", ipart);\r
+      return 0x0;\r
+    }\r
+\r
+  } else {\r
+    printf("AliAnaElectron::GetMCParticle() - Asked for AliAODMCParticle but we have a stack reader.\n");\r
+  }\r
+  return aodprimary;\r
+\r
+}\r
+\r
+//__________________________________________________________________\r
+Bool_t  AliAnaElectron::IsMcBJet(Double_t jeta, Double_t jphi)\r
 {\r
   //Check the jet eta,phi against that of the b-quark\r
   //to decide whether it is an MC B-jet\r
   Bool_t bjet=kFALSE;\r
 \r
   //      printf("MTH: McStack ,nparticles=%d \n", stack->GetNtrack() );\r
+\r
+  AliStack* stack = 0x0;\r
   \r
   for(Int_t ipart = 0; ipart < 100; ipart++) {\r
 \r
-    TParticle* primary = stack->Particle(ipart);\r
-    if (!primary) continue;\r
-    Int_t pdgcode = primary->GetPdgCode();\r
-    if ( TMath::Abs(pdgcode) != 5) continue;\r
+    Double_t pphi = -999.;\r
+    Double_t peta = -999.;\r
+    Int_t pdg = 0;\r
+    if(GetReader()->ReadStack()) {\r
+      stack = GetMCStack();\r
+      if(!stack) {\r
+       printf("AliAnaElectron::IsMCBJet() *** no stack ***: \n");\r
+       return kFALSE;\r
+      }\r
+      TParticle* primary = stack->Particle(ipart);\r
+      if (!primary) continue;\r
+      pdg = primary->GetPdgCode();\r
+      pphi = primary->Phi();\r
+      peta = primary->Eta();\r
+    } else if(GetReader()->ReadAODMCParticles()) {\r
+      AliAODMCParticle* aodprimary = GetMCParticle(ipart);\r
+      if(!aodprimary) continue;\r
+      pdg = aodprimary->GetPdgCode();\r
+      pphi = aodprimary->Phi();\r
+      peta = aodprimary->Eta();\r
+    }\r
+    if ( TMath::Abs(pdg) != 5) continue;\r
     \r
     //      printf("MTH: IsMcBJet : %d, pdg=%d : pt=%f \n", ipart, pdgcode, primary->Pt());\r
-    Double_t dphi = phi - primary->Phi();\r
-    Double_t deta = eta - primary->Eta();\r
+    Double_t dphi = jphi - pphi;\r
+    Double_t deta = jeta - peta;\r
     Double_t dr = sqrt(deta*deta + dphi*dphi);\r
     \r
     if (dr < 0.2) {\r
@@ -1586,6 +1926,54 @@ Bool_t  AliAnaElectron::IsMcBJet(Double_t eta, Double_t phi, AliStack* stack)
 \r
 }\r
 \r
+//__________________________________________________________________\r
+Bool_t  AliAnaElectron::IsMcDJet(Double_t jeta, Double_t jphi)\r
+{\r
+  //Check if this jet is a charm jet\r
+  Bool_t cjet=kFALSE;\r
+\r
+  AliStack* stack = 0x0;\r
+\r
+  for(Int_t ipart = 0; ipart < 100; ipart++) {\r
+    \r
+    Double_t pphi = -999.;\r
+    Double_t peta = -999.;\r
+    Int_t pdg = 0;\r
+    if(GetReader()->ReadStack()) {\r
+      stack = GetMCStack();\r
+      if(!stack) {\r
+       printf("AliAnaElectron::IsMCDJet() *** no stack ***: \n");\r
+       return kFALSE;\r
+      }\r
+      TParticle* primary = stack->Particle(ipart);\r
+      if (!primary) continue;\r
+      pdg = primary->GetPdgCode();\r
+      pphi = primary->Phi();\r
+      peta = primary->Eta();\r
+    } else if(GetReader()->ReadAODMCParticles()) {\r
+      AliAODMCParticle* aodprimary = GetMCParticle(ipart);\r
+      if(!aodprimary) continue;\r
+      pdg = aodprimary->GetPdgCode();\r
+      pphi = aodprimary->Phi();\r
+      peta = aodprimary->Eta();\r
+    }\r
+\r
+    if ( TMath::Abs(pdg) != 4) continue;\r
+\r
+    Double_t dphi = jphi - pphi;\r
+    Double_t deta = jeta - peta;\r
+    Double_t dr = sqrt(deta*deta + dphi*dphi);\r
+    \r
+    if (dr < 0.2) {\r
+      cjet=kTRUE;\r
+      break;\r
+    }\r
+  }\r
+\r
+  return cjet;\r
+\r
+}\r
+\r
 //__________________________________________________________________\r
 void AliAnaElectron::Print(const Option_t * opt) const\r
 {\r
@@ -1615,7 +2003,7 @@ void AliAnaElectron::Print(const Option_t * opt) const
 } \r
 \r
 //________________________________________________________________________\r
-void AliAnaElectron::ReadHistograms(TList* outputList)\r
+void AliAnaElectron::ReadHistograms(TList* /* outputList */)\r
 {\r
   // Needed when Terminate is executed in distributed environment                             \r
   // Refill analysis histograms of this class with corresponding\r
@@ -1624,14 +2012,14 @@ void AliAnaElectron::ReadHistograms(TList* outputList)
   // Histograms of this analsys are kept in the same list as other\r
   // analysis, recover the position of\r
   // the first one and then add the next                                                      \r
-  Int_t index = outputList->IndexOf(outputList->FindObject(GetAddedHistogramsStringToName()+"fh1pOverE"));\r
+  //Int_t index = outputList->IndexOf(outputList->FindObject(GetAddedHistogramsStringToName()+"fh1pOverE"));\r
 \r
   //Read histograms, must be in the same order as in\r
   //GetCreateOutputObject.                   \r
-  fh1pOverE     = (TH1F *) outputList->At(index);\r
-  fh1dR         = (TH1F *) outputList->At(index++);\r
-  fh2EledEdx    = (TH2F *) outputList->At(index++);\r
-  fh2MatchdEdx  = (TH2F *) outputList->At(index++);\r
+  //fh1pOverE     = (TH1F *) outputList->At(index);\r
+  //fh1dR         = (TH1F *) outputList->At(index++);\r
+  //fh2EledEdx    = (TH2F *) outputList->At(index++);\r
+  //fh2MatchdEdx  = (TH2F *) outputList->At(index++);\r
   \r
 }\r
 \r