]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
Fixing bug with wrong eta cut, adding MC cross checking functions, and applying stand...
authorcnattras <cnattras@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 25 Apr 2011 18:05:35 +0000 (18:05 +0000)
committercnattras <cnattras@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 25 Apr 2011 18:05:35 +0000 (18:05 +0000)
PWG4/totEt/AliAnalysisHadEtMonteCarlo.cxx
PWG4/totEt/AliAnalysisHadEtMonteCarlo.h
PWG4/totEt/AliAnalysisHadEtReconstructed.cxx
PWG4/totEt/AliAnalysisHadEtReconstructed.h
PWG4/totEt/AliAnalysisTaskHadEt.cxx

index e1298828c21773ca8364363de7c35d8fdac040f3..c091917657af1f276a3fefa06a765d51219cda71 100644 (file)
@@ -21,6 +21,7 @@
 #include "AliAnalysisTask.h"
 #include "AliAnalysisManager.h"
 #include "AliAnalysisHadEtReconstructed.h"
+#include "AliAnalysisHadEtCorrections.h"
 #include "AliAnalysisEtCuts.h"
 #include <iostream>
 #include "TRandom.h"
@@ -40,6 +41,10 @@ AliAnalysisHadEtMonteCarlo::AliAnalysisHadEtMonteCarlo():AliAnalysisHadEt()
                                                        ,fSimPiKPEt(0)
                                                        ,fSimHadEt(0)
                                                        ,fSimTotEt(0) 
+                                                       ,fSimPiKPEtShouldBeReco(0)
+                                                       ,fSimPiKPEtShouldBeRecoPi(0)
+                                                       ,fSimPiKPEtShouldBeRecoK(0)
+                                                       ,fSimPiKPEtShouldBeRecoP(0)
                                                        ,fInvestigateSmearing(0)
                                                        ,fInvestigateFull(0)
                                                        ,fInvestigateEMCal(0)
@@ -49,6 +54,7 @@ AliAnalysisHadEtMonteCarlo::AliAnalysisHadEtMonteCarlo():AliAnalysisHadEt()
                                                        ,fBaryonEnhancement(0)
                                                        ,fUseRecoPt(0)
                                                        ,fPtSmearer(0)
