]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
QA updates (Carlos)
authorpchrista <pchrista@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 5 Sep 2013 13:21:45 +0000 (13:21 +0000)
committerpchrista <pchrista@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 5 Sep 2013 13:21:45 +0000 (13:21 +0000)
PWG/FLOW/Tasks/AliAnalysisTaskFlowStrange.cxx
PWG/FLOW/Tasks/AliAnalysisTaskFlowStrange.h

index c9467f573bc95a164538c496104af3182ec14f6e..4654eadc961bb34dd869552b3e2cd70a8a5da66a 100644 (file)
@@ -54,6 +54,7 @@
 #include "AliAODTracklets.h"\r
 #include "AliAODHeader.h"\r
 \r
+#include "AliAODMCHeader.h"\r
 #include "AliAODMCParticle.h"\r
 #include "TClonesArray.h"\r
 #include "TDatabasePDG.h"\r
@@ -110,8 +111,10 @@ AliAnalysisTaskFlowStrange::AliAnalysisTaskFlowStrange() :
   fVZEload(NULL),\r
   fVZEResponse(NULL),\r
   fVZEmb(kFALSE),\r
+  fVZEByDisk(kTRUE),\r
   fVZEQA(NULL),\r
   fPsi2(0.0),\r
+  fMCEP(0.0),\r
   fMassBins(0),\r
   fMinMass(0.0),\r
   fMaxMass(0.0),\r
@@ -136,8 +139,9 @@ AliAnalysisTaskFlowStrange::AliAnalysisTaskFlowStrange() :
   fDecayAlpha(0.0),\r
   fDecayRapidity(0.0),\r
   fDecayProductIPXY(0.0),\r
-  fDecayIDneg(0),\r
-  fDecayIDpos(0),\r
+  fDecayIDneg(-1),\r
+  fDecayIDpos(-1),\r
+  fDecayID(-1),\r
   fDecayMinEta(0.0),\r
   fDecayMaxEta(0.0),\r
   fDecayMinPt(0.0),\r
@@ -210,8 +214,10 @@ AliAnalysisTaskFlowStrange::AliAnalysisTaskFlowStrange(const char *name) :
   fVZEload(NULL),\r
   fVZEResponse(NULL),\r
   fVZEmb(kFALSE),\r
+  fVZEByDisk(kTRUE),\r
   fVZEQA(NULL),\r
   fPsi2(0.0),\r
+  fMCEP(0.0),\r
   fMassBins(0),\r
   fMinMass(0.0),\r
   fMaxMass(0.0),\r
@@ -236,8 +242,9 @@ AliAnalysisTaskFlowStrange::AliAnalysisTaskFlowStrange(const char *name) :
   fDecayAlpha(0.0),\r
   fDecayRapidity(0.0),\r
   fDecayProductIPXY(0.0),\r
-  fDecayIDneg(0),\r
-  fDecayIDpos(0),\r
+  fDecayIDneg(-1),\r
+  fDecayIDpos(-1),\r
+  fDecayID(-1),\r
   fDecayMinEta(0.0),\r
   fDecayMaxEta(0.0),\r
   fDecayMinPt(0.0),\r
