]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWGJE/EMCALJetTasks/UserTasks/AliAnalysisTaskEmcalQGTagging.cxx
Include binning component in the global analysis framework
[u/mrichter/AliRoot.git] / PWGJE / EMCALJetTasks / UserTasks / AliAnalysisTaskEmcalQGTagging.cxx
index 1c2d886dbd3d7c0b25be241ea2afc7f8f257365c..dbf75909b8a0b96a88b38225cfede92b47c8567a 100644 (file)
 #include "AliAnalysisManager.h"
 #include "AliJetContainer.h"
 #include "AliParticleContainer.h"
-#include "AliStackPartonInfo.h"
+#include "AliPythiaInfo.h"
 
 
 #include "AliAODEvent.h"
 
 #include "AliAnalysisTaskEmcalQGTagging.h"
 
+using std::cout;
+using std::endl;
+
 ClassImp(AliAnalysisTaskEmcalQGTagging)
 
 //________________________________________________________________________
@@ -49,13 +52,13 @@ AliAnalysisTaskEmcalQGTagging::AliAnalysisTaskEmcalQGTagging() :
   AliAnalysisTaskEmcalJet("AliAnalysisTaskEmcalQGTagging", kTRUE),
   fContainer(0),
   fMinFractionShared(0),
-  fJetShapeType(kRaw),
+  fJetShapeType(kData),
+  fJetShapeSub(kNoSub),
   fShapesVar(0),
-  fIsMC(kFALSE),
-  fIsEmbedding(kFALSE),
-  fIsConstSub(kFALSE),
   fPtThreshold(-9999.),
   fRMatching(0.3),
+  fh2ResponseUW(0x0),
+  fh2ResponseW(0x0), 
   fPhiJetCorr6(0x0), 
   fPhiJetCorr7(0x0),
   fEtaJetCorr6(0x0),
@@ -73,13 +76,13 @@ AliAnalysisTaskEmcalQGTagging::AliAnalysisTaskEmcalQGTagging(const char *name) :
   AliAnalysisTaskEmcalJet(name, kTRUE),
   fContainer(0),
   fMinFractionShared(0),
-  fJetShapeType(kRaw),
+  fJetShapeType(kData),
+  fJetShapeSub(kNoSub),
   fShapesVar(0),
-  fIsMC(kFALSE),
-  fIsEmbedding(kFALSE),
-  fIsConstSub(kFALSE),
   fPtThreshold(-9999.),
   fRMatching(0.3),
+  fh2ResponseUW(0x0),
+  fh2ResponseW(0x0),
   fPhiJetCorr6(0x0), 
   fPhiJetCorr7(0x0),
   fEtaJetCorr6(0x0),
@@ -114,7 +117,7 @@ AliAnalysisTaskEmcalQGTagging::~AliAnalysisTaskEmcalQGTagging()
   TH1::AddDirectory(kFALSE);
 
   fTreeObservableTagging = new TTree("fTreeJetShape", "fTreeJetShape");
-  Int_t nVar = 9
+  Int_t nVar = 18
   fShapesVar = new Float_t [nVar]; 
   TString *fShapesVarNames = new TString [nVar];
 
@@ -127,7 +130,17 @@ AliAnalysisTaskEmcalQGTagging::~AliAnalysisTaskEmcalQGTagging()
   fShapesVarNames[6] = "circularity";
   fShapesVarNames[7] = "lesub";
   fShapesVarNames[8] = "sigma2";
-  
+
+  fShapesVarNames[9] = "ptJetMatch"; 
+  fShapesVarNames[10] = "ptDJetMatch"; 
+  fShapesVarNames[11] = "mJetMatch";
+  fShapesVarNames[12] = "nbOfConstMatch";
+  fShapesVarNames[13] = "angularityMatch";
+  fShapesVarNames[14] = "circularityMatch";
+  fShapesVarNames[15] = "lesubMatch";
+  fShapesVarNames[16] = "sigma2Match";
+  fShapesVarNames[17]="weightPythia";
+
   for(Int_t ivar=0; ivar < nVar; ivar++){
     cout<<"looping over variables"<<endl;
     fTreeObservableTagging->Branch(fShapesVarNames[ivar].Data(), &fShapesVar[ivar], Form("%s/F", fShapesVarNames[ivar].Data()));
@@ -135,7 +148,11 @@ AliAnalysisTaskEmcalQGTagging::~AliAnalysisTaskEmcalQGTagging()
     //if( ivar == 4 )  fTreeObservableTagging->Branch(fShapesVarNames[ivar].Data(), &fShapesVar[ivar], Form("%s/I", fShapesVarNames[ivar].Data()));
 
   }