+                                                       ,fHadEtReco(0)
 {
 }
 AliAnalysisHadEtMonteCarlo::~AliAnalysisHadEtMonteCarlo(){//destructor
@@ -93,6 +99,28 @@ Int_t AliAnalysisHadEtMonteCarlo::AnalyseEvent(AliVEvent* ev,AliVEvent* ev2)
   //Roughly following $ALICE_ROOT/PWG0/dNdEta/AlidNdEtaCorrectionTask
 
   //=============================================TPC&&ITS=============================================
+  //for investigating momentum smearing 
+  Float_t pTtotalReco = 0.0;
+  Float_t pTtotalSim = 0.0;
+  Float_t eTtotalSimAll = 0.0;
+  Float_t eTtotalReco = 0.0;
+  Float_t eTtotalRecoEffCorr = 0.0;
+  Float_t eTtotalRecoEffBkgdCorr = 0.0;
+  Float_t eTtotalRecoBkgdCorr = 0.0;
+  Float_t eTtotalRecoUncorr = 0.0;
+  Float_t eTtotalRecoTotalUncorr = 0.0;
+  Float_t eTtotalRecoEffCorrPi = 0.0;
+  Float_t eTtotalRecoEffCorrK = 0.0;
+  Float_t eTtotalRecoEffCorrP = 0.0;
+  Float_t eTtotalRecoBkgd = 0.0;
+  Float_t eTtotalRecoPIDSmeared = 0.0;
+  Float_t eTtotalAsReconstructed = 0.0;
+  Float_t eTBkgdAsReconstructed = 0.0;
+  Float_t eTtotalAsReconstructedPi = 0.0;
+  Float_t eTtotalAsReconstructedP = 0.0;
+  Float_t eTtotalAsReconstructedK = 0.0;
+  Float_t eTtotalSim = 0.0;
+  Int_t nReco = 0;
   TString *strTPC = new TString("TPC");
   TString *strITS = new TString("ITS");
   TString *strTPCITS = new TString("TPCITS");
@@ -152,7 +180,14 @@ Int_t AliAnalysisHadEtMonteCarlo::AnalyseEvent(AliVEvent* ev,AliVEvent* ev2)
          bool isKaon = (nSigmaPion>3.0 && nSigmaProton>3.0 && nSigmaKaon<3.0 && track->Pt()<0.45);
          bool isProton = (nSigmaPion>3.0 && nSigmaProton<3.0 && nSigmaKaon>3.0 && track->Pt()<0.9);
 
-         bool unidentified = (!isProton && !isKaon && !isElectron);
+         bool unidentified = (!isProton && !isKaon && !isElectron && !isPion);
+         if(cutset==1){//ITS dE/dx identification requires tighter cuts on the tracks and we don't gain much from that so we won't do it
+           unidentified = true;
+           isPion=false;
+           isElectron=false;
+           isKaon=false;
+           isProton=false;
+         }
          Float_t dEdx = track->GetTPCsignal();
          if(cutset==1) dEdx = track->GetITSsignal();
 
@@ -165,8 +200,101 @@ Int_t AliAnalysisHadEtMonteCarlo::AnalyseEvent(AliVEvent* ev,AliVEvent* ev2)
            continue;           
          }
          else{//analysis
+           if(fInvestigateSmearing && cutset==2){
+             //calculates what we would measure for the pi/k/p et with background
+             eTtotalRecoTotalUncorr += Et(simPart);
+             if(isPion){
+               eTtotalRecoEffBkgdCorr += Et(simPart) *fHadEtReco->GetCorrections()->GetTPCEfficiencyCorrectionPion(track->Pt(),fCentBin) * fHadEtReco->GetCorrections()->GetBackgroundCorrectionTPC(track->Pt());
+               eTtotalRecoBkgdCorr += Et(simPart) * fHadEtReco->GetCorrections()->GetBackgroundCorrectionTPC(track->Pt());
+               eTtotalRecoTotalUncorr += Et(simPart);
+             }
+             if(isProton){
+               eTtotalRecoEffBkgdCorr += Et(simPart) *fHadEtReco->GetCorrections()->GetTPCEfficiencyCorrectionProton(track->Pt(),fCentBin) * fHadEtReco->GetCorrections()->GetBackgroundCorrectionTPC(track->Pt());
+               eTtotalRecoBkgdCorr += Et(simPart) * fHadEtReco->GetCorrections()->GetBackgroundCorrectionTPC(track->Pt());
+             }
+             if(isKaon){
+               eTtotalRecoEffBkgdCorr += Et(simPart) *fHadEtReco->GetCorrections()->GetTPCEfficiencyCorrectionKaon(track->Pt(),fCentBin) * fHadEtReco->GetCorrections()->GetBackgroundCorrectionTPC(track->Pt());
+               eTtotalRecoBkgdCorr += Et(simPart) * fHadEtReco->GetCorrections()->GetBackgroundCorrectionTPC(track->Pt());
+             }
+             if(unidentified){
+               eTtotalRecoEffBkgdCorr += Et(simPart) *fHadEtReco->GetCorrections()->GetTPCEfficiencyCorrectionHadron(track->Pt(),fCentBin) * fHadEtReco->GetCorrections()->GetBackgroundCorrectionTPC(track->Pt());
+               eTtotalRecoBkgdCorr += Et(simPart) * fHadEtReco->GetCorrections()->GetBackgroundCorrectionTPC(track->Pt());
+             }
+             //for calculating et as it's done in the reconstructed data
+             Float_t corrBkgd=0.0;
+             Float_t corrNotID=0.0;
+             Float_t corrNoID=0.0;// = fHadEtReco->GetCorrections()->GetNotIDCorrectionNoPID(track->Pt());
+             Float_t corrEff = 0.0;
+             Float_t corrEffNoID = 0.0;
+             Float_t et = 0.0;
+             if(cutset==2){//TPC
+               corrBkgd = fHadEtReco->GetCorrections()->GetBackgroundCorrectionTPC(track->Pt());
+               corrEffNoID = fHadEtReco->GetCorrections()->GetTPCEfficiencyCorrectionHadron(track->Pt(),fCentBin);
+               corrNotID = fHadEtReco->GetCorrections()->GetNotIDConstCorrectionTPC();
+               corrNoID = fHadEtReco->GetCorrections()->GetNotIDConstCorrectionTPCNoID();
+             }
+             if(cutset==1){//ITS
+               corrBkgd = fHadEtReco->GetCorrections()->GetBackgroundCorrectionITS(track->Pt());
+               corrEffNoID = fHadEtReco->GetCorrections()->GetITSEfficiencyCorrectionHadron(track->Pt(),fCentBin);
+               corrNotID = fHadEtReco->GetCorrections()->GetNotIDConstCorrectionITS();
+               corrNoID = fHadEtReco->GetCorrections()->GetNotIDConstCorrectionITSNoID();
+             }
+             
+             bool isprimary = stack->IsPhysicalPrimary(label);
+             if (TMath::Abs(track->Eta()) < fHadEtReco->GetCorrections()->GetEtaCut()){
+                 if(isPion){
+                   et = Et(track->P(),track->Theta(),fgPiPlusCode,track->Charge());
+                   corrEff = fHadEtReco->GetCorrections()->GetTPCEfficiencyCorrectionPion(track->Pt(),fCentBin);
+                   if(isprimary){
+                     eTtotalAsReconstructed += et*corrBkgd*corrEff*corrNotID;
+                   }
+                   else{
+                     eTBkgdAsReconstructed += et*corrBkgd*corrEff*corrNotID;
+                   }
+                 }
+                 if(isKaon){
+                   et = Et(track->P(),track->Theta(),fgKPlusCode,track->Charge());
+                   corrEff = fHadEtReco->GetCorrections()->GetTPCEfficiencyCorrectionKaon(track->Pt(),fCentBin);
+                   if(isprimary){
+                     eTtotalAsReconstructed += et*corrBkgd*corrEff*corrNotID;
+                   }
+                   else{
+                     eTBkgdAsReconstructed += et*corrBkgd*corrEff*corrNotID;
+                   }
+                 }
+                 if(isProton){
+                   et = Et(track->P(),track->Theta(),fgProtonCode,track->Charge());
+                   corrEff = fHadEtReco->GetCorrections()->GetTPCEfficiencyCorrectionProton(track->Pt(),fCentBin);
+                   if(isprimary){
+                     eTtotalAsReconstructed += et*corrBkgd*corrEff*corrNotID;
+                   }
+                   else{
+                     eTBkgdAsReconstructed += et*corrBkgd*corrEff*corrNotID;
+                   }
+                 }
+                 if(unidentified){
+                   et = Et(track->P(),track->Theta(),fgPiPlusCode,track->Charge());
+                   corrEff = fHadEtReco->GetCorrections()->GetTPCEfficiencyCorrectionHadron(track->Pt(),fCentBin);
+                   if(isprimary){
+                     eTtotalAsReconstructed += et*corrBkgd*corrEff*corrNotID;
+                   }
+                   else{
+                     eTBkgdAsReconstructed += et*corrBkgd*corrEff*corrNotID;
+                   }
+                 }
+                 if(!isPion && !isProton && !isKaon && !unidentified){
+                     eTBkgdAsReconstructed += et*corrBkgd*corrEff*corrNotID;
+                 }
+                 Int_t pdgCode =  simPart->GetPDG(0)->PdgCode();
+                 if(pdgCode==fgPiPlusCode ||pdgCode==fgPiMinusCode){eTtotalAsReconstructedPi+=et*corrBkgd*corrEff*corrNotID;}
+                 if(pdgCode==fgKPlusCode ||pdgCode==fgKMinusCode){eTtotalAsReconstructedK+=et*corrBkgd*corrEff*corrNotID;}
+                 if(pdgCode==fgProtonCode ||pdgCode==fgAntiProtonCode){eTtotalAsReconstructedP+=et*corrBkgd*corrEff*corrNotID;}
+               }
+           }
+
+           if(cutset==2) eTtotalSimAll += Et(simPart);
            if(stack->IsPhysicalPrimary(label)){
-             if (TMath::Abs(simPart->Eta()) < fCuts->GetCommonEtaCut()){
+             if (TMath::Abs(simPart->Eta()) < fHadEtReco->GetCorrections()->GetEtaCut()){
                Int_t pdgCode =  simPart->GetPDG(0)->PdgCode();
                Int_t mypid = 0;
                if(pdgCode==AliAnalysisHadEt::fgPiPlusCode) mypid = 1;
@@ -178,14 +306,27 @@ Int_t AliAnalysisHadEtMonteCarlo::AnalyseEvent(AliVEvent* ev,AliVEvent* ev2)
                if(pdgCode==fgKMinusCode) mypid = 3;
                if(pdgCode==fgEMinusCode) mypid = 4;
                bool filled = false;      
+               //for smearing investigations
+               if(fInvestigateSmearing && cutset==2){
+                 pTtotalReco += simPart->Pt();
+                 pTtotalSim += track->Pt();
+                 eTtotalReco += Et(track->P(),track->Theta(),pdgCode,track->Charge());
+                 eTtotalSim += Et(simPart);
+                 nReco++;
+               }
                //============Charged hadrons===================================
+               float myefficiencyCorrEt = 0.0;
                //identified...
                if(isPion){
                  if(pdgCode!=fgPiPlusCode && pdgCode!=fgPiMinusCode){
                    FillHisto2D(Form("MisidentifiedPIDs%s",cutName->Data()),1,mypid,1);
-                   //if(mypid==0)cerr<<"I was misidentified! I'm not a pion! I am a "<<simPart->GetName()<<endl;
                  }
                  float myEt = Et(simPart);
+                 if(fInvestigateSmearing && cutset==2){
+                   eTtotalRecoPIDSmeared +=myEt;
+                   eTtotalRecoEffCorr += myEt *fHadEtReco->GetCorrections()->GetTPCEfficiencyCorrectionPion(track->Pt(),fCentBin);
+                   myefficiencyCorrEt = myEt * fHadEtReco->GetCorrections()->GetTPCEfficiencyCorrectionPion(track->Pt(),fCentBin) ;
+                 }
                  if(track->Charge()>0){ FillHisto2D(Form("EtReconstructed%sIdentifiedPiPlus",cutName->Data()),track->Pt(),track->Eta(),myEt);}
                  else{ FillHisto2D(Form("EtReconstructed%sIdentifiedPiMinus",cutName->Data()),track->Pt(),track->Eta(),myEt);}
                  FillHisto2D(Form("dEdxPion%s",cutName->Data()),track->P(),dEdx,1.0);
@@ -195,6 +336,11 @@ Int_t AliAnalysisHadEtMonteCarlo::AnalyseEvent(AliVEvent* ev,AliVEvent* ev2)
                    FillHisto2D(Form("MisidentifiedPIDs%s",cutName->Data()),2,mypid,1);
                  }
                  float myEt = Et(simPart);
+                 if(fInvestigateSmearing && cutset==2){
+                   eTtotalRecoPIDSmeared +=myEt;
+                   eTtotalRecoEffCorr += myEt *fHadEtReco->GetCorrections()->GetTPCEfficiencyCorrectionProton(track->Pt(),fCentBin);
+                   myefficiencyCorrEt = myEt * fHadEtReco->GetCorrections()->GetTPCEfficiencyCorrectionProton(track->Pt(),fCentBin);
+                 }
                  if(track->Charge()>0){ FillHisto2D(Form("EtReconstructed%sIdentifiedProton",cutName->Data()),track->Pt(),track->Eta(),myEt);}
                  else{ FillHisto2D(Form("EtReconstructed%sIdentifiedAntiProton",cutName->Data()),track->Pt(),track->Eta(),myEt);}
                  if(fBaryonEnhancement){
@@ -209,6 +355,11 @@ Int_t AliAnalysisHadEtMonteCarlo::AnalyseEvent(AliVEvent* ev,AliVEvent* ev2)
                    FillHisto2D(Form("MisidentifiedPIDs%s",cutName->Data()),3,mypid,1);
                  }
                  float myEt = Et(simPart);
+                 if(fInvestigateSmearing && cutset==2){
+                   eTtotalRecoPIDSmeared +=myEt;
+                   eTtotalRecoEffCorr += myEt *fHadEtReco->GetCorrections()->GetTPCEfficiencyCorrectionKaon(track->Pt(),fCentBin);
+                   myefficiencyCorrEt = myEt * fHadEtReco->GetCorrections()->GetTPCEfficiencyCorrectionKaon(track->Pt(),fCentBin);
+                 }
                  if(track->Charge()>0){ FillHisto2D(Form("EtReconstructed%sIdentifiedKPlus",cutName->Data()),track->Pt(),track->Eta(),myEt);}
                  else{ FillHisto2D(Form("EtReconstructed%sIdentifiedKMinus",cutName->Data()),track->Pt(),track->Eta(),myEt);}
                  FillHisto2D(Form("dEdxKaon%s",cutName->Data()),track->P(),dEdx,1.0);
@@ -228,6 +379,11 @@ Int_t AliAnalysisHadEtMonteCarlo::AnalyseEvent(AliVEvent* ev,AliVEvent* ev2)
                    float myEtP = Et(simPart,fgProtonMass);
                    float myEtK = Et(simPart,fgKaonMass);
                    float myEt = Et(simPart);
+                   if(fInvestigateSmearing && cutset==2){
+                     eTtotalRecoPIDSmeared +=myEtPi;
+                     eTtotalRecoEffCorr += myEt *fHadEtReco->GetCorrections()->GetTPCEfficiencyCorrectionHadron(track->Pt(),fCentBin);
+                     myefficiencyCorrEt = myEt * fHadEtReco->GetCorrections()->GetTPCEfficiencyCorrectionHadron(track->Pt(),fCentBin);
+                   }
                    FillHisto2D(Form("EtReconstructed%sUnidentifiedAssumingPion",cutName->Data()),track->Pt(),track->Eta(),myEtPi);
                    FillHisto2D(Form("EtReconstructed%sUnidentifiedAssumingProton",cutName->Data()),track->Pt(),track->Eta(),myEtP);
                    FillHisto2D(Form("EtReconstructed%sUnidentifiedAssumingKaon",cutName->Data()),track->Pt(),track->Eta(),myEtK);
@@ -274,6 +430,10 @@ Int_t AliAnalysisHadEtMonteCarlo::AnalyseEvent(AliVEvent* ev,AliVEvent* ev2)
                  myEtReco = Et(track->P(),track->Theta(),fgPiPlusCode,track->Charge());
                  float pT = simPart->Pt();
                  float eta = simPart->Eta();
+                 if(fInvestigateSmearing && cutset==2){
+                   eTtotalRecoEffCorrPi+=myefficiencyCorrEt;
+                   eTtotalRecoUncorr +=myEt;
+                 }
                  if(fUseRecoPt){//Then we switch the pT and the Et
                    myEt = myEtReco;
                    pT = track->Pt();
@@ -301,6 +461,10 @@ Int_t AliAnalysisHadEtMonteCarlo::AnalyseEvent(AliVEvent* ev,AliVEvent* ev2)
                  myEtReco = Et(track->P(),track->Theta(),fgPiMinusCode,track->Charge());
                  float pT = simPart->Pt();
                  float eta = simPart->Eta();
+                 if(fInvestigateSmearing && cutset==2){
+                   eTtotalRecoEffCorrPi+=myefficiencyCorrEt;
+                   eTtotalRecoUncorr +=myEt;
+                 }
                  if(fUseRecoPt){//Then we switch the pT and the Et
                    myEt = myEtReco;
                    pT = track->Pt();
@@ -333,6 +497,10 @@ Int_t AliAnalysisHadEtMonteCarlo::AnalyseEvent(AliVEvent* ev,AliVEvent* ev2)
                    pT = track->Pt();
                    eta = track->Eta();
                  }
+                 if(fInvestigateSmearing && cutset==2){
+                   eTtotalRecoEffCorrK+=myefficiencyCorrEt;
+                   eTtotalRecoUncorr +=myEt;
+                 }
                  FillHisto2D(Form("EtReconstructed%sKPlus",cutName->Data()),pT,eta,myEt);
                  FillHisto2D(Form("EtReconstructed%sChargedHadron",cutName->Data()),pT,eta,myEt);
                  FillHisto2D(Form("EtNReconstructed%sKPlus",cutName->Data()),pT,eta,myEt);
@@ -361,6 +529,10 @@ Int_t AliAnalysisHadEtMonteCarlo::AnalyseEvent(AliVEvent* ev,AliVEvent* ev2)
                    pT = track->Pt();
                    eta = track->Eta();
                  }
+                 if(fInvestigateSmearing && cutset==2){
+                   eTtotalRecoEffCorrK+=myefficiencyCorrEt;
+                   eTtotalRecoUncorr +=myEt;
+                 }
                  FillHisto2D(Form("EtReconstructed%sKMinus",cutName->Data()),pT,eta,myEt);
                  FillHisto2D(Form("EtReconstructed%sChargedHadron",cutName->Data()),pT,eta,myEt);
                  FillHisto2D(Form("EtNReconstructed%sKMinus",cutName->Data()),pT,eta,myEt);
@@ -389,6 +561,10 @@ Int_t AliAnalysisHadEtMonteCarlo::AnalyseEvent(AliVEvent* ev,AliVEvent* ev2)
                    pT = track->Pt();
                    eta = track->Eta();
                  }
+                 if(fInvestigateSmearing && cutset==2){
+                   eTtotalRecoEffCorrP+=myefficiencyCorrEt;
+                   eTtotalRecoUncorr +=myEt;
+                 }
                  FillHisto2D(Form("EtReconstructed%sProton",cutName->Data()),pT,eta,myEt);
                  FillHisto2D(Form("EtReconstructed%sChargedHadron",cutName->Data()),pT,eta,myEt);
                  FillHisto2D(Form("EtNReconstructed%sProton",cutName->Data()),pT,eta,myEt);
@@ -425,6 +601,10 @@ Int_t AliAnalysisHadEtMonteCarlo::AnalyseEvent(AliVEvent* ev,AliVEvent* ev2)
                    pT = track->Pt();
                    eta = track->Eta();
                  }
+                 if(fInvestigateSmearing && cutset==2){
+                   eTtotalRecoEffCorrP+=myefficiencyCorrEt;
+                   eTtotalRecoUncorr +=myEt;
+                 }
                  FillHisto2D(Form("EtReconstructed%sAntiProton",cutName->Data()),pT,eta,myEt);
                  FillHisto2D(Form("EtReconstructed%sChargedHadron",cutName->Data()),pT,eta,myEt);
                  FillHisto2D(Form("EtNReconstructed%sAntiProton",cutName->Data()),pT,eta,myEt);
@@ -462,8 +642,8 @@ Int_t AliAnalysisHadEtMonteCarlo::AnalyseEvent(AliVEvent* ev,AliVEvent* ev2)
                    FillHisto2D(Form("EtReconstructed%sMisidentifiedElectrons",cutName->Data()),track->Pt(),track->Eta(),myEtPi);
                  }
                  float myEt = Et(simPart);
-                   FillHisto2D(Form("EtReconstructed%sEMinus",cutName->Data()),simPart->Pt(),simPart->Eta(),myEt);
-                   filled = true;
+                 FillHisto2D(Form("EtReconstructed%sEMinus",cutName->Data()),simPart->Pt(),simPart->Eta(),myEt);
+                 filled = true;
                }
                if(myEtReco>0.0){FillHisto2D(Form("ETresolution%s",cutName->Data()),myEtReco,(myEtSim-myEtReco)/myEtReco,1.0);}
                if(track->Pt()>0.0){FillHisto2D(Form("pTresolution%s",cutName->Data()),track->Pt(),(simPart->Pt() - track->Pt())/track->Pt(),1.0);}