@@ -297,7 +304,7 @@ void AliAnalysisTaskFlowStrange::UserCreateOutputObjects() {
   if(fReadESD) MakeFilterBits();\r
 \r
   AliFlowCommonConstants *cc = AliFlowCommonConstants::GetMaster();\r
-  cc->SetNbinsMult(100); cc->SetMultMin(0);   cc->SetMultMax(4000);\r
+  cc->SetNbinsMult(3000); cc->SetMultMin(0);   cc->SetMultMax(30000);\r
   cc->SetNbinsPt(200); cc->SetPtMin(0.0);   cc->SetPtMax(20.0);\r
   cc->SetNbinsPhi(100);  cc->SetPhiMin(0.0);  cc->SetPhiMax(TMath::TwoPi());\r
   cc->SetNbinsEta(100);  cc->SetEtaMin(-5.0); cc->SetEtaMax(+5.0);\r
@@ -370,6 +377,7 @@ void AliAnalysisTaskFlowStrange::AddQAEvents() {
 }\r
 //=======================================================================\r
 void AliAnalysisTaskFlowStrange::AddEventSpy() {\r
+  TH1D *tH1D;\r
   TH2D *tH2D;\r
   TList *tList=new TList();\r
   tList->SetName("EventSpy");\r
@@ -378,6 +386,10 @@ void AliAnalysisTaskFlowStrange::AddEventSpy() {
     tH2D = new TH2D("VTXZ","VTXZ;Global||SPD;SPD",60,-25,+25,60,-25,+25); tList->Add( tH2D );\r
     tH2D = new TH2D("CCCC","CCCC;V0M;TRK",60,-10,110,60,-10,110);         tList->Add( tH2D );\r
     tH2D = new TH2D("REFM","REFM;TPC;GLOBAL",100,0,3000,100,0,3000);      tList->Add( tH2D );\r
+    if(fReadMC) {\r
+      tH1D = new TH1D("MCCC","MCCC;Xsection",100,-10,110); tList->Add( tH1D );\r
+      tH1D = new TH1D("MCEP","MCEP;MCEP",100,-TMath::TwoPi(),TMath::TwoPi()); tList->Add( tH1D );\r
+    }\r
   }\r
   fList->Add(tList);\r
 }\r
@@ -457,13 +469,13 @@ void AliAnalysisTaskFlowStrange::AddQACandidates() {
   if(fReadMC) {\r
     tList=new TList(); tList->SetName("RecMth"); tList->SetOwner(); AddCandidatesSpy(tList); fList->Add(tList);\r
     tH1D = new TH1D("MCOrigin", "MCOrigin;Rad2",1000,0,100); tList->Add(tH1D);\r
-    tH2D = new TH2D("PTRes", "PTRes;MCPt;|DAT-MC|/MC",100,0,20,50,0,1); tList->Add(tH2D);\r
-    tH2D = new TH2D("ETARes","ETARes;MCETA;|DAT-MC|/MC",16,0,0.8,50,0,1); tList->Add(tH2D);\r
-    tH2D = new TH2D("RXYRes","RXYRes;MCRXY;|DAT-MC|/MC",100,0,20,50,0,1); tList->Add(tH2D);\r
-    tH2D = new TH2D("DLERes","DLERes;MCDLE;|DAT-MC|/MC",100,0,20,50,0,1); tList->Add(tH2D);\r
-    tH2D = new TH2D("RAPRes","RAPRes;MCRAP;|DAT-MC|/MC",10,0,0.5,50,0,1); tList->Add(tH2D);\r
-    tH2D = new TH2D("APARes","APARes;MCAPA;|DAT-MC|/MC",24,-1.2,1.2,50,0,1); tList->Add(tH2D);\r
-    tH2D = new TH2D("APQRes","APQRes;MCAPQ;|DAT-MC|/MC",25,0,0.25,50,0,1); tList->Add(tH2D);\r
+    tH2D = new TH2D("PTRes", "PTRes;MCPt;DAT-MC/MC",  100,   0,  20,100,-0.2,+0.2); tList->Add(tH2D);\r
+    tH2D = new TH2D("ETARes","ETARes;MCETA;DAT-MC/MC", 16,   0, 0.8,100,-0.5,+0.5); tList->Add(tH2D);\r
+    tH2D = new TH2D("RXYRes","RXYRes;MCRXY;DAT-MC/MC",100,   0,  20,100,-1,1);      tList->Add(tH2D);\r
+    tH2D = new TH2D("DLERes","DLERes;MCDLE;DAT-MC/MC",100,   0,  20,100,-1,1);      tList->Add(tH2D);\r
+    tH2D = new TH2D("RAPRes","RAPRes;MCRAP;DAT-MC/MC", 10,   0, 0.5,100,-0.5,+0.5); tList->Add(tH2D);\r
+    tH2D = new TH2D("APARes","APARes;MCAPA;DAT-MC/MC", 24,-1.2, 1.2,100,-0.5,+0.5); tList->Add(tH2D);\r
+    tH2D = new TH2D("APQRes","APQRes;MCAPQ;DAT-MC/MC", 25,   0,0.25,100,-0.3,+0.3); tList->Add(tH2D);\r
 \r
     tList=new TList(); tList->SetName("TrkMth"); tList->SetOwner(); AddTracksSpy(tList); fList->Add(tList);\r
     tList=new TList(); tList->SetName("MthFDW"); tList->SetOwner(); AddCandidatesSpy(tList); fList->Add(tList);\r
@@ -564,12 +576,29 @@ Bool_t AliAnalysisTaskFlowStrange::AcceptAAEvent(AliAODEvent *tAOD) {
     mycent = "V0M";\r
   }\r
   fThisCent = cent->GetCentralityPercentile( mycent );\r
+\r
+  Double_t xsec=0;\r
+  if(fReadMC) {\r
+    AliAODMCHeader *mcHeader = dynamic_cast<AliAODMCHeader*>(tAOD->GetList()->FindObject(AliAODMCHeader::StdBranchName()));\r
+    if (!mcHeader) {\r
+      return kFALSE;\r
+    }\r
+    xsec = mcHeader->GetCrossSection();\r
+    fMCEP = mcHeader->GetReactionPlaneAngle();\r
+  }\r
+\r
   acceptEvent = (fThisCent<fCentPerMin||fThisCent>fCentPerMax)?kFALSE:acceptEvent;\r
   acceptEvent = TMath::Abs(tVtxZ-tSPDVtxZ)>0.5?kFALSE:acceptEvent;\r
   acceptEvent = TMath::Abs(tVtxZ)>10.0?kFALSE:acceptEvent;\r
-  if(fQAlevel>0) ((TH2D*)((TList*)fList->FindObject("EventSpy"))->FindObject("VTXZ"))->Fill( tVtxZ, tSPDVtxZ );\r
-  if(fQAlevel>0) ((TH2D*)((TList*)fList->FindObject("EventSpy"))->FindObject("CCCC"))->Fill( cc1, cc2 );\r
-  if(fQAlevel>0) ((TH2D*)((TList*)fList->FindObject("EventSpy"))->FindObject("REFM"))->Fill( tpc, glo );\r
+  if(fQAlevel>0) {\r
+    ((TH2D*)((TList*)fList->FindObject("EventSpy"))->FindObject("VTXZ"))->Fill( tVtxZ, tSPDVtxZ );\r
+    ((TH2D*)((TList*)fList->FindObject("EventSpy"))->FindObject("CCCC"))->Fill( cc1, cc2 );\r
+    ((TH2D*)((TList*)fList->FindObject("EventSpy"))->FindObject("REFM"))->Fill( tpc, glo );\r
+    if(fReadMC) {\r
+      ((TH1D*)((TList*)fList->FindObject("EventSpy"))->FindObject("MCCC"))->Fill( xsec );\r
+      ((TH1D*)((TList*)fList->FindObject("EventSpy"))->FindObject("MCEP"))->Fill( fMCEP );\r
+    }\r
+  }\r
   // EndOfCuts\r
   return acceptEvent;\r
 }\r
@@ -1162,9 +1191,9 @@ void AliAnalysisTaskFlowStrange::ReadFromAODv0(AliAODEvent *tAOD) {
               mcPt = mcmot->Pt();\r
               mcEta = TMath::Abs( mcmot->Eta() );\r
               mcRap = TMath::Abs( mcmot->Y() );\r
-              if(!TMath::AreEqualAbs(mcPt,0,1e-6))  resPt = TMath::Abs(fDecayPt - mcPt) / mcPt;\r
-              if(!TMath::AreEqualAbs(mcEta,0,1e-6)) resEta = TMath::Abs(fDecayEta - mcEta) / mcEta;\r
-              if(!TMath::AreEqualAbs(mcRap,0,1e-6)) resRap = TMath::Abs(fDecayRapidity - mcRap) / mcRap;\r
+              if(!TMath::AreEqualAbs(mcPt,0,1e-6))  resPt = (fDecayPt - mcPt) / mcPt;\r
+              if(!TMath::AreEqualAbs(mcEta,0,1e-6)) resEta = (fDecayEta - mcEta) / mcEta;\r
+              if(!TMath::AreEqualAbs(mcRap,0,1e-6)) resRap = (fDecayRapidity - mcRap) / mcRap;\r
               if( TMath::Abs(mcmot->GetPdgCode())==mompdg) {\r
                 if(mcmot->GetNDaughters()==2) {\r
                   matched=true;\r
@@ -1174,8 +1203,8 @@ void AliAnalysisTaskFlowStrange::ReadFromAODv0(AliAODEvent *tAOD) {
                   Double_t mcGamma = mcmot->E() / mcmot->GetCalcMass();\r
                   mcRxy = TMath::Sqrt( dx*dx + dy*dy );\r
                   mcDle = TMath::Sqrt(dx*dx+dy*dy+dz*dz)/mcGamma;\r
-                  if(!TMath::AreEqualAbs(mcRxy,0,1e-6)) resRxy = TMath::Abs(fDecayRadXY - mcRxy) / mcRxy;\r
-                  if(!TMath::AreEqualAbs(mcDle,0,1e-6)) resDle = TMath::Abs(fDecayDecayLength - mcDle) / mcDle;\r
+                  if(!TMath::AreEqualAbs(mcRxy,0,1e-6)) resRxy = (fDecayRadXY - mcRxy) / mcRxy;\r
+                  if(!TMath::AreEqualAbs(mcDle,0,1e-6)) resDle = (fDecayDecayLength - mcDle) / mcDle;\r
                   TVector3 momPos(mcpos->Px(),mcpos->Py(),mcpos->Pz());\r
                   TVector3 momNeg(mcneg->Px(),mcneg->Py(),mcneg->Pz());\r
                   TVector3 momTot(mcmot->Px(),mcmot->Py(),mcmot->Pz());\r
@@ -1183,8 +1212,8 @@ void AliAnalysisTaskFlowStrange::ReadFromAODv0(AliAODEvent *tAOD) {
                   Double_t qlneg = momNeg.Dot(momTot)/momTot.Mag();\r
                   mcApq = momPos.Perp(momTot);\r
                   mcApa = 1.-2./(1.+qlpos/qlneg);\r
-                  if(!TMath::AreEqualAbs(mcApq,0,1e-6)) resApq = TMath::Abs(fDecayQt - mcApq) / mcApq;\r
-                  if(!TMath::AreEqualAbs(mcApa,0,1e-6)) resApa = TMath::Abs(fDecayAlpha - mcApa) / mcApa;\r
+                  if(!TMath::AreEqualAbs(mcApq,0,1e-6)) resApq = (fDecayQt - mcApq) / mcApq;\r
+                  if(!TMath::AreEqualAbs(mcApa,0,1e-6)) resApa = (fDecayAlpha - mcApa) / mcApa;\r
                 }\r
                 if(mcmot->GetMother()>0) {\r
                   AliAODMCParticle *mcfdw = (AliAODMCParticle*) mcArray->At( mcmot->GetMother() );\r
@@ -1269,8 +1298,7 @@ void AliAnalysisTaskFlowStrange::ChargeParticles(AliAODEvent *tAOD) {
     fDecayPt=t->Pt();\r
     fDecayPhi=t->Phi();\r
     fDecayEta=t->Eta();\r
-    fDecayIDpos=-1;\r
-    fDecayIDneg=-1;\r
+    fDecayID=t->GetID();\r
 \r
     FillCandidateSpy("RecAll");\r
     if(!pass) continue;\r
@@ -1316,8 +1344,12 @@ void AliAnalysisTaskFlowStrange::MakeTrack() {
   oTrack->SetPt(fDecayPt);\r
   oTrack->SetPhi(fDecayPhi);\r
   oTrack->SetEta(fDecayEta);\r
-  oTrack->AddDaughter(fDecayIDpos);\r
-  oTrack->AddDaughter(fDecayIDneg);\r
+  if(fSpecie<10) {\r
+    oTrack->AddDaughter(fDecayIDpos);\r
+    oTrack->AddDaughter(fDecayIDneg);\r
+  } else {\r
+    oTrack->SetID( fDecayID );\r
+  }\r
   oTrack->SetForPOISelection(kTRUE);\r
   oTrack->SetForRPSelection(kFALSE);\r
   if(overwrite) {\r
@@ -1338,30 +1370,48 @@ void AliAnalysisTaskFlowStrange::AddCandidates() {
   for(int iCand=0; iCand!=fCandidates->GetEntriesFast(); ++iCand ) {\r
     AliFlowCandidateTrack *cand = static_cast<AliFlowCandidateTrack*>(fCandidates->At(iCand));\r
     if(!cand) continue;\r
+    cand->SetForPOISelection(kTRUE);\r
+    cand->SetForRPSelection(kFALSE);\r
+    poi++;\r
     if(fDebug) printf(" >Checking at candidate %d with %d daughters: mass %f\n",\r
                       iCand,cand->GetNDaughters(),cand->Mass());\r
-    // untagging ===>\r
-    for(int iDau=0; iDau!=cand->GetNDaughters(); ++iDau) {\r
-      if(fDebug) printf("  >Daughter %d with fID %d", iDau, cand->GetIDDaughter(iDau));\r
+    if(fSpecie<10) { // DECAYS\r
+      // untagging ===>\r
+      for(int iDau=0; iDau!=cand->GetNDaughters(); ++iDau) {\r
+        if(fDebug) printf("  >Daughter %d with fID %d", iDau, cand->GetIDDaughter(iDau));\r
+        for(int iRPs=0; iRPs!=fTPCevent->NumberOfTracks(); ++iRPs ) {\r
+          AliFlowTrack *iRP = static_cast<AliFlowTrack*>(fTPCevent->GetTrack( iRPs ));\r
+          if(!iRP) continue;\r
+          if(!iRP->InRPSelection()) continue;\r
+          if(cand->GetIDDaughter(iDau) == iRP->GetID()) {\r
+            if(fDebug) printf(" was in RP set");\r
+            ++untagged;\r
+            iRP->SetForRPSelection(kFALSE);\r
+            fTPCevent->SetNumberOfRPs( fTPCevent->GetNumberOfRPs() -1 );\r
+          }\r
+        }\r
+        if(fDebug) printf("\n");\r
+      }\r
+      // <=== untagging \r
+      fTPCevent->InsertTrack( ((AliFlowTrack*) cand) );\r
+    } else {  // CHARGED\r
+      // adding only new tracks and tagging accordingly ===>\r
+      Bool_t found=kFALSE;\r
       for(int iRPs=0; iRPs!=fTPCevent->NumberOfTracks(); ++iRPs ) {\r
         AliFlowTrack *iRP = static_cast<AliFlowTrack*>(fTPCevent->GetTrack( iRPs ));\r
         if(!iRP) continue;\r
         if(!iRP->InRPSelection()) continue;\r
-        if(cand->GetIDDaughter(iDau) == iRP->GetID()) {\r
-          if(fDebug) printf(" was in RP set");\r
-          ++untagged;\r
-          iRP->SetForRPSelection(kFALSE);\r
-          fTPCevent->SetNumberOfRPs( fTPCevent->GetNumberOfRPs() -1 );\r
+        if(cand->GetID() == iRP->GetID()) {\r
+          if(fDebug) printf("  >charged track (%d) was also found in RP set (adding poi tag)\n",cand->GetID());\r
+          iRP->SetForPOISelection(kTRUE);\r
+          found = kTRUE;\r
         }\r
       }\r
-      if(fDebug) printf("\n");\r
+      if(!found) // not found adding track\r
+        fTPCevent->InsertTrack( ((AliFlowTrack*) cand) );\r
     }\r
-    // <=== untagging \r
-    poi++;\r
-    cand->SetForPOISelection(kTRUE);\r
-    fTPCevent->InsertTrack( ((AliFlowTrack*) cand) );\r
     fVZEevent->InsertTrack( ((AliFlowTrack*) cand) );\r
-  }\r
+  } //END OF LOOP\r
   fTPCevent->SetNumberOfPOIs( poi );\r
   fVZEevent->SetNumberOfPOIs( poi );\r
   ((TH1D*)((TList*)fList->FindObject("Event"))->FindObject("POI"))->Fill( poi );\r
@@ -1489,8 +1539,15 @@ void AliAnalysisTaskFlowStrange::MakeQVZE(AliVEvent *tevent,
       ring[j]=0;\r
       for(int i=0;i!=8;++i) ring[j] += extW[j*8+i];\r
     }\r
+    Double_t disk[2];\r
+    disk[0] = fVZEResponse->Integral(1,32,ybinmin,ybinmax)/(maxC-minC);\r
+    disk[1] = fVZEResponse->Integral(33,64,ybinmin,ybinmax)/(maxC-minC);\r
     //for(int i=0;i!=64;++i) printf("CELL %d -> W = %f ||",i,extW[i]);\r
-    for(int i=0;i!=64;++i) extW[i] = ring[i/8]/extW[i]/8.0;\r
+    if(fVZEByDisk) {\r
+      for(int i=0;i!=64;++i) extW[i] = disk[i/32]/extW[i]/8.0;\r
+    } else {\r
+      for(int i=0;i!=64;++i) extW[i] = ring[i/8]/extW[i]/8.0;\r
+    }\r
     //for(int i=0;i!=64;++i) printf(" W = %f \n",extW[i]);\r
   }\r
   //=>computing\r
@@ -1719,10 +1776,12 @@ void AliAnalysisTaskFlowStrange::MakeQTPC(AliESDEvent *tESD,
 //=======================================================================\r
 void AliAnalysisTaskFlowStrange::AddMCParticleSpy(TList *me) {\r
   TH1D *tH1D;\r
+  TH2D *tH2D;\r
   tH1D = new TH1D("Pt",   "Pt",   100,0.0,20);  me->Add(tH1D);\r
   tH1D = new TH1D("Phi",  "Phi",  100,0,TMath::TwoPi()); me->Add(tH1D);\r
   tH1D = new TH1D("Eta",  "Eta",  100,-1,+1);   me->Add(tH1D);\r
   tH1D = new TH1D("Rad2", "Rad2", 1000,0,+100); me->Add(tH1D);\r
+  tH2D = new TH2D("Dphi", "phi-MCEP;pt;dphi",100,0,20, 72,0,TMath::Pi()); me->Add(tH2D);\r
   return;\r
 }\r
 //=======================================================================\r
@@ -1732,9 +1791,17 @@ void AliAnalysisTaskFlowStrange::FillMCParticleSpy(TString listName, AliAODMCPar
   ((TH1D*)((TList*)fList->FindObject(listName.Data()))->FindObject("Phi" ))->Fill( p->Phi() );\r
   ((TH1D*)((TList*)fList->FindObject(listName.Data()))->FindObject("Rad2" ))->Fill( TMath::Sqrt( p->Xv()*p->Xv() +\r
                                                                                                 p->Yv()*p->Yv() ) );\r
+  ((TH1D*)((TList*)fList->FindObject(listName.Data()))->FindObject("Dphi" ))->Fill( p->Pt(), GetMCDPHI(p->Phi()) );\r
   return;\r
 }\r
 //=======================================================================\r
+Double_t AliAnalysisTaskFlowStrange::GetMCDPHI(Double_t phi) {\r
+  Double_t dDPHI = phi - fMCEP;\r
+  if( dDPHI < 0 ) dDPHI += TMath::TwoPi();\r
+  if( dDPHI > TMath::Pi() ) dDPHI = TMath::TwoPi()-dDPHI;\r
+  return dDPHI;\r
+}\r
+//=======================================================================\r
 void AliAnalysisTaskFlowStrange::FillMCParticleSpy(TString listName, TParticle *p) {\r
   ((TH1D*)((TList*)fList->FindObject(listName.Data()))->FindObject("Pt" ))->Fill( p->Pt() );\r
   ((TH1D*)((TList*)fList->FindObject(listName.Data()))->FindObject("Eta" ))->Fill( p->Eta() );\r
@@ -1758,6 +1825,7 @@ void AliAnalysisTaskFlowStrange::AddCandidatesSpy(TList *me) {
   tH2D = new TH2D("APPOS",   "APPOS;alphaPOS;QtPOS",100,-2,+2,100,0,0.3);     me->Add(tH2D);\r
   tH2D = new TH2D("D0PD0N",  "D0PD0N;D0P;D0N",      200,-10,+10,200,-10,+10); me->Add(tH2D);\r
   tH2D = new TH2D("XPOSXNEG","XPOSXNEG;XPOS;XNEG",  200,-50,+50,200,-50,+50); me->Add(tH2D);\r
+  tH2D = new TH2D("PTDPHIMC","PtDPHIMC;Pt;PHI-MCEP",100,0,20,72,0,TMath::Pi()); me->Add(tH2D);\r
   return;\r
 }\r
 //=======================================================================\r
@@ -1771,6 +1839,7 @@ void AliAnalysisTaskFlowStrange::FillCandidateSpy(TString listName) {
   ((TH2D*)((TList*)fList->FindObject(listName.Data()))->FindObject("PtDL"  ))->Fill( fDecayPt, fDecayDecayLength );\r
   ((TH2D*)((TList*)fList->FindObject(listName.Data()))->FindObject("PtMASS"))->Fill( fDecayPt, fDecayMass );\r
   ((TH2D*)((TList*)fList->FindObject(listName.Data()))->FindObject("APPOS" ))->Fill( fDecayAlpha, fDecayQt );\r
+  ((TH2D*)((TList*)fList->FindObject(listName.Data()))->FindObject("PTDPHIMC" ))->Fill( fDecayPt, GetMCDPHI( fDecayPhi ) );\r
 }\r
 //=======================================================================\r
 Bool_t AliAnalysisTaskFlowStrange::AcceptCandidate() {\r
index 7e2a99f4c36f085ce85397631fb0dcc33572b630..6d9bcf7535319cf4adfe407770773cae3348be94 100644 (file)
@@ -65,7 +65,7 @@ class AliAnalysisTaskFlowStrange : public AliAnalysisTaskSE {
 \r
   void SetWhichPsi(Int_t val) {fWhichPsi=val;}\r
   void SetStoreVZEResponse(Bool_t val) {fVZEsave=val;}\r
-  void LoadVZEResponse(TList *val, Bool_t val2=kFALSE) {fVZEload=val;fVZEmb=val2;}\r
+  void LoadVZEResponse(TList *val, Bool_t val2=kFALSE, Bool_t val3=kTRUE) {fVZEload=val;fVZEmb=val2;fVZEByDisk=val3;}\r
   \r
   void SetRFPFilterBit(Int_t val) {fRFPFilterBit=val;}\r
   void SetRFPMinPt(Double_t val) {fRFPminPt=val;}\r
@@ -136,6 +136,8 @@ class AliAnalysisTaskFlowStrange : public AliAnalysisTaskSE {
   void AddCandidates();\r
   void ReadEventPlanesFromAOD(AliAODEvent *tAOD);\r
 \r
+  Double_t GetMCDPHI(Double_t phi);\r
+\r
   Double_t CosThetaPointXY(AliESDv0 *me, const AliVVertex *vtx);\r
   Double_t CosThetaPointXY(AliAODv0 *me, const AliVVertex *vtx);\r
   Double_t DecayLengthXY(AliESDv0 *me, const AliVVertex *vtx);\r
@@ -217,8 +219,10 @@ class AliAnalysisTaskFlowStrange : public AliAnalysisTaskSE {
   TList  *fVZEload; // adress to calibration file\r
   TH2D   *fVZEResponse; // vze response vs centrality class\r
   Bool_t  fVZEmb;   // integrate response (linearity)\r
+  Bool_t  fVZEByDisk; // normalized by disk\r
   TList  *fVZEQA;   // adress to qalist\r
   Double_t fPsi2;   // best estimation of Psi2\r
+  Double_t fMCEP;   // stores MC EP (when available)\r
 \r
   Int_t    fMassBins; // opens\r
   Double_t fMinMass;  // mass\r
@@ -248,6 +252,7 @@ class AliAnalysisTaskFlowStrange : public AliAnalysisTaskSE {
   Double_t fDecayProductIPXY;           // DECAY\r
   Int_t    fDecayIDneg;                 // DECAY\r
   Int_t    fDecayIDpos;                 // DECAY\r
+  Int_t    fDecayID;                    // DECAY\r
 \r
   Double_t fDecayMinEta;                   // DECAY CUTS\r
   Double_t fDecayMaxEta;                   // DECAY CUTS\r