-  
+
+  fh2ResponseUW= new TH2F("fh2ResponseUW", "fh2ResponseUW", 100, 0, 200,  100, 0, 200); 
+  fOutput->Add(fh2ResponseUW);
+   fh2ResponseW= new TH2F("fh2ResponseW", "fh2ResponseW", 100, 0, 200,  100, 0, 200); 
+   fOutput->Add(fh2ResponseW);
   fPhiJetCorr6= new TH2F("fPhiJetCorr6", "fPhiJetCorr6", 50, 0, 2*TMath::Pi(), 50, 0, 2*TMath::Pi());
   fOutput->Add(fPhiJetCorr6);
   fEtaJetCorr6= new TH2F("fEtaJetCorr6", "fEtaJetCorr6", 50, -1.5, 1.5, 50, -1.5, 1.5);
@@ -173,37 +190,45 @@ Bool_t AliAnalysisTaskEmcalQGTagging::FillHistograms()
   //cout<<"base container"<<endl;
   AliEmcalJet* jet1 = NULL;
   AliJetContainer *jetCont = GetJetContainer(0);
-  
+  Float_t kWeight=1;
+  if(fCent>10) return 0;
   if(jetCont) {
     jetCont->ResetCurrentID();
     while((jet1 = jetCont->GetNextAcceptJet())) {
       if (!jet1) continue;
+      AliEmcalJet* jet2 = 0x0;
       fPtJet->Fill(jet1->Pt());
-      if (fIsMC) {
-       AliStackPartonInfo *partonsInfo = 0x0;
-       AliEmcalJet* jet2 = 0x0;
-       if (fIsEmbedding){ 
+
+      if (!(fJetShapeType == kData)) {
+       AliPythiaInfo *partonsInfo = 0x0;
+       if((fJetShapeType == kTrueDet) || (fJetShapeType == kDetEmb)){
          AliJetContainer *jetContTrue = GetJetContainer(1);
          jet2 = jet1->ClosestJet();
          if (!jet2) {
            Printf("jet2 not exists, returning");
            continue;
          }
-         
+          fh2ResponseUW->Fill(jet1->Pt(),jet2->Pt());    
+
+
          Double_t fraction = jetCont->GetFractionSharedPt(jet1);
+          cout<<"hey a jet"<<fraction<<" "<<jet1->Pt()<<" "<<jet2->Pt()<<" "<<fCent<<endl;
+          
          if(fraction<fMinFractionShared) continue;
-         partonsInfo = (AliStackPartonInfo*) jetContTrue->GetStackPartonInfo();     
+         partonsInfo = (AliPythiaInfo*) jetContTrue->GetPythiaInfo();     
          if(!partonsInfo) return 0;
+          
        }
        else {
-         partonsInfo = (AliStackPartonInfo*) jetCont->GetStackPartonInfo(); 
+         partonsInfo = (AliPythiaInfo*) jetCont->GetPythiaInfo(); 
          jet2=jet1;
           if(!partonsInfo) return 0;
        }
        
        Double_t jp1=(jet2->Phi())-(partonsInfo->GetPartonPhi6()); 
        Double_t detap1=(jet2->Eta())-(partonsInfo->GetPartonEta6());
-       
+       kWeight=partonsInfo->GetPythiaEventWeight();
+        fh2ResponseW->Fill(jet1->Pt(),jet2->Pt(),kWeight);
        if (jp1< -1*TMath::Pi()) jp1 = (-2*TMath::Pi())-jp1;
        else if (jp1 > TMath::Pi()) jp1 = (2*TMath::Pi())-jp1;
        Float_t dRp1 = TMath::Sqrt(jp1 * jp1 + detap1 * detap1);
@@ -233,20 +258,59 @@ Bool_t AliAnalysisTaskEmcalQGTagging::FillHistograms()
      
       Double_t ptSubtracted = 0; 
 
-      if ((fJetShapeType==AliAnalysisTaskEmcalQGTagging::kRaw && fIsConstSub==kFALSE) || (fJetShapeType==AliAnalysisTaskEmcalQGTagging::kDeriv)) ptSubtracted  = jet1->Pt() - GetRhoVal(0)*jet1->Area();
-      else ptSubtracted = jet1->Pt(); 
-
-      if ((fJetShapeType==AliAnalysisTaskEmcalQGTagging::kRaw || fJetShapeType==AliAnalysisTaskEmcalQGTagging::kDeriv)) 
-       if ( ptSubtracted < fPtThreshold) continue;
-
+      if (((fJetShapeType == kData) || (fJetShapeType == kDetEmb)) && (fJetShapeSub == kConstSub))
+         ptSubtracted = jet1->Pt(); 
+      else ptSubtracted  = jet1->Pt() - GetRhoVal(0)*jet1->Area();
+         
+      if ((fJetShapeType == kData || fJetShapeType== kDetEmb)) 
+       if ( ptSubtracted < fPtThreshold) continue;     
+      
       fShapesVar[1] = ptSubtracted;
-      fShapesVar[2] = GetJetpTD(jet1);
-      fShapesVar[3] = GetJetMass(jet1);
-      fShapesVar[4] = 1.*GetJetNumberOfConstituents(jet1);
-      fShapesVar[5] = GetJetAngularity(jet1);
-      fShapesVar[6] = GetJetCircularity(jet1);
-      fShapesVar[7] = GetJetLeSub(jet1);
-      fShapesVar[8] = GetSigma2(jet1);
+      fShapesVar[2] = GetJetpTD(jet1,0);
+      fShapesVar[3] = GetJetMass(jet1,0);
+      fShapesVar[4] = 1.*GetJetNumberOfConstituents(jet1,0);
+      fShapesVar[5] = GetJetAngularity(jet1,0);
+      fShapesVar[6] = GetJetCircularity(jet1,0);
+      fShapesVar[7] = GetJetLeSub(jet1,0);
+      fShapesVar[8] = GetSigma2(jet1,0);
+      
+      Float_t ptMatch=0., ptDMatch=0., massMatch=0., constMatch=0.,angulMatch=0.,circMatch=0., lesubMatch=0., sigma2Match=0.;
+      Int_t kMatched = 0;
+      if (fJetShapeType == kTrueDet || fJetShapeType == kDetEmb) {
+       kMatched = 1;
+       ptMatch=jet2->Pt();
+       ptDMatch=GetJetpTD(jet2, kMatched); 
+       massMatch=GetJetMass(jet2,kMatched);
+       constMatch=1.*GetJetNumberOfConstituents(jet2,kMatched);
+       angulMatch=GetJetAngularity(jet2, kMatched);
+       circMatch=GetJetCircularity(jet2, kMatched);
+       lesubMatch=GetJetLeSub(jet2, kMatched);
+       sigma2Match = GetSigma2(jet2, kMatched);
+        
+      }
+
+      if (fJetShapeType == kTrue || fJetShapeType == kData) {
+       kMatched = 0;
+       ptMatch=0.;
+       ptDMatch=0.; 
+       massMatch=0.;
+       constMatch=0.;
+       angulMatch=0.;
+       circMatch=0.;
+       lesubMatch=0.;
+       sigma2Match =0.;
+      
+      }
+      
+      fShapesVar[9] = ptMatch;
+      fShapesVar[10] = ptDMatch;
+      fShapesVar[11] = massMatch;
+      fShapesVar[12] = constMatch;
+      fShapesVar[13] = angulMatch;
+      fShapesVar[14] = circMatch;
+      fShapesVar[15] = lesubMatch;
+      fShapesVar[16] = sigma2Match;
+      fShapesVar[17] = kWeight;
       fTreeObservableTagging->Fill();
        
     }
@@ -257,18 +321,18 @@ Bool_t AliAnalysisTaskEmcalQGTagging::FillHistograms()
 }
 
 //________________________________________________________________________
-Float_t AliAnalysisTaskEmcalQGTagging::GetJetMass(AliEmcalJet *jet) {
+Float_t AliAnalysisTaskEmcalQGTagging::GetJetMass(AliEmcalJet *jet,Int_t jetContNb=0) {
   //calc subtracted jet mass
-  if(fJetShapeType==kDeriv)
+  if((fJetShapeSub==kDerivSub)&&(jetContNb==0))
     return jet->GetSecondOrderSubtracted();
   else 
     return jet->M();
 }
 
 //________________________________________________________________________
-Float_t AliAnalysisTaskEmcalQGTagging::Angularity(AliEmcalJet *jet){
+Float_t AliAnalysisTaskEmcalQGTagging::Angularity(AliEmcalJet *jet, Int_t jetContNb = 0){
 
-  AliJetContainer *jetCont = GetJetContainer(0);
+  AliJetContainer *jetCont = GetJetContainer(jetContNb);
   if (!jet->GetNumberOfTracks())
       return 0; 
     Double_t den=0.;
@@ -288,20 +352,20 @@ Float_t AliAnalysisTaskEmcalQGTagging::Angularity(AliEmcalJet *jet){
 } 
 
 //________________________________________________________________________
-Float_t AliAnalysisTaskEmcalQGTagging::GetJetAngularity(AliEmcalJet *jet) {
+Float_t AliAnalysisTaskEmcalQGTagging::GetJetAngularity(AliEmcalJet *jet, Int_t jetContNb = 0) {
 
-  if(fJetShapeType==kDeriv)
+  if((fJetShapeSub==kDerivSub) && (jetContNb==0))
     return jet->GetSecondOrderSubtractedAngularity();
   else
-    return Angularity(jet);
+    return Angularity(jet, jetContNb);
  
 }
 
 
 //________________________________________________________________________
-Float_t AliAnalysisTaskEmcalQGTagging::PTD(AliEmcalJet *jet){
+Float_t AliAnalysisTaskEmcalQGTagging::PTD(AliEmcalJet *jet, Int_t jetContNb = 0){
 
-  AliJetContainer *jetCont = GetJetContainer(0);
+  AliJetContainer *jetCont = GetJetContainer(jetContNb);
   if (!jet->GetNumberOfTracks())
       return 0; 
     Double_t den=0.;
@@ -316,19 +380,19 @@ Float_t AliAnalysisTaskEmcalQGTagging::PTD(AliEmcalJet *jet){
 } 
 
 //________________________________________________________________________
-Float_t AliAnalysisTaskEmcalQGTagging::GetJetpTD(AliEmcalJet *jet) {
+Float_t AliAnalysisTaskEmcalQGTagging::GetJetpTD(AliEmcalJet *jet, Int_t jetContNb = 0) {
   //calc subtracted jet mass
-  if(fJetShapeType==kDeriv)
+  if((fJetShapeSub==kDerivSub)&&(jetContNb==0))
     return jet->GetSecondOrderSubtractedpTD();
   else
-    return PTD(jet);
+    return PTD(jet, jetContNb);
  
 }
 
 //_____________________________________________________________________________
-Float_t AliAnalysisTaskEmcalQGTagging::Circularity(AliEmcalJet *jet){
+Float_t AliAnalysisTaskEmcalQGTagging::Circularity(AliEmcalJet *jet, Int_t jetContNb = 0){
 
-  AliJetContainer *jetCont = GetJetContainer(0);
+  AliJetContainer *jetCont = GetJetContainer(jetContNb);
   if (!jet->GetNumberOfTracks())
     return 0; 
   Double_t mxx    = 0.;
@@ -405,20 +469,20 @@ Float_t AliAnalysisTaskEmcalQGTagging::Circularity(AliEmcalJet *jet){
 
 
 //________________________________________________________________________
-Float_t AliAnalysisTaskEmcalQGTagging::GetJetCircularity(AliEmcalJet *jet) {
+Float_t AliAnalysisTaskEmcalQGTagging::GetJetCircularity(AliEmcalJet *jet, Int_t jetContNb =0 ) {
   //calc subtracted jet mass
  
-  if(fJetShapeType==kDeriv)
+  if((fJetShapeSub==kDerivSub)&&(jetContNb==0))
     return jet->GetSecondOrderSubtractedCircularity();
   else
-    return Circularity(jet);
+    return Circularity(jet, jetContNb);
  
 }
 
 //________________________________________________________________________
-Float_t AliAnalysisTaskEmcalQGTagging::LeSub(AliEmcalJet *jet){
+Float_t AliAnalysisTaskEmcalQGTagging::LeSub(AliEmcalJet *jet, Int_t jetContNb =0 ){
 
-  AliJetContainer *jetCont = GetJetContainer(0);
+  AliJetContainer *jetCont = GetJetContainer(jetContNb);
   if (!jet->GetNumberOfTracks())
       return 0; 
     Double_t den=0.;
@@ -438,21 +502,21 @@ return num-den;
 } 
 
 //________________________________________________________________________
-Float_t AliAnalysisTaskEmcalQGTagging::GetJetLeSub(AliEmcalJet *jet) {
+Float_t AliAnalysisTaskEmcalQGTagging::GetJetLeSub(AliEmcalJet *jet, Int_t jetContNb =0) {
   //calc subtracted jet mass
  
-  if(fJetShapeType==kDeriv)
+  if((fJetShapeSub==kDerivSub)&&(jetContNb==0))
     return jet->GetSecondOrderSubtractedLeSub();
   else
-    return LeSub(jet);
+    return LeSub(jet, jetContNb);
  
 }
 
 //________________________________________________________________________
-Float_t AliAnalysisTaskEmcalQGTagging::GetJetNumberOfConstituents(AliEmcalJet *jet) {
+Float_t AliAnalysisTaskEmcalQGTagging::GetJetNumberOfConstituents(AliEmcalJet *jet,Int_t jetContNb=0) {
   //calc subtracted jet mass
   
-  if(fJetShapeType==kDeriv)
+  if((fJetShapeSub==kDerivSub)&&(jetContNb==0))
     return jet->GetSecondOrderSubtractedConstituent();
   else
     return jet->GetNumberOfTracks();
@@ -461,9 +525,9 @@ Float_t AliAnalysisTaskEmcalQGTagging::GetJetNumberOfConstituents(AliEmcalJet *j
    
 
 //______________________________________________________________________________
-Float_t AliAnalysisTaskEmcalQGTagging::Sigma2(AliEmcalJet *jet){
+Float_t AliAnalysisTaskEmcalQGTagging::Sigma2(AliEmcalJet *jet, Int_t jetContNb=0){
 
-  AliJetContainer *jetCont = GetJetContainer(0);
+  AliJetContainer *jetCont = GetJetContainer(jetContNb);
   if (!jet->GetNumberOfTracks())
       return 0; 
       Double_t mxx    = 0.;
@@ -517,13 +581,13 @@ Float_t AliAnalysisTaskEmcalQGTagging::Sigma2(AliEmcalJet *jet){
 }
 
 //________________________________________________________________________
-Float_t AliAnalysisTaskEmcalQGTagging::GetSigma2(AliEmcalJet *jet) {
+Float_t AliAnalysisTaskEmcalQGTagging::GetSigma2(AliEmcalJet *jet, Int_t jetContNb=0) {
   //calc subtracted jet mass
  
-  if(fJetShapeType==kDeriv)
+  if((fJetShapeSub==kDerivSub)&&(jetContNb==0))
     return jet->GetSecondOrderSubtractedSigma2();
   else
-    return Sigma2(jet);
+    return Sigma2(jet, jetContNb);
  
 }