@@ -476,53 +656,64 @@ Int_t AliAnalysisHadEtMonteCarlo::AnalyseEvent(AliVEvent* ev,AliVEvent* ev2)
                }
 
              }
-             
            }
            else{//not a primary - we're after V0 daughters!
-             if (TMath::Abs(simPart->Eta()) < fCuts->GetCommonEtaCut()){
+             bool written = false;
+             //now, what is the et we would measure for this?  Since this is the relevant et.
+             float myrecoEt = 0;
+             if(isPion || unidentified) myrecoEt = Et(track->P(),track->Theta(),fgPiPlusCode,track->Charge());
+             if(isProton) myrecoEt = Et(track->P(),track->Theta(),fgProtonCode,track->Charge());
+             if(isKaon) myrecoEt = Et(track->P(),track->Theta(),fgKPlusCode,track->Charge());
+             if (TMath::Abs(simPart->Eta()) < fHadEtReco->GetCorrections()->GetEtaCut()){
                TParticle *mom = stack->Particle(simPart->GetFirstMother());
                if(mom){
                  TParticlePDG *pc = mom->GetPDG(0);
                  if(pc){
                    Int_t pdgCode =  mom->GetPDG(0)->PdgCode();
                    if(pdgCode == fgLambdaCode){
+                     written = true;
                      float myEt = Et(simPart);
                      float pT = simPart->Pt();
                      float eta = simPart->Eta();
+                     eTtotalRecoBkgd+=myEt;
                      if(fUseRecoPt){//Then we switch the pT and the Et
                        myEt = Et(track->P(),track->Theta(),simPart->GetPDG(0)->PdgCode(),track->Charge());
                        pT = track->Pt();
                        eta = track->Eta();
                      }
-                     FillHisto2D(Form("EtReconstructed%sLambdaDaughters",cutName->Data()),pT,eta,myEt);
+                     FillHisto2D(Form("EtReconstructed%sLambdaDaughters",cutName->Data()),pT,eta,myrecoEt);
                      Float_t weight = LambdaWeight(mom->Pt());
                      if(fBaryonEnhancement){
                        float enhancement = ProtonBaryonEnhancement(track->Pt());
                        weight = weight*enhancement;
                      }
-                     FillHisto2D(Form("EtReconstructed%sLambdaDaughtersReweighted",cutName->Data()),pT,eta,myEt*weight);
+                     FillHisto2D(Form("EtReconstructed%sLambdaDaughtersReweighted",cutName->Data()),pT,eta,myrecoEt*weight);
                    }
                    if(pdgCode == fgAntiLambdaCode){
+                     written = true;
                      float myEt = Et(simPart);
                      float pT = simPart->Pt();
                      float eta = simPart->Eta();
+                     eTtotalRecoBkgd+=myEt;
                      if(fUseRecoPt){//Then we switch the pT and the Et
                        myEt = Et(track->P(),track->Theta(),simPart->GetPDG(0)->PdgCode(),track->Charge());
                        pT = track->Pt();
                        eta = track->Eta();
                      }
-                     FillHisto2D(Form("EtReconstructed%sAntiLambdaDaughters",cutName->Data()),pT,eta,myEt);
+                     FillHisto2D(Form("EtReconstructed%sAntiLambdaDaughters",cutName->Data()),pT,eta,myrecoEt);
                      Float_t weight = AntiLambdaWeight(mom->Pt());
                      if(fBaryonEnhancement){
                        float enhancement = ProtonBaryonEnhancement(track->Pt());
                        weight = weight*enhancement;
                      }
-                     FillHisto2D(Form("EtReconstructed%sAntiLambdaDaughtersReweighted",cutName->Data()),pT,eta,myEt*weight);
+                     FillHisto2D(Form("EtReconstructed%sAntiLambdaDaughtersReweighted",cutName->Data()),pT,eta,myrecoEt*weight);
                    }
-                   if(pdgCode == fgK0SCode){
+                   if(pdgCode == fgK0SCode || pdgCode == fgK0LCode || pdgCode == fgKPlusCode || pdgCode == fgKMinusCode){//actually get all kaon daughters
+                     written = true;
                      float myEt = Et(simPart);
                      float pT = simPart->Pt();
                      float eta = simPart->Eta();
+                     eTtotalRecoBkgd+=myEt;
                      if(fUseRecoPt){//Then we switch the pT and the Et
                        myEt = Et(track->P(),track->Theta(),simPart->GetPDG(0)->PdgCode(),track->Charge());
                        pT = track->Pt();
@@ -530,51 +721,59 @@ Int_t AliAnalysisHadEtMonteCarlo::AnalyseEvent(AliVEvent* ev,AliVEvent* ev2)
                      }
                      FillHisto2D(Form("EtReconstructed%sK0SDaughters",cutName->Data()),pT,eta,myEt);
                      Float_t weight = K0Weight(mom->Pt());
-                     FillHisto2D(Form("EtReconstructed%sK0SDaughtersReweighted",cutName->Data()),pT,eta,myEt*weight);
+                     FillHisto2D(Form("EtReconstructed%sK0SDaughtersReweighted",cutName->Data()),pT,eta,myrecoEt*weight);
                    }
                    if(pdgCode == fgXiCode){
+                     written = true;
                      float myEt = Et(simPart);
                      float pT = simPart->Pt();
                      float eta = simPart->Eta();
+                     eTtotalRecoBkgd+=myEt;
                      if(fUseRecoPt){//Then we switch the pT and the Et
                        myEt = Et(track->P(),track->Theta(),simPart->GetPDG(0)->PdgCode(),track->Charge());
                        pT = track->Pt();
                        eta = track->Eta();
                      }
-                     FillHisto2D(Form("EtReconstructed%sXiDaughters",cutName->Data()),pT,eta,myEt);
+                     FillHisto2D(Form("EtReconstructed%sXiDaughters",cutName->Data()),pT,eta,myrecoEt);
                    }
                    if(pdgCode == fgAntiXiCode){
+                     written = true;
                      float myEt = Et(simPart);
                      float pT = simPart->Pt();
                      float eta = simPart->Eta();
+                     eTtotalRecoBkgd+=myEt;
                      if(fUseRecoPt){//Then we switch the pT and the Et
                        myEt = Et(track->P(),track->Theta(),simPart->GetPDG(0)->PdgCode(),track->Charge());
                        pT = track->Pt();
                        eta = track->Eta();
                      }
-                     FillHisto2D(Form("EtReconstructed%sAntiXiDaughters",cutName->Data()),pT,eta,myEt);
+                     FillHisto2D(Form("EtReconstructed%sAntiXiDaughters",cutName->Data()),pT,eta,myrecoEt);
                    }
                    if(pdgCode == fgOmegaCode){
+                     written = true;
                      float myEt = Et(simPart);
                      float pT = simPart->Pt();
                      float eta = simPart->Eta();
+                     eTtotalRecoBkgd+=myEt;
                      if(fUseRecoPt){//Then we switch the pT and the Et
                        myEt = Et(track->P(),track->Theta(),simPart->GetPDG(0)->PdgCode(),track->Charge());
                        pT = track->Pt();
                        eta = track->Eta();
                      }
-                     FillHisto2D(Form("EtReconstructed%sOmegaDaughters",cutName->Data()),pT,eta,myEt);
+                     FillHisto2D(Form("EtReconstructed%sOmegaDaughters",cutName->Data()),pT,eta,myrecoEt);
                    }
                    if(pdgCode == fgXiCode){
+                     written = true;
                      float myEt = Et(simPart);
                      float pT = simPart->Pt();
                      float eta = simPart->Eta();
+                     eTtotalRecoBkgd+=myEt;
                      if(fUseRecoPt){//Then we switch the pT and the Et
                        myEt = Et(track->P(),track->Theta(),simPart->GetPDG(0)->PdgCode(),track->Charge());
                        pT = track->Pt();
                        eta = track->Eta();
                      }
-                     FillHisto2D(Form("EtReconstructed%sAntiOmegaDaughters",cutName->Data()),pT,eta,myEt);
+                     FillHisto2D(Form("EtReconstructed%sAntiOmegaDaughters",cutName->Data()),pT,eta,myrecoEt);
                    }
 
                    if(mom->GetFirstMother()>0){
@@ -585,55 +784,121 @@ Int_t AliAnalysisHadEtMonteCarlo::AnalyseEvent(AliVEvent* ev,AliVEvent* ev2)
                          Int_t pdgCodeGrandma =  grandma->GetPDG(0)->PdgCode();
                      
                          if(pdgCodeGrandma == fgXiCode){
+                           written = true;
                            float myEt = Et(simPart);
                            float pT = simPart->Pt();
                            float eta = simPart->Eta();
+                           eTtotalRecoBkgd+=myEt;
                            if(fUseRecoPt){//Then we switch the pT and the Et
                              myEt = Et(track->P(),track->Theta(),simPart->GetPDG(0)->PdgCode(),track->Charge());
                              pT = track->Pt();
                              eta = track->Eta();
                            }
-                           FillHisto2D(Form("EtReconstructed%sXiDaughters",cutName->Data()),pT,eta,myEt);
+                           FillHisto2D(Form("EtReconstructed%sXiDaughters",cutName->Data()),pT,eta,myrecoEt);
                          }
                          if(pdgCodeGrandma == fgAntiXiCode){
+                           written = true;
                            float myEt = Et(simPart);
                            float pT = simPart->Pt();
                            float eta = simPart->Eta();
+                           eTtotalRecoBkgd+=myEt;
                            if(fUseRecoPt){//Then we switch the pT and the Et
                              myEt = Et(track->P(),track->Theta(),simPart->GetPDG(0)->PdgCode(),track->Charge());
                              pT = track->Pt();
                              eta = track->Eta();
                            }
-                           FillHisto2D(Form("EtReconstructed%sAntiXiDaughters",cutName->Data()),pT,eta,myEt);
+                           FillHisto2D(Form("EtReconstructed%sAntiXiDaughters",cutName->Data()),pT,eta,myrecoEt);
                          }
                          if(pdgCodeGrandma == fgOmegaCode){
+                           written = true;
                            float myEt = Et(simPart);
                            float pT = simPart->Pt();
                            float eta = simPart->Eta();
+                           eTtotalRecoBkgd+=myEt;
                            if(fUseRecoPt){//Then we switch the pT and the Et
                              myEt = Et(track->P(),track->Theta(),simPart->GetPDG(0)->PdgCode(),track->Charge());
                              pT = track->Pt();
                              eta = track->Eta();
                            }
-                           FillHisto2D(Form("EtReconstructed%sOmegaDaughters",cutName->Data()),pT,eta,myEt);
+                           FillHisto2D(Form("EtReconstructed%sOmegaDaughters",cutName->Data()),pT,eta,myrecoEt);
                          }
                          if(pdgCodeGrandma == fgXiCode){
+                           written = true;
                            float myEt = Et(simPart);
                            float pT = simPart->Pt();
                            float eta = simPart->Eta();
+                           eTtotalRecoBkgd+=myEt;
                            if(fUseRecoPt){//Then we switch the pT and the Et
                              myEt = Et(track->P(),track->Theta(),simPart->GetPDG(0)->PdgCode(),track->Charge());
                              pT = track->Pt();
                              eta = track->Eta();
                            }
-                           FillHisto2D(Form("EtReconstructed%sAntiOmegaDaughters",cutName->Data()),pT,eta,myEt);
+                           FillHisto2D(Form("EtReconstructed%sAntiOmegaDaughters",cutName->Data()),pT,eta,myrecoEt);
                          }
 
                        }
                      }
                    }
+                   if(!written){
+                     int mycode = simPart->GetPDG(0)->PdgCode();
+                     if( (pdgCode == fgGammaCode || pdgCode == fgPi0Code) && (mycode==fgEPlusCode||mycode==fgEMinusCode)){
+                       written = true;
+                       float myEt = Et(simPart);
+                       float pT = simPart->Pt();
+                       float eta = simPart->Eta();
+                       eTtotalRecoBkgd+=myEt;
+                       if(fUseRecoPt){//Then we switch the pT and the Et
+                         myEt = Et(track->P(),track->Theta(),simPart->GetPDG(0)->PdgCode(),track->Charge());
+                         pT = track->Pt();
+                         eta = track->Eta();
+                       }
+                       FillHisto2D(Form("EtReconstructed%sConversionElectrons",cutName->Data()),pT,eta,myrecoEt);
+                     }
+                     if(mycode==fgMuPlusCode || mycode==fgMuMinusCode){
+                       written = true;
+                       float myEt = Et(simPart);
+                       float pT = simPart->Pt();
+                       float eta = simPart->Eta();
+                       eTtotalRecoBkgd+=myEt;
+                       if(fUseRecoPt){//Then we switch the pT and the Et
+                         myEt = Et(track->P(),track->Theta(),simPart->GetPDG(0)->PdgCode(),track->Charge());
+                         pT = track->Pt();
+                         eta = track->Eta();
+                       }
+                       FillHisto2D(Form("EtReconstructed%sSecondaryMuons",cutName->Data()),pT,eta,myrecoEt);
+                     }
+                     if(mycode==fgPiPlusCode || mycode==fgPiMinusCode){
+                       written = true;
+                       float myEt = Et(simPart);
+                       float pT = simPart->Pt();
+                       float eta = simPart->Eta();
+                       eTtotalRecoBkgd+=myEt;
+                       if(fUseRecoPt){//Then we switch the pT and the Et
+                         myEt = Et(track->P(),track->Theta(),simPart->GetPDG(0)->PdgCode(),track->Charge());
+                         pT = track->Pt();
+                         eta = track->Eta();
+                       }
+                       FillHisto2D(Form("EtReconstructed%sSecondaryPions",cutName->Data()),pT,eta,myrecoEt);
+                     }
+                     if(mycode==fgAntiProtonCode || mycode==fgProtonCode){
+                       written = true;
+                       float myEt = Et(simPart);
+                       float pT = simPart->Pt();
+                       float eta = simPart->Eta();
+                       eTtotalRecoBkgd+=myEt;
+                       if(fUseRecoPt){//Then we switch the pT and the Et
+                         myEt = Et(track->P(),track->Theta(),simPart->GetPDG(0)->PdgCode(),track->Charge());
+                         pT = track->Pt();
+                         eta = track->Eta();
+                       }
+                       FillHisto2D(Form("EtReconstructed%sSecondaryProtons",cutName->Data()),pT,eta,myrecoEt);
+                     }
+                     //if(!written) cout<<"I was not counted in the background and I am a "<<simPart->GetName()<<" and my mother is a "<<mom->GetName()<<endl;
+                   }
                  }
+                 else{cout<<"No particle code!! 657"<<endl;}
                }
+               else{cout<<"No mother particle!! 658"<<endl;}
              }
            }
          }
