]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
from Carlos Perez:
authormkrzewic <mkrzewic@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 24 Jun 2013 12:53:47 +0000 (12:53 +0000)
committermkrzewic <mkrzewic@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 24 Jun 2013 12:53:47 +0000 (12:53 +0000)
updates

PWG/FLOW/Tasks/AliAnalysisTaskFlowStrange.cxx
PWG/FLOW/Tasks/AliAnalysisTaskFlowStrange.h

index 41c266d6aafa6153df2359d519f0858f0a9cfb67..b95b23d1286b8fe51e1120f5ca6ddc9f33e86a58 100644 (file)
@@ -84,6 +84,7 @@ AliAnalysisTaskFlowStrange::AliAnalysisTaskFlowStrange() :
   fVZEevent(NULL),\r
   fCandidates(NULL),\r
   fList(NULL),\r
+  fRunNumber(-1),\r
   fDebug(0),\r
   fQAlevel(0),\r
   fReadESD(kFALSE),\r
@@ -91,6 +92,7 @@ AliAnalysisTaskFlowStrange::AliAnalysisTaskFlowStrange() :
   fAvoidExec(kFALSE),\r
   fSkipSelection(kFALSE),\r
   fSkipFlow(kFALSE),\r
+  fSkipDHcorr(kTRUE),\r
   fUseFP(kFALSE),\r
   fRunOnpA(kFALSE),\r
   fRunOnpp(kFALSE),\r
@@ -182,6 +184,7 @@ AliAnalysisTaskFlowStrange::AliAnalysisTaskFlowStrange(const char *name) :
   fVZEevent(NULL),\r
   fCandidates(NULL),\r
   fList(NULL),\r
+  fRunNumber(-1),\r
   fDebug(0),\r
   fQAlevel(0),\r
   fReadESD(kFALSE),\r
@@ -189,6 +192,7 @@ AliAnalysisTaskFlowStrange::AliAnalysisTaskFlowStrange(const char *name) :
   fAvoidExec(kFALSE),\r
   fSkipSelection(kFALSE),\r
   fSkipFlow(kFALSE),\r
+  fSkipDHcorr(kTRUE),\r
   fUseFP(kFALSE),\r
   fRunOnpA(kFALSE),\r
   fRunOnpp(kFALSE),\r
@@ -328,12 +332,13 @@ void AliAnalysisTaskFlowStrange::AddQAEvents() {
   TList *tQAEvents=new TList();\r
   tQAEvents->SetName("Event");\r
   tQAEvents->SetOwner();\r
-  tH1D = new TH1D("Events","Number of Events",5,0,5); tQAEvents->Add(tH1D);\r
+  tH1D = new TH1D("Events","Number of Events",6,0,6); tQAEvents->Add(tH1D);\r
   tH1D->GetXaxis()->SetBinLabel(1,"exec");\r
   tH1D->GetXaxis()->SetBinLabel(2,"userexec");\r
   tH1D->GetXaxis()->SetBinLabel(3,"reached");\r
   tH1D->GetXaxis()->SetBinLabel(4,"selected");\r
   tH1D->GetXaxis()->SetBinLabel(5,"rejectedByLowQw");\r
+  tH1D->GetXaxis()->SetBinLabel(6,"rejectedByErrorLoadVZEcal");\r
   tProfile = new TProfile("Configuration","Configuration",20,0,20); tQAEvents->Add(tProfile);\r
   tProfile->Fill( 0.5,fCentPerMin,1); tProfile->GetXaxis()->SetBinLabel( 1,"fCentPerMin");\r
   tProfile->Fill( 1.5,fCentPerMax,1); tProfile->GetXaxis()->SetBinLabel( 2,"fCentPerMax");\r
@@ -408,6 +413,7 @@ void AliAnalysisTaskFlowStrange::AddQACandidates() {
   TList *tList;\r
   TH1D *tH1D;\r
   TH2D *tH2D;\r
+  TH3D *tH3D;\r
 \r
   //reconstruction\r
   if(fReadESD) {\r
@@ -422,6 +428,12 @@ void AliAnalysisTaskFlowStrange::AddQACandidates() {
   tList=new TList(); tList->SetName("RecSel"); tList->SetOwner(); AddCandidatesSpy(tList); fList->Add(tList);\r
   //daughters\r
   tList=new TList(); tList->SetName("TrkDau"); tList->SetOwner(); AddTracksSpy(tList); fList->Add(tList);\r
+  if(!fSkipDHcorr) {\r
+    //corr\r
+    tList=new TList(); tList->SetName("DHCORR"); tList->SetOwner(); \r
+    tH3D = new TH3D("DPHI","DPHI;dPT;dPHI;dETA", 20, -1, +1, 120, -TMath::TwoPi(), TMath::TwoPi(), 16, -1.6, +1.6 ); tList->Add(tH3D);\r
+    fList->Add(tList);\r
+  }\r
   if(fQAlevel>1) {\r
     // IN-OUT\r
     tList=new TList(); tList->SetName("RecAllIP"); tList->SetOwner(); AddCandidatesSpy(tList); fList->Add(tList);\r
@@ -462,10 +474,20 @@ void AliAnalysisTaskFlowStrange::UserExec(Option_t *option) {
   AliAnalysisTaskFlowStrange::MyUserExec(option);\r
 }\r
 //=======================================================================\r
-void AliAnalysisTaskFlowStrange::NotifyRun() {\r
-  if(fQAlevel>5) AddVZEQA();\r
+void AliAnalysisTaskFlowStrange::MyNotifyRun() {\r
+  if(fQAlevel>5 && !fReadESD) AddVZEQA();\r
   if(fVZEsave) AddVZEROResponse();\r
-  if(fVZEload) LoadVZEROResponse();\r
+}\r
+//=======================================================================\r
+Bool_t AliAnalysisTaskFlowStrange::CalibrateEvent() {\r
+  if(fVZEsave) SaveVZEROResponse();\r
+  if(fQAlevel>5 && !fReadESD) SaveVZEROQA(); // 2BIMPROVED\r
+  Bool_t okay=kTRUE;\r
+  if(fVZEload) {\r
+    LoadVZEROResponse();\r
+    if(!fVZEResponse) okay = kFALSE;\r
+  }\r
+  return okay;\r
 }\r
 //=======================================================================\r
 Bool_t AliAnalysisTaskFlowStrange::AcceptAAEvent(AliESDEvent *tESD) {\r
@@ -616,29 +638,37 @@ void AliAnalysisTaskFlowStrange::MyUserExec(Option_t *) {
   fCandidates->SetLast(-1);\r
   AliESDEvent *tESD=dynamic_cast<AliESDEvent*>(InputEvent());\r
   AliAODEvent *tAOD=dynamic_cast<AliAODEvent*>(InputEvent());\r
+  Int_t thisRun = fRunNumber;\r
   //=>check event\r
   Bool_t acceptEvent=kFALSE;\r
   if(fReadESD) {\r
-    if(!tESD) return;\r
+    if(!tESD) {Publish(); return;}\r
     acceptEvent = fRunOnpp?kFALSE:fRunOnpA?kFALSE:AcceptAAEvent(tESD);\r
+    thisRun = tESD->GetRunNumber();\r
   } else {\r
-    if(!tAOD) return;\r
+    if(!tAOD) {Publish(); return;}\r
     acceptEvent = fRunOnpp?AcceptPPEvent(tAOD):fRunOnpA?AcceptPAEvent(tAOD):AcceptAAEvent(tAOD);\r
+    thisRun = tAOD->GetRunNumber();\r
+  }\r
+  if(thisRun!=fRunNumber) {\r
+    fRunNumber = thisRun;\r
+    MyNotifyRun();\r
+  }\r
+  if( !CalibrateEvent() ) {\r
+    ((TH1D*)((TList*)fList->FindObject("Event"))->FindObject("Events"))->Fill(5);\r
+    Publish(); return;\r
   }\r
   ((TH1D*)((TList*)fList->FindObject("Event"))->FindObject("Events"))->Fill(2);\r
   //=>does the event clear?\r
-  if(!acceptEvent) return;\r
+  if(!acceptEvent) {Publish(); return;}\r
   if(!fSkipFlow) {\r
     MakeQVectors();\r
     if(fPsi2<-0.1) {\r
       ((TH1D*)((TList*)fList->FindObject("Event"))->FindObject("Events"))->Fill(4);\r
+      Publish();\r
       return;\r
     }\r
   }\r
-  SaveVZEROResponse();\r
-  if(fQAlevel>5 && !fReadESD) {\r
-    SaveVZEROQA();\r
-  }\r
   //=>great, lets do our stuff!\r
   ((TH1D*)((TList*)fList->FindObject("Event"))->FindObject("Events"))->Fill(3);\r
   //=>load candidates\r
@@ -649,12 +679,19 @@ void AliAnalysisTaskFlowStrange::MyUserExec(Option_t *) {
       if(fSpecie<10) ReadFromAODv0(tAOD);\r
       else ChargeParticles(tAOD);\r
     }\r
-    if(fUseFP) AddCandidates();\r
+    if(fUseFP) {\r
+      if(!fSkipDHcorr) MakeDHcorr();\r
+      AddCandidates();\r
+    }\r
     //=>flow\r
     //=>done\r
   }\r
   tTime.Stop();\r
   ((TH1D*)((TList*)fList->FindObject("Event"))->FindObject("RealTime"))->Fill( TMath::Log( tTime.RealTime() ) );\r
+  Publish();\r
+}\r
+//=======================================================================\r
+void AliAnalysisTaskFlowStrange::Publish() {\r
   PostData(1,fList);\r
   if(fUseFP) {\r
     PostData(2,fTPCevent);\r
@@ -1762,42 +1799,31 @@ Bool_t AliAnalysisTaskFlowStrange::PassesFilterBit(AliESDtrack *track) {
 }\r
 //=======================================================================\r
 void AliAnalysisTaskFlowStrange::LoadVZEROResponse() {\r
-  if(fVZEsave) return;\r
-  AliVEvent *event = InputEvent();\r
-  if(!event) return;\r
-  Int_t thisrun = event->GetRunNumber();\r
   if(fVZEResponse) {\r
     TString run = fVZEResponse->GetTitle();\r
-    if( run.Atoi() == thisrun ) return;\r
+    if( run.Atoi() == fRunNumber ) return;\r
     fVZEResponse = NULL;\r
   }\r
   //==>loading\r
-  fVZEResponse = dynamic_cast<TH2D*> (fVZEload->FindObject( Form("%d",thisrun) ));\r
-  printf("New VZE calibration: run %d -> Entries %.0f\n",thisrun,fVZEResponse->GetEntries());\r
+  fVZEResponse = dynamic_cast<TH2D*> (fVZEload->FindObject( Form("%d",fRunNumber) ));\r
+  printf("New VZE calibration: run %d -> Entries %.0f\n",fRunNumber,fVZEResponse->GetEntries());\r
 }\r
 //=======================================================================\r
 void AliAnalysisTaskFlowStrange::AddVZEQA() {\r
-  AliVEvent *event = InputEvent();\r
-  if(!event) return;\r
-  Int_t thisrun = event->GetRunNumber();\r
-\r
   fVZEQA = new TList();\r
-  fVZEQA->SetName( Form("VZEQA%d",thisrun) );\r
+  fVZEQA->SetName( Form("VZEQA%d",fRunNumber) );\r
   fVZEQA->SetOwner();\r
   if(fQAlevel>0) {\r
     TProfile2D *prof = new TProfile2D("LINP","LINP;VZEcell;VZEmult;SPDtrkl", 64,0,64,500,0,700,0,10000); fVZEQA->Add( prof );\r
     prof = new TProfile2D("MULP","MULP;VZEcell;CENTR;VZEmult", 64,0,64,100,0,100,0,10000); fVZEQA->Add( prof );\r
     TH3D *tH3D = new TH3D("EQU","EQU;VZEeqmult;VZEmult",100,0,700,100,0,700,64,0,64); fVZEQA->Add( tH3D );\r
-    //tH3D = new TH3D("LIN","LIN;SPDtrkl;VZEmult;VZEcell",2000,0,2000,200,0,700,64,0,64); fVZEQA->Add( tH3D );\r
   }\r
   fList->Add(fVZEQA);\r
 }\r
 //=======================================================================\r
 void AliAnalysisTaskFlowStrange::SaveVZEROQA() {\r
-  if(!fVZEQA) return;\r
   AliAODEvent *event = dynamic_cast<AliAODEvent*> (InputEvent());\r
   AliVVZERO *vzero = event->GetVZEROData();\r
-  //AliAODHeader *header = event->GetHeader();\r
   AliAODTracklets *tracklets = event->GetTracklets();\r
   if(!event) return;\r
   if(!vzero) return;\r
@@ -1810,7 +1836,6 @@ void AliAnalysisTaskFlowStrange::SaveVZEROQA() {
     eqmult = event->GetVZEROEqMultiplicity(id);\r
     ((TProfile2D*) fVZEQA->FindObject( "LINP" ))->Fill(id,mult,trkl,1);\r
     ((TProfile2D*) fVZEQA->FindObject( "MULP" ))->Fill(id,fThisCent,mult,1);\r
-    //((TH3D*) fVZEQA->FindObject("LIN"))->Fill(trkl,mult,id);\r
     ((TH3D*) fVZEQA->FindObject("EQU"))->Fill(eqmult,mult,id);\r
   }\r
 }\r
@@ -1873,4 +1898,25 @@ Int_t AliAnalysisTaskFlowStrange::RefMultGlobal() {
   }\r
   return found;\r
 }\r
-\r
+//=======================================================================\r
+void AliAnalysisTaskFlowStrange::MakeDHcorr() {\r
+  // Adds DH corr\r
+  for(int iCand=0; iCand!=fCandidates->GetEntriesFast(); ++iCand ) {\r
+    AliFlowCandidateTrack *cand = static_cast<AliFlowCandidateTrack*>(fCandidates->At(iCand));\r
+    if(!cand) continue;\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->GetID() == iRP->GetID()) continue; //avoid autocorr\r
+      for(int iDau=0; iDau!=cand->GetNDaughters(); ++iDau) //if it is a decay\r
+        if(cand->GetIDDaughter(iDau) == iRP->GetID()) continue;\r
+      //corr\r
+      Double_t dDPHI = iRP->Phi() - cand->Phi();\r
+      Double_t dDETA = iRP->Eta() - cand->Eta();\r
+      Double_t dDPT  = iRP->Pt()  - cand->Pt();\r
+      ((TH3D*)((TList*)fList->FindObject("DHCORR"))->FindObject("DPHI"))->Fill( dDPT, dDPHI, dDETA );\r
+      //end of corr\r
+    }\r
+  }\r
+}\r
index 6ba63cde9ca159bd1fdfad932f5af215a48f726f..ac92601a0c781997ea1329461af5a6a199c4d6bc 100644 (file)
@@ -41,7 +41,6 @@ class AliAnalysisTaskFlowStrange : public AliAnalysisTaskSE {
   virtual void Exec(Option_t*);\r
   virtual void UserExec(Option_t *);\r
   virtual void Terminate(Option_t *);\r
-  virtual void NotifyRun();\r
 \r
   void MyUserExec(Option_t *);\r
   void SetDebug(Int_t val=1) {fDebug = val;}\r
@@ -105,6 +104,10 @@ class AliAnalysisTaskFlowStrange : public AliAnalysisTaskSE {
   void AddQAEvents();\r
   void AddQACandidates();\r
 \r
+  void MyNotifyRun();\r
+  Bool_t CalibrateEvent();\r
+  void Publish();\r
+  \r
   void AddEventSpy();\r
   Bool_t AcceptAAEvent(AliESDEvent *tESD);\r
   Bool_t AcceptAAEvent(AliAODEvent *tAOD);\r
@@ -127,6 +130,7 @@ class AliAnalysisTaskFlowStrange : public AliAnalysisTaskSE {
   Bool_t PassesRFPTPCCuts(AliESDtrack *myTrack, Double_t aodChi2NDF=0, Float_t aodipxy=0, Float_t aodipz=0);\r
   void MakeQVectors();\r
 \r
+  void MakeDHcorr();\r
   void AddCandidates();\r
   void ReadEventPlanesFromAOD(AliAODEvent *tAOD);\r
 \r
@@ -180,6 +184,8 @@ class AliAnalysisTaskFlowStrange : public AliAnalysisTaskSE {
   TObjArray      *fCandidates;  // array of selected candidates\r
   TList          *fList;        // stores the final list of output histograms\r
 \r
+  Int_t fRunNumber; // current run number\r
+\r
   Int_t fDebug;   // debug level\r
   Int_t fQAlevel; // QA plots\r
 \r
@@ -188,6 +194,7 @@ class AliAnalysisTaskFlowStrange : public AliAnalysisTaskSE {
   Bool_t fAvoidExec;     // avoids Exec\r
   Bool_t fSkipSelection; // skip decay finder\r
   Bool_t fSkipFlow;      // skip flow-wise code\r
+  Bool_t fSkipDHcorr;    // skip dhcorr code\r
   Bool_t fUseFP;         // flow package?\r
   Bool_t fRunOnpA;       // make task compatible with pA event selection\r
   Bool_t fRunOnpp;       // make task compatible with pp event selection\r