@@ -642,11 +907,25 @@ Int_t AliAnalysisHadEtMonteCarlo::AnalyseEvent(AliVEvent* ev,AliVEvent* ev2)
       }
     delete list;
   }
+  if(fInvestigateSmearing){
+    if(fSimPiKPEtShouldBeReco>0.0) FillHisto2D("SimPiKPEtMinusSimEffCorrRecoOnly",fSimPiKPEtShouldBeReco,(fSimPiKPEtShouldBeReco-eTtotalRecoEffCorr)/fSimPiKPEtShouldBeReco,1.0);
+    if(fSimPiKPEtShouldBeReco>0.0) FillHisto2D("SimPiKPEtMinusSimEffBkgdCorrRecoOnly",fSimPiKPEtShouldBeReco,(fSimPiKPEtShouldBeReco-eTtotalRecoEffBkgdCorr)/fSimPiKPEtShouldBeReco,1.0);
+    if(fSimPiKPEtShouldBeRecoPi>0.0) FillHisto2D("SimPiKPEtMinusSimEffCorrRecoPiOnly",fSimPiKPEtShouldBeRecoPi,(fSimPiKPEtShouldBeRecoPi-eTtotalRecoEffCorrPi)/fSimPiKPEtShouldBeRecoPi,1.0);
+    if(fSimPiKPEtShouldBeRecoP>0.0) FillHisto2D("SimPiKPEtMinusSimEffCorrRecoPOnly",fSimPiKPEtShouldBeRecoP,(fSimPiKPEtShouldBeRecoP-eTtotalRecoEffCorrP)/fSimPiKPEtShouldBeRecoP,1.0);
+    if(fSimPiKPEtShouldBeRecoK>0.0) FillHisto2D("SimPiKPEtMinusSimEffCorrRecoKOnly",fSimPiKPEtShouldBeRecoK,(fSimPiKPEtShouldBeRecoK-eTtotalRecoEffCorrK)/fSimPiKPEtShouldBeRecoK,1.0);
+    if(eTtotalSim>0.0) FillHisto2D("SimPiKPEtMinusSimAllCorrSmearedRecoOnly",eTtotalSim,(eTtotalSim-eTtotalSimAll+eTtotalRecoBkgd)/eTtotalSim,1.0);
+    if(eTtotalRecoTotalUncorr>0.0) FillHisto2D("SimPiKPEtMeasMinusEtRealPiKP",eTtotalRecoTotalUncorr,(eTtotalRecoTotalUncorr-eTtotalRecoUncorr)/eTtotalRecoTotalUncorr,1.0);
+    if(eTtotalSim>0.0) FillHisto2D("SimPiKPEtMinusSimAllSmearedRecoOnly",eTtotalSim,(eTtotalSim-eTtotalSimAll)/eTtotalSim,1.0);
+    if(eTtotalSim>0.0) FillHisto2D("SimPiKPEtMinusSimPIDSmearedRecoOnly",eTtotalSim,(eTtotalSim-eTtotalRecoPIDSmeared*1.01)/eTtotalSim,1.0);
+    if(eTtotalSim>0.0) FillHisto2D("SimPiKPEtMinusSimSmearedRecoOnly",eTtotalSim,(eTtotalSim-eTtotalReco)/eTtotalSim,1.0);
+    if(pTtotalSim>0.0) FillHisto2D("SimPiKPPtMinusSimSmearedRecoOnly",pTtotalSim,(pTtotalSim-pTtotalReco)/pTtotalSim,1.0);
+    if(eTtotalSim>0.0) FillHisto2D("SimPiKPEtMinusSimSmearedMultRecoOnly",nReco,(eTtotalSim-eTtotalReco)/eTtotalSim,1.0);
+    if(pTtotalSim>0.0) FillHisto2D("SimPiKPPtMinusSimSmearedMultRecoOnly",nReco,(pTtotalSim-pTtotalReco)/pTtotalSim,1.0);
+  }
   delete pID;
   delete strTPC;
   delete strITS;
   delete strTPCITS;
-  //delete AliESDpid;
   return 1;
 }
 Int_t AliAnalysisHadEtMonteCarlo::AnalyseEvent(AliVEvent* ev)
@@ -674,6 +953,10 @@ Int_t AliAnalysisHadEtMonteCarlo::AnalyseEvent(AliVEvent* ev)
     Float_t fSimPiKPEtPtCutSmearedITS = 0;
     Float_t fSimPiKPEtPIDSmeared = 0;
     Float_t fSimPiKPEtPIDSmearedNoID = 0;
+    fSimPiKPEtShouldBeReco = 0;
+    fSimPiKPEtShouldBeRecoPi = 0;
+    fSimPiKPEtShouldBeRecoK = 0;
+    fSimPiKPEtShouldBeRecoP = 0;
     //=================Tracks which may or may not have been reconstructed=================
 
     for (Int_t iPart = 0; iPart < nPrim; iPart++)
@@ -686,13 +969,10 @@ Int_t AliAnalysisHadEtMonteCarlo::AnalyseEvent(AliVEvent* ev)
             Printf("ERROR: Could not get particle %d", iPart);
             continue;
          }
-
-        //TParticlePDG *pc = part->GetPDG(0);
-
         // Check if it is a primary particle
        if (stack->IsPhysicalPrimary(iPart)){//primaries
 
-         if (TMath::Abs(part->Eta()) < fCuts->GetCommonEtaCut())           {
+         if (TMath::Abs(part->Eta()) < fHadEtReco->GetCorrections()->GetEtaCut())          {
 
            Int_t pdgCode =  part->GetPDG(0)->PdgCode();
            bool filled = false;
@@ -734,6 +1014,8 @@ Int_t AliAnalysisHadEtMonteCarlo::AnalyseEvent(AliVEvent* ev)
              float myEt = Et(part);
              float myEtP = Et(part,fgProtonMass);
              float myEtK = Et(part,fgKaonMass);
+             if(part->Pt()>0.15) fSimPiKPEtShouldBeReco += myEt;
+             if(part->Pt()>0.15) fSimPiKPEtShouldBeRecoPi += myEt;
 
              fSimHadEt += myEt;
              fSimTotEt += myEt;
@@ -765,6 +1047,8 @@ Int_t AliAnalysisHadEtMonteCarlo::AnalyseEvent(AliVEvent* ev)
              float myEt = Et(part);
              float myEtP = Et(part,fgProtonMass);
              float myEtK = Et(part,fgKaonMass);
+             if(part->Pt()>0.15) fSimPiKPEtShouldBeReco += myEt;
+             if(part->Pt()>0.15) fSimPiKPEtShouldBeRecoPi += myEt;
              fSimHadEt += myEt;
              fSimTotEt += myEt;
              FillHisto2D("EtSimulatedPiMinus",part->Pt(),part->Eta(),myEt);
@@ -794,6 +1078,8 @@ Int_t AliAnalysisHadEtMonteCarlo::AnalyseEvent(AliVEvent* ev)
              float myEt = Et(part);
              float myEtPi = Et(part,fgPionMass);
              float myEtP = Et(part,fgProtonMass);
+             if(part->Pt()>0.15) fSimPiKPEtShouldBeReco += myEt;
+             if(part->Pt()>0.15) fSimPiKPEtShouldBeRecoK += myEt;
              fSimHadEt += myEt;
              fSimTotEt += myEt;
              FillHisto2D("EtSimulatedKPlus",part->Pt(),part->Eta(),myEt);
@@ -822,6 +1108,8 @@ Int_t AliAnalysisHadEtMonteCarlo::AnalyseEvent(AliVEvent* ev)
              float myEt = Et(part);
              float myEtPi = Et(part,fgPionMass);
              float myEtP = Et(part,fgProtonMass);
+             if(part->Pt()>0.15) fSimPiKPEtShouldBeReco += myEt;
+             if(part->Pt()>0.15) fSimPiKPEtShouldBeRecoK += myEt;
              fSimHadEt += myEt;
              fSimTotEt += myEt;
              FillHisto2D("EtSimulatedKMinus",part->Pt(),part->Eta(),myEt);
@@ -850,6 +1138,8 @@ Int_t AliAnalysisHadEtMonteCarlo::AnalyseEvent(AliVEvent* ev)
              float myEt = Et(part);
              float myEtPi = Et(part,fgPionMass);
              float myEtK = Et(part,fgKaonMass);
+             if(part->Pt()>0.15) fSimPiKPEtShouldBeReco += myEt;
+             if(part->Pt()>0.15) fSimPiKPEtShouldBeRecoP += myEt;
              fSimHadEt += myEt;
              fSimTotEt += myEt;
              FillHisto2D("EtSimulatedProton",part->Pt(),part->Eta(),myEt);
@@ -884,6 +1174,8 @@ Int_t AliAnalysisHadEtMonteCarlo::AnalyseEvent(AliVEvent* ev)
              float myEt = Et(part);
              float myEtPi = Et(part,fgPionMass);
              float myEtK = Et(part,fgKaonMass);
+             if(part->Pt()>0.15) fSimPiKPEtShouldBeReco += myEt;
+             if(part->Pt()>0.15) fSimPiKPEtShouldBeRecoP += myEt;
              fSimHadEt += myEt;
              fSimTotEt += myEt;
              FillHisto2D("EtSimulatedAntiProton",part->Pt(),part->Eta(),myEt);
@@ -936,7 +1228,6 @@ Int_t AliAnalysisHadEtMonteCarlo::AnalyseEvent(AliVEvent* ev)
              float myEt = Et(part);
              fSimHadEt += myEt;
              fSimTotEt += myEt;
-             //cout<<"I am a simulated lambda! pt "<<part->Pt()<<" eta "<<part->Eta()<<endl;
              FillHisto2D("EtSimulatedLambda",part->Pt(),part->Eta(),myEt);
              FillHisto2D("EtSimulatedAllHadron",part->Pt(),part->Eta(),myEt);
              Float_t weight = LambdaWeight(part->Pt());
@@ -957,11 +1248,9 @@ Int_t AliAnalysisHadEtMonteCarlo::AnalyseEvent(AliVEvent* ev)
                      myEt = Et(daughter);
                      FillHisto2D("EtSimulatedLambdaDaughters",daughter->Pt(),daughter->Eta(),myEt);
                      FillHisto2D("EtSimulatedLambdaDaughtersReweighted",daughter->Pt(),daughter->Eta(),myEt*weight);
-                     //cout<<"Lambda daughter is a "<<daughter->GetName()<<endl;
                    }
                  }
                  else{
-                   //cout<<"Lambda daughter is a "<<daughter->GetName()<<endl;
                  }
                }
              }
@@ -991,12 +1280,8 @@ Int_t AliAnalysisHadEtMonteCarlo::AnalyseEvent(AliVEvent* ev)
                      myEt = Et(daughter);
                      FillHisto2D("EtSimulatedAntiLambdaDaughters",daughter->Pt(),daughter->Eta(),myEt);
                      FillHisto2D("EtSimulatedAntiLambdaDaughtersReweighted",daughter->Pt(),daughter->Eta(),myEt*weight);
-                     //cout<<"AntiLambda daughter is a "<<daughter->GetName()<<endl;
                    }
                  }
-                 else{
-                   //cout<<"AntiLambda daughter is a "<<daughter->GetName()<<endl;
-                 }
                }
              }
              filled = true;
@@ -1022,12 +1307,8 @@ Int_t AliAnalysisHadEtMonteCarlo::AnalyseEvent(AliVEvent* ev)
                      myEt = Et(daughter);
                      FillHisto2D("EtSimulatedK0SDaughters",daughter->Pt(),daughter->Eta(),myEt);
                      FillHisto2D("EtSimulatedK0SDaughtersReweighted",daughter->Pt(),daughter->Eta(),myEt*weight);
-                     //cout<<"K0S daughter is a "<<daughter->GetName()<<endl;
                    }
                  }
-                 else{
-                   //cout<<"K0S daughter is a "<<daughter->GetName()<<endl;
-                 }
                }
              }
              filled = true;
@@ -1060,12 +1341,8 @@ Int_t AliAnalysisHadEtMonteCarlo::AnalyseEvent(AliVEvent* ev)
                    if(daughtercode==fgPiPlusCode || daughtercode==fgProtonCode || daughtercode==fgKMinusCode){
                      myEt = Et(daughter);
                      FillHisto2D("EtSimulatedOmegaDaughters",daughter->Pt(),daughter->Eta(),myEt);
-                   //cout<<"Omega daughter is a "<<daughter->GetName()<<endl;
                    }
                  }
-                 else{
-                   //cout<<"Omega daughter is a "<<daughter->GetName()<<endl;
-                 }
                }
              }
              filled = true;
@@ -1087,12 +1364,8 @@ Int_t AliAnalysisHadEtMonteCarlo::AnalyseEvent(AliVEvent* ev)
                    if(daughtercode==fgPiMinusCode || daughtercode==fgAntiProtonCode || daughtercode==fgKPlusCode){
                      myEt = Et(daughter);
                      FillHisto2D("EtSimulatedAntiOmegaDaughters",daughter->Pt(),daughter->Eta(),myEt);
-                     //cout<<"AntiOmega daughter is a "<<daughter->GetName()<<endl;
                    }
                  }
-                 else{
-                   //cout<<"AntiOmega daughter is a "<<daughter->GetName()<<endl;
-                 }
                }
              }
              filled = true;
@@ -1124,7 +1397,6 @@ Int_t AliAnalysisHadEtMonteCarlo::AnalyseEvent(AliVEvent* ev)
              for(Int_t idaughter = 0;idaughter<ndaughters;idaughter++){
                Int_t daughterindex = part->GetDaughter(idaughter);
                if(daughterindex<0 || daughterindex>1e5 || daughterindex>1e5) continue;
-               //cerr<<"Daughter index "<<daughterindex<<" npart "<<nPrim<<endl;
                TParticle *daughter = stack->ParticleFromTreeK(daughterindex);
                if(daughter){
                  if(daughter->GetPDG(0)){
@@ -1133,12 +1405,8 @@ Int_t AliAnalysisHadEtMonteCarlo::AnalyseEvent(AliVEvent* ev)
                    if(daughtercode==fgPiPlusCode || daughtercode==fgProtonCode || daughtercode==fgPiMinusCode){
                      myEt = Et(daughter);
                      FillHisto2D("EtSimulatedXiDaughters",daughter->Pt(),daughter->Eta(),myEt);
-                   //cout<<"Xi daughter is a "<<daughter->GetName()<<endl;
                    }
                  }
-                 else{
-                   //cout<<"Xi daughter is a "<<daughter->GetName()<<endl;
-                 }
                }
              }
              filled = true;
@@ -1160,12 +1428,8 @@ Int_t AliAnalysisHadEtMonteCarlo::AnalyseEvent(AliVEvent* ev)
                    if(daughtercode==fgPiPlusCode || daughtercode==fgAntiProtonCode || daughtercode==fgPiMinusCode){
                      myEt = Et(daughter);
                      FillHisto2D("EtSimulatedAntiXiDaughters",daughter->Pt(),daughter->Eta(),myEt);
-                     //cout<<"AntiXi daughter is a "<<daughter->GetName()<<endl;
                    }
                  }
-                 else{
-                   //cout<<"AntiXi daughter is a "<<daughter->GetName()<<endl;
-                 }
                }
              }
              filled = true;
@@ -1212,7 +1476,6 @@ Int_t AliAnalysisHadEtMonteCarlo::AnalyseEvent(AliVEvent* ev)
                momEta = mom->Eta();
                mompT = mom->Pt();
              }
-             //cout<<"I am a gamma and my mom is "<<mom->GetName()<<endl;
              //We want to separate the gammas by pi0, eta, omega0 but we don't want to double count energy so we get the et from the gamma daughter
              if(pdgCodeMom == fgEtaCode){
                float myEt = Et(part);
@@ -1257,11 +1520,6 @@ Int_t AliAnalysisHadEtMonteCarlo::AnalyseEvent(AliVEvent* ev)
              FillHisto2D("EtSimulatedOmega0",part->Pt(),part->Eta(),myEt);
              filled = true;
            }
-           if(!filled){
-             //if( strcmp(pc->ParticleClass(),"Baryon")==0 || strcmp(pc->ParticleClass(),"Meson")==0 ){
-             //cout<<"Did not find a place for "<<part->GetName()<<" "<<pdgCode<<" which is a "<<pc->ParticleClass()<<endl;
-               //}
-           }
          }
        }
     }
@@ -1549,6 +1807,10 @@ void AliAnalysisHadEtMonteCarlo::CreateHistograms(){
   CreateEtaPtHisto2D(Form("EtReconstructed%sAntiOmegaDaughters",cutName->Data()),"Reconstructed E_{T} from #Omega^{+} Daughters");
   CreateEtaPtHisto2D(Form("EtReconstructed%sXiDaughters",cutName->Data()),"Reconstructed E_{T} from #Xi^{-} Daughters");
   CreateEtaPtHisto2D(Form("EtReconstructed%sAntiXiDaughters",cutName->Data()),"Reconstructed E_{T} from #Xi^{+} Daughters");
+  CreateEtaPtHisto2D(Form("EtReconstructed%sConversionElectrons",cutName->Data()),"Reconstructed E_{T} from conversion electrons");
+  CreateEtaPtHisto2D(Form("EtReconstructed%sSecondaryMuons",cutName->Data()),"Reconstructed E_{T} from secondary muons");//from pions
+  CreateEtaPtHisto2D(Form("EtReconstructed%sSecondaryPions",cutName->Data()),"Reconstructed E_{T} from secondary pions");//from rescattering and sigma+-
+  CreateEtaPtHisto2D(Form("EtReconstructed%sSecondaryProtons",cutName->Data()),"Reconstructed E_{T} from secondary protons");//from rescattering and sigma+-
 
     CreateIntHisto1D(Form("UnidentifiedPIDs%s",cutName->Data()),"PIDs of unidentified particles", "PID", "Number of particles",9, -4,4);
     CreateHisto2D(Form("MisidentifiedPIDs%s",cutName->Data()),"PIDs of misidentified particles", "PID real","PID identified",5, -.5,4.5,5, -.5,4.5);
@@ -1655,6 +1917,85 @@ void AliAnalysisHadEtMonteCarlo::CreateHistograms(){
   etDiff = 0.15;
 
   if(fInvestigateSmearing){
+    //======================================================================
+
+    snprintf(histoname,200,"SimPiKPEtMeasMinusEtRealPiKP");
+    snprintf(histotitle,200,"Simulated (all reconstructed - primaries)/all reconstructed for reconstructed tracks only");
+    snprintf(ytitle,50,"(primary-all)/primary");
+    snprintf(xtitle,50,"true p, K, p E_{T} for primary tracks");
+    CreateHisto2D(histoname,histotitle,xtitle,ytitle,nbinsEt,minEt,maxEt,nbinsEt,-etDiff*5,etDiff*5);
+
+    snprintf(histoname,200,"SimPiKPEtMinusSimAllCorrSmearedRecoOnly");
+    snprintf(histotitle,200,"Simulated (primary-all)/primary for reconstructed tracks only");
+    snprintf(ytitle,50,"(primary-all)/primary");
+    snprintf(xtitle,50,"true p, K, p E_{T} for primary tracks");
+    CreateHisto2D(histoname,histotitle,xtitle,ytitle,nbinsEt,minEt,maxEt,nbinsEt,-etDiff*5,etDiff*5);
+
+    snprintf(histoname,200,"SimPiKPEtMinusSimEffCorrRecoOnly");
+    snprintf(histotitle,200,"(sim-reco)/sim primary #pi,k,p for p_{T}>0.15");
+    snprintf(ytitle,50,"(sim-reco)/sim");
+    snprintf(xtitle,50,"true p, K, p E_{T} for primary tracks");
+    CreateHisto2D(histoname,histotitle,xtitle,ytitle,nbinsEt,minEt,maxEt,nbinsEt,-etDiff*5,etDiff*5);
+
+    snprintf(histoname,200,"SimPiKPEtMinusSimEffBkgdCorrRecoOnly");
+    snprintf(histotitle,200,"(sim-reco)/sim primary #pi,k,p for p_{T}>0.15 with background subtraction");
+    snprintf(ytitle,50,"(sim-reco)/sim");
+    snprintf(xtitle,50,"true p, K, p E_{T} for primary tracks");
+    CreateHisto2D(histoname,histotitle,xtitle,ytitle,nbinsEt,minEt,maxEt,nbinsEt,-etDiff*5,etDiff*5);
+
+    snprintf(histoname,200,"SimPiKPEtMinusSimEffCorrRecoPiOnly");
+    snprintf(histotitle,200,"(sim-reco)/sim primary #pi for p_{T}>0.15");
+    snprintf(ytitle,50,"(sim-reco)/sim");
+    snprintf(xtitle,50,"true #pi E_{T} for primary tracks");
+    CreateHisto2D(histoname,histotitle,xtitle,ytitle,nbinsEt,minEt,maxEt/2,nbinsEt,-etDiff*5,etDiff*5);
+
+    snprintf(histoname,200,"SimPiKPEtMinusSimEffCorrRecoKOnly");
+    snprintf(histotitle,200,"(sim-reco)/sim primary K for p_{T}>0.15");
+    snprintf(ytitle,50,"(sim-reco)/sim");
+    snprintf(xtitle,50,"true K E_{T} for primary tracks");
+    CreateHisto2D(histoname,histotitle,xtitle,ytitle,nbinsEt,minEt,maxEt/6,nbinsEt,-etDiff*5,etDiff*5);
+
+    snprintf(histoname,200,"SimPiKPEtMinusSimEffCorrRecoPOnly");
+    snprintf(histotitle,200,"(sim-reco)/sim primary p for p_{T}>0.15");
+    snprintf(ytitle,50,"(sim-reco)/sim");
+    snprintf(xtitle,50,"true p E_{T} for primary tracks");
+    CreateHisto2D(histoname,histotitle,xtitle,ytitle,nbinsEt,minEt,maxEt/6,nbinsEt,-etDiff*5,etDiff*5);
+
+    snprintf(histoname,200,"SimPiKPEtMinusSimAllSmearedRecoOnly");
+    snprintf(histotitle,200,"Simulated (primary-all)/primary for reconstructed tracks only");
+    snprintf(ytitle,50,"(primary-all)/primary");
+    snprintf(xtitle,50,"true p, K, p E_{T} for primary tracks");
+    CreateHisto2D(histoname,histotitle,xtitle,ytitle,nbinsEt,minEt,maxEt,nbinsEt,-etDiff*5,0.0);
+
+    snprintf(histoname,200,"SimPiKPEtMinusSimPIDSmearedRecoOnly");
+    snprintf(histotitle,200,"Simulated (true-smeared)/true for reconstructed tracks only with PID smearing");
+    snprintf(ytitle,50,"(true-smeared)/true");
+    snprintf(xtitle,50,"true p, K, p E_{T}");
+    CreateHisto2D(histoname,histotitle,xtitle,ytitle,nbinsEt,minEt,maxEt,nbinsEt,-etDiff,etDiff);
+
+    snprintf(histoname,200,"SimPiKPEtMinusSimSmearedRecoOnly");
+    snprintf(histotitle,200,"Simulated (true-smeared)/true for reconstructed tracks only");
+    snprintf(ytitle,50,"(true-smeared)/true");
+    snprintf(xtitle,50,"true p, K, p E_{T}");
+    CreateHisto2D(histoname,histotitle,xtitle,ytitle,nbinsEt,minEt,maxEt,nbinsEt,-etDiff/15,etDiff/15);
+
+    snprintf(histoname,200,"SimPiKPPtMinusSimSmearedRecoOnly");
+    snprintf(histotitle,200,"Simulated (true-smeared)/true for reconstructed tracks only");
+    snprintf(ytitle,50,"(true-smeared)/true");
+    snprintf(xtitle,50,"true p, K, p p_{T}");
+    CreateHisto2D(histoname,histotitle,xtitle,ytitle,nbinsEt,minEt,maxEt,nbinsEt,-etDiff/15,etDiff/15);
+
+    snprintf(histoname,200,"SimPiKPEtMinusSimSmearedMultRecoOnly");
+    snprintf(histotitle,200,"Simulated (true-smeared)/true for reconstructed tracks only");
+    snprintf(ytitle,50,"(true-smeared)/true");
+    snprintf(xtitle,50,"number of reconstructed particles");
+    CreateHisto2D(histoname,histotitle,xtitle,ytitle,nbinsEt,minEt,maxEt,nbinsEt,-etDiff/15,etDiff/15);
+
+    snprintf(histoname,200,"SimPiKPPtMinusSimSmearedMultRecoOnly");
+    snprintf(histotitle,200,"Simulated (true-smeared)/true for reconstructed tracks only");
+    snprintf(ytitle,50,"(true-smeared)/true");
+    snprintf(xtitle,50,"number of reconstructed particles");
+    CreateHisto2D(histoname,histotitle,xtitle,ytitle,nbinsEt,minEt,maxEt,nbinsEt,-etDiff/15,etDiff/15);
 
     //======================================================================
 
index 0797eb8db0b6b6e32ab9e3e1960b570941484e22..5d00326590418d60271323bdeafc8c6bdd74d88a 100644 (file)
@@ -12,6 +12,7 @@
 #include "AliAnalysisHadEt.h"
 class AliVEvent;
 class TRandom;
+class AliAnalysisHadEtReconstructed;
 
 class AliAnalysisHadEtMonteCarlo : public AliAnalysisHadEt
 {
@@ -114,6 +115,7 @@ public:
     Bool_t PiKP() const {return fInvestigatePiKP;}
     Bool_t BaryonEnhancement() const {return fBaryonEnhancement;}
     Bool_t ReconstructedPt() const {return fUseRecoPt;}
+    void SetHadEtReconstructed(AliAnalysisHadEtReconstructed *reco){fHadEtReco = reco;}
 
  protected:
 
@@ -125,6 +127,10 @@ public:
     Float_t fSimPiKPEt;//simulated Et for pi,k,p event by event
     Float_t fSimHadEt;//simulated Et event by event
     Float_t fSimTotEt;//total et event by event
+    Float_t fSimPiKPEtShouldBeReco;//simulated Et for pi,k,p event by event
+    Float_t fSimPiKPEtShouldBeRecoPi;//simulated Et for pi event by event
+    Float_t fSimPiKPEtShouldBeRecoK;//simulated Et for k event by event
+    Float_t fSimPiKPEtShouldBeRecoP;//simulated Et for p event by event
 
     Bool_t fInvestigateSmearing;//Turns on and off functions and histos for investigating momentum, efficiency, pid smearing
     Bool_t fInvestigateFull;//Turns on and off functions and histos for investigating event-by-event et for the full acceptance
@@ -141,6 +147,7 @@ public:
     static Float_t fgSmearWidths[4];//array with widths for smearing with different momentum resultions
     static Int_t fgNumSmearWidths;//number of entries in the array above
     TRandom *fPtSmearer;//a TRandom used for investigating momentum smearing
+    AliAnalysisHadEtReconstructed *fHadEtReco;//corresponding class for data reconstruction.  Used to access corrections directly used here.
 
     ClassDef(AliAnalysisHadEtMonteCarlo, 1);
 };
index 2a5e211b38072587764203f2f9f4840e2ded8abf..f346f7707f50f664d22bc8914c35ebf23888ed58 100644 (file)
@@ -121,7 +121,6 @@ Int_t AliAnalysisHadEtReconstructed::AnalyseEvent(AliVEvent* ev)
     TObjArray* list = NULL;
     switch(cutset){
     case 0:
-      //cout<<"Using ITS+TPC tracks"<<endl;
       cutName = strTPCITS;
       list = fEsdtrackCutsITSTPC->GetAcceptedTracks(realEvent);
       isTPC = true;
@@ -152,6 +151,8 @@ Int_t AliAnalysisHadEtReconstructed::AnalyseEvent(AliVEvent* ev)
        else{
          if(TMath::Abs(track->Eta())>fCorrections->GetEtaCut()) continue;
          Float_t nSigmaPion,nSigmaProton,nSigmaKaon,nSigmaElectron;
+         pID->MakeTPCPID(track);
+         pID->MakeITSPID(track);
          if(cutset!=1){
            nSigmaPion = TMath::Abs(pID->NumberOfSigmasTPC(track,AliPID::kPion));
            nSigmaProton = TMath::Abs(pID->NumberOfSigmasTPC(track,AliPID::kProton));
@@ -174,6 +175,13 @@ Int_t AliAnalysisHadEtReconstructed::AnalyseEvent(AliVEvent* ev)
          bool isProton = (nSigmaPion>3.0 && nSigmaProton<3.0 && nSigmaKaon>3.0 && track->Pt()<0.9);
 
          bool unidentified = (!isProton && !isKaon && !isElectron && !isPion);
+         if(cutset==1){//ITS dE/dx identification requires tighter cuts on the tracks and we don't gain much from that so we won't do it
+           unidentified = true;
+           isPion=false;
+           isElectron=false;
+           isKaon=false;
+           isProton=false;
+         }
          Float_t dEdx = track->GetTPCsignal();
          if(cutset==1) dEdx = track->GetITSsignal();
          FillHisto2D(Form("dEdxDataAll%s",cutName->Data()),track->P(),dEdx,1.0);
@@ -183,10 +191,10 @@ Int_t AliAnalysisHadEtReconstructed::AnalyseEvent(AliVEvent* ev)
 
          Float_t corrBkgd=0.0;
          Float_t corrNotID=0.0;
-         Float_t corrNoID=0.0;// = fCorrections->GetNotIDCorrectionNoPID(track->Pt());
+         Float_t corrNoID = fCorrections->GetNotIDCorrectionNoPID(track->Pt());
          Float_t corrEff = 0.0;
          Float_t corrEffNoID = 0.0;
-         if(cutset==0){//TPC
+         if(cutset!=1){//TPC
            corrBkgd = fCorrections->GetBackgroundCorrectionTPC(track->Pt());
            corrEffNoID = fCorrections->GetTPCEfficiencyCorrectionHadron(track->Pt(),fCentBin);
            corrNotID = fCorrections->GetNotIDConstCorrectionTPC();
@@ -198,11 +206,13 @@ Int_t AliAnalysisHadEtReconstructed::AnalyseEvent(AliVEvent* ev)
            corrNotID = fCorrections->GetNotIDConstCorrectionITS();
            corrNoID = fCorrections->GetNotIDConstCorrectionITSNoID();
          }
-         FillHisto2D("fbkgdVsCentralityBin",fCentBin,corrBkgd,1.0);
-         FillHisto2D("fnotIDVsCentralityBin",fCentBin,corrNotID,1.0);
-         FillHisto2D("fpTcutVsCentralityBin",fCentBin,fCorrections->GetpTCutCorrectionTPC(),1.0);
-         if(fCorrHadEtFullAcceptanceTPC>0.0) FillHisto2D("fneutralVsCentralityBin",fCentBin,1.0/fCorrHadEtFullAcceptanceTPC,1.0);
-         if(fCorrections->GetNeutralCorrection()>0.0) FillHisto2D("ConstantCorrectionsVsCentralityBin",fCentBin,1.0/fCorrections->GetNeutralCorrection(),1.0);
+         if(fDataSet==20100){
+           FillHisto2D("fbkgdVsCentralityBin",fCentBin,corrBkgd,1.0);
+           FillHisto2D("fnotIDVsCentralityBin",fCentBin,corrNotID,1.0);
+           FillHisto2D("fpTcutVsCentralityBin",fCentBin,fCorrections->GetpTCutCorrectionTPC(),1.0);
+           if(fCorrHadEtFullAcceptanceTPC>0.0) FillHisto2D("fneutralVsCentralityBin",fCentBin,1.0/fCorrHadEtFullAcceptanceTPC,1.0);
+           if(fCorrections->GetNeutralCorrection()>0.0) FillHisto2D("ConstantCorrectionsVsCentralityBin",fCentBin,1.0/fCorrections->GetNeutralCorrection(),1.0);
+         }
          Float_t et = 0.0;
          Float_t etNoID = Et(track->P(),track->Theta(),fgPiPlusCode,track->Charge());
          Float_t etpartialcorrected = 0.0;
@@ -215,11 +225,9 @@ Int_t AliAnalysisHadEtReconstructed::AnalyseEvent(AliVEvent* ev)
          if(isPion){
            FillHisto2D(Form("dEdxDataPion%s",cutName->Data()),track->P(),dEdx,1.0);
            et = Et(track->P(),track->Theta(),fgPiPlusCode,track->Charge());
-           if(cutset==0){corrEff = fCorrections->GetTPCEfficiencyCorrectionPion(track->Pt(),fCentBin);}
-           //else{corrEff = fCorrections->GetITSEfficiencyCorrectionPion(track->Pt());}
+           if(cutset==0){corrEff = fCorrections->GetTPCEfficiencyCorrectionPion(track->Pt(),fCentBin);}
            etpartialcorrected = et*corrBkgd*corrEff*corrNotID;
-           //cout<<"et partial corrected pion = "<<et<<" "<<corrBkgd<<" "<<corrEff<<" "<<corrNotID<<endl;
-           if(corrEff>0.0)FillHisto2D("feffPionVsCentralityBin",fCentBin,1.0/corrEff,1.0);
+           if(corrEff>0.0&&fDataSet==20100)FillHisto2D("feffPionVsCentralityBin",fCentBin,1.0/corrEff,1.0);
            if(track->Charge()>0.0){
              FillHisto2D(Form("EtDataRaw%sPiPlus",cutName->Data()),track->Pt(),track->Eta(),et);
              FillHisto2D(Form("EtDataCorrected%sPiPlus",cutName->Data()),track->Pt(),track->Eta(),etpartialcorrected);
@@ -233,10 +241,8 @@ Int_t AliAnalysisHadEtReconstructed::AnalyseEvent(AliVEvent* ev)
            FillHisto2D(Form("dEdxDataKaon%s",cutName->Data()),track->P(),dEdx,1.0);
            et = Et(track->P(),track->Theta(),fgKPlusCode,track->Charge());
            if(cutset==0){corrEff = fCorrections->GetTPCEfficiencyCorrectionKaon(track->Pt(),fCentBin);}
-           //else{corrEff = fCorrections->GetITSEfficiencyCorrectionKaon(track->Pt(),fCentBin);}
            etpartialcorrected = et*corrBkgd*corrEff*corrNotID;
-           //cout<<"et partial corrected kaon = "<<et<<" "<<corrBkgd<<" "<<corrEff<<" "<<corrNotID<<endl;
-           if(corrEff>0.0)FillHisto2D("feffKaonVsCentralityBin",fCentBin,1.0/corrEff,1.0);
+           if(corrEff>0.0&&fDataSet==20100)FillHisto2D("feffKaonVsCentralityBin",fCentBin,1.0/corrEff,1.0);
              
            if(track->Charge()>0.0){
              FillHisto2D(Form("EtDataRaw%sKPlus",cutName->Data()),track->Pt(),track->Eta(),et);
@@ -251,10 +257,8 @@ Int_t AliAnalysisHadEtReconstructed::AnalyseEvent(AliVEvent* ev)
            FillHisto2D(Form("dEdxDataProton%s",cutName->Data()),track->P(),dEdx,1.0);
            et = Et(track->P(),track->Theta(),fgProtonCode,track->Charge());
            if(cutset==0){corrEff = fCorrections->GetTPCEfficiencyCorrectionProton(track->Pt(),fCentBin);}
-           //else{corrEff = fCorrections->GetITSEfficiencyCorrectionProton(track->Pt());}
            etpartialcorrected = et*corrBkgd*corrEff*corrNotID;
-           //cout<<"et partial corrected proton = "<<et<<" "<<corrBkgd<<" "<<corrEff<<" "<<corrNotID<<endl;
-           if(corrEff>0.0)FillHisto2D("feffProtonVsCentralityBin",fCentBin,1.0/corrEff,1.0);
+           if(corrEff>0.0&&fDataSet==20100)FillHisto2D("feffProtonVsCentralityBin",fCentBin,1.0/corrEff,1.0);
              
            if(track->Charge()>0.0){
              FillHisto2D(Form("EtDataRaw%sProton",cutName->Data()),track->Pt(),track->Eta(),et);
@@ -267,21 +271,18 @@ Int_t AliAnalysisHadEtReconstructed::AnalyseEvent(AliVEvent* ev)
          }
          if(isElectron){
            FillHisto2D(Form("dEdxDataProton%s",cutName->Data()),track->P(),dEdx,1.0);
-           //et = Et(track->P(),track->Theta(),fgPiPlusCode,track->Charge());
          }
          if(unidentified){
-           //if(!isPion) 
+           if(isPion) cerr<<"I should not be here!!  AliAnalysisHadEtReconstructed 273"<<endl; 
            FillHisto2D(Form("dEdxDataUnidentified%s",cutName->Data()),track->P(),dEdx,1.0);
            et = Et(track->P(),track->Theta(),fgPiPlusCode,track->Charge());
            Float_t etProton = Et(track->P(),track->Theta(),fgProtonCode,track->Charge());
            Float_t etKaon = Et(track->P(),track->Theta(),fgKPlusCode,track->Charge());
-           //cout<<"et partial corrected unidentified = "<<et<<" "<<corrBkgd<<" "<<corrEffNoID<<" "<<corrNotID<<endl;
-           if(corrEff>0.0)FillHisto2D("feffHadronVsCentralityBin",fCentBin,1.0/corrEff,1.0);
+           if(corrEff>0.0&&fDataSet==20100)FillHisto2D("feffHadronVsCentralityBin",fCentBin,1.0/corrEff,1.0);
            etpartialcorrected = et*corrBkgd*corrEffNoID*corrNotID;
            etpartialcorrectedPion = et*corrBkgd*corrEffNoID;
            etpartialcorrectedProton = etProton*corrBkgd*corrEffNoID;
            etpartialcorrectedKaon = etKaon*corrBkgd*corrEffNoID;
-           //if(!isPion) 
            FillHisto2D(Form("EtDataCorrected%sUnidentified",cutName->Data()),track->Pt(),track->Eta(),etpartialcorrected);
          }
          else{
@@ -352,6 +353,7 @@ Int_t AliAnalysisHadEtReconstructed::AnalyseEvent(AliVEvent* ev)
   delete strTPC;
   delete strITS;
   delete strTPCITS;
+  // cout<<"Reconstructed pi/k/p et "<<GetCorrectedPiKPEtFullAcceptanceTPC()<<endl;
   return 1;
 }
 void AliAnalysisHadEtReconstructed::AddEt(Float_t rawEt, Float_t rawEtNoPID, Float_t corrEt, Float_t corrEtPion, Float_t corrEtProton, Float_t corrEtKaon, Float_t corrEtNoPID, Float_t pt, Bool_t IsTPC, Bool_t InPHOS, Bool_t InEMCAL) {//Adding Et to each of the variables that tracks et event by event
@@ -364,7 +366,7 @@ void AliAnalysisHadEtReconstructed::AddEt(Float_t rawEt, Float_t rawEtNoPID, Flo
     if(InPHOS)fRawEtPHOSAcceptanceTPCNoPID += rawEtNoPID;
     if(InEMCAL)fRawEtEMCALAcceptanceTPCNoPID += rawEtNoPID;
     //adding to the corrected Et
-    fCorrectedHadEtFullAcceptanceTPC += corrEt;
+    fCorrectedHadEtFullAcceptanceTPC += corrEt;//the pi/k/p et
     fCorrectedHadEtFullAcceptanceTPCAssumingPion += corrEtPion;
     fCorrectedHadEtFullAcceptanceTPCAssumingProton += corrEtProton;
     fCorrectedHadEtFullAcceptanceTPCAssumingKaon += corrEtKaon;
index 3bb7d071ccdad51c393bbc6e33f663a78440b2f0..210fb8ff9d15dca4531944381591c0cbf7ee8795 100644 (file)
@@ -74,6 +74,7 @@ public:
     Float_t GetCorrectedPiKPEtFullAcceptanceTPCNoPID() const {return fCorrectedHadEtFullAcceptanceTPCNoPID;}
     Float_t GetCorrectedPiKPEtFullAcceptanceITSNoPID() const {return fCorrectedHadEtFullAcceptanceITSNoPID+fCorrectedHadEtFullAcceptanceTPCNoPID;}
     void SetCorrections(AliAnalysisHadEtCorrections *corr){fCorrections = corr;}
+    AliAnalysisHadEtCorrections *GetCorrections(){return fCorrections;}
 
     void CreateHistograms();
      virtual void Init();
index 9d85a1fd50c3ca2ca72ec3de2fed490249680cc4..9d085cd79c1591d38dfbad4fd5f25cbc8670bf87 100644 (file)
@@ -45,17 +45,19 @@ AliAnalysisTaskHadEt::AliAnalysisTaskHadEt(const char *name, Bool_t isMc) :
   if(fMCAnalysis) delete fMCAnalysis;
   if(fRecAnalysis) delete fRecAnalysis;
 
+  if (fRecoConfigFile.Length()) {
+    cout<<"Rereading AliAnalysisHadEtReconstructed configuration file..."<<endl;
+    gROOT->LoadMacro(fRecoConfigFile);
+    fRecAnalysis = (AliAnalysisHadEtReconstructed *) gInterpreter->ProcessLine("ConfigHadEtReconstructed()");
+  }
+
   if (fMCConfigFile.Length()) {
     cout<<"Rereading AliAnalysisHadEtMonteCarlo configuration file..."<<endl;
     gROOT->LoadMacro(fMCConfigFile);
     fMCAnalysis = (AliAnalysisHadEtMonteCarlo *) gInterpreter->ProcessLine("ConfigHadEtMonteCarlo()");
+    fMCAnalysis->SetHadEtReconstructed(fRecAnalysis);
   }
 
-  if (fRecoConfigFile.Length()) {
-    cout<<"Rereading AliAnalysisHadEtReconstructed configuration file..."<<endl;
-    gROOT->LoadMacro(fRecoConfigFile);
-    fRecAnalysis = (AliAnalysisHadEtReconstructed *) gInterpreter->ProcessLine("ConfigHadEtReconstructed()");
-  }
 
     // Define input and output slots here
     // Input slot #0 works with a TChain
@@ -100,8 +102,8 @@ void AliAnalysisTaskHadEt::UserCreateOutputObjects()
     fEsdtrackCutsITS =  AliESDtrackCuts::GetStandardITSPureSATrackCuts2009(kTRUE,kFALSE);//we do want primaries but we do not want to require PID info
     fEsdtrackCutsITS->SetName("fEsdTrackCutsITS");
   }
-  if(fRecAnalysis->DataSet()==2010 || fRecAnalysis->DataSet()==20100){
-    cout<<"Setting track cuts for the 2010 p+p collisions at 7 GeV"<<endl;
+  if(fRecAnalysis->DataSet()==2010){
+    cout<<"Setting track cuts for the 2010 p+p collisions at 7 TeV"<<endl;
     //cout<<"Warning:  Have not set 2010 track cuts yet!!"<<endl;
     fEsdtrackCutsITSTPC = AliESDtrackCuts::GetStandardITSTPCTrackCuts2010(selectPrimaries);
     fEsdtrackCutsITSTPC->SetName("fEsdTrackCuts");
@@ -111,6 +113,17 @@ void AliAnalysisTaskHadEt::UserCreateOutputObjects()
     fEsdtrackCutsITS =  AliESDtrackCuts::GetStandardITSPureSATrackCuts2010(kTRUE,kFALSE);//we do want primaries but we do not want to require PID info
     fEsdtrackCutsITS->SetName("fEsdTrackCutsITS");
   }
+  if(fRecAnalysis->DataSet()==20100){
+    cout<<"Setting track cuts for the 2010 Pb+Pb collisions at 2.76 TeV"<<endl;
+    //cout<<"Warning:  Have not set 2010 track cuts yet!!"<<endl;
+    fEsdtrackCutsITSTPC = AliESDtrackCuts::GetStandardITSTPCTrackCuts2010(selectPrimaries);
+    fEsdtrackCutsITSTPC->SetName("fEsdTrackCuts");
+    fEsdtrackCutsTPC = AliESDtrackCuts::GetStandardTPCOnlyTrackCuts();
+    fEsdtrackCutsTPC->SetName("fEsdTrackCutsTPCOnly");
+    //ITS stand alone cuts - similar to 2009 cuts but with only ITS hits required
+    fEsdtrackCutsITS =  AliESDtrackCuts::GetStandardITSSATrackCutsPbPb2010(kTRUE,kFALSE);//we do want primaries but we do not want to require PID info
+    fEsdtrackCutsITS->SetName("fEsdTrackCutsITS");
+  }
 
   fOutputList->Add(fEsdtrackCutsITSTPC);
   fOutputList->Add(fEsdtrackCutsTPC);
@@ -145,7 +158,8 @@ AliCentrality *cent = GetCentralityObject();
 
 if(res == 0 && cent){
   
-  
+  //cout<<"New Event"<<endl;  
+
   fRecAnalysis->AnalyseEvent(fESDEvent);
 
   AliMCEvent* mcEvent = MCEvent();
@@ -192,6 +206,7 @@ if(res == 0 && cent){
       }
     }
   }
+//cout<<"End Event"<<endl<<endl;
 // Post output data.
 PostData(1, fOutputList);
 }