add calibration histograms for vzero centroids
authorkleinb <kleinb@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 24 Aug 2011 12:05:15 +0000 (12:05 +0000)
committerkleinb <kleinb@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 24 Aug 2011 12:05:15 +0000 (12:05 +0000)
PWG4/JetTasks/AliAnalysisTaskJetServices.cxx
PWG4/JetTasks/AliAnalysisTaskJetServices.h
PWG4/macros/AddTaskJetServices.C
PWG4/macros/AnalysisTrainPWG4Jets.C
PWG4/macros/ConfigTrainGrid.C

index feb5f47..c6a0dcc 100644 (file)
@@ -123,6 +123,10 @@ AliAnalysisTaskJetServices::AliAnalysisTaskJetServices():
   fp1RPYA(0x0),
   fp1RPXC(0x0),
   fp1RPYC(0x0),
+  fp1CalibRPXA(0x0),
+  fp1CalibRPYA(0x0),
+  fp1CalibRPXC(0x0),
+  fp1CalibRPYC(0x0),
   fh2RPAC(0x0),
   fh2RPAT(0x0),
   fh2RPCT(0x0),
@@ -186,6 +190,10 @@ AliAnalysisTaskJetServices::AliAnalysisTaskJetServices(const char* name):
   fp1RPYA(0x0),
   fp1RPXC(0x0),
   fp1RPYC(0x0),
+  fp1CalibRPXA(0x0),
+  fp1CalibRPYA(0x0),
+  fp1CalibRPXC(0x0),
+  fp1CalibRPYC(0x0),
   fh2RPAC(0x0),
   fh2RPAT(0x0),
   fh2RPCT(0x0),
@@ -752,9 +760,47 @@ AliAnalysisTaskJetServices::~AliAnalysisTaskJetServices(){
   }
   delete fRandomizer;
   if(fgAODHeader)delete fgAODHeader;
+  if(fgAODVZERO)delete fgAODVZERO;
+  delete fp1CalibRPXA;
+  delete fp1CalibRPYA;
+  delete fp1CalibRPXC;
+  delete fp1CalibRPYC;
+
 }
 
 
+void AliAnalysisTaskJetServices::SetV0Centroids(TProfile *xa,TProfile *ya,TProfile *xc, TProfile *yc){
+
+  if(xa){
+    if(fp1CalibRPXA)delete fp1CalibRPXA;
+    fp1CalibRPXA =  (TProfile*)xa->Clone(Form("%sCalib",xa->GetName()));
+  }
+  else{
+    Printf("%s:%d centroid histogram is 0x0",(char*)__FILE__,__LINE__);
+  }
+  if(ya){
+    if(fp1CalibRPYA)delete fp1CalibRPYA;
+    fp1CalibRPYA =  (TProfile*)ya->Clone(Form("%sCalib",ya->GetName()));
+  }
+  else{
+    Printf("%s:%d centroid histogram is 0x0",(char*)__FILE__,__LINE__);
+  }
+  if(xc){
+    if(fp1CalibRPXC)delete fp1CalibRPXC;
+    fp1CalibRPXC =  (TProfile*)xc->Clone(Form("%sCalib",xc->GetName()));
+  }
+  else{
+    Printf("%s:%d centroid histogram is 0x0",(char*)__FILE__,__LINE__);
+  }
+  if(ya){
+    if(fp1CalibRPYC)delete fp1CalibRPYC;
+    fp1CalibRPYC =  (TProfile*)yc->Clone(Form("%sCalib",yc->GetName()));
+  }
+  else{
+    Printf("%s:%d centroid histogram is 0x0",(char*)__FILE__,__LINE__);
+  }
+}
+
 Bool_t AliAnalysisTaskJetServices::IsEventSelected(const AliAODEvent* aod) const {
   if(!aod)return kFALSE;
   const AliAODVertex *vtx = aod->GetPrimaryVertex();
@@ -1017,6 +1063,48 @@ Bool_t AliAnalysisTaskJetServices::CalculateReactionPlaneAngleVZERO(AliAODEvent
   Double_t numYZNC = 0,numXZNC = 0,sumZNC = 0;
   Double_t meanXC = 0,meanYC = 0;
 
+
+
+  static Int_t iOldRun = -1;
+  static Int_t iFoundBin = -1;
+  if(aod->GetRunNumber()!=iOldRun){
+    // search only or the bin in case of new runs
+    iFoundBin = -1;
+    Int_t ib = fp1CalibRPYA->FindBin(aod->GetRunNumber());
+    Float_t err = fp1CalibRPYA->GetBinError(ib);
+    if(err>0){// value can be zero...
+      iFoundBin = ib;
+    }
+    else{
+      Int_t ibLo = ib-1;
+      Int_t ibUp = ib+1;
+      while(iFoundBin<0&&(ibLo>0||ibUp<=fp1CalibRPYA->GetNbinsX())){
+       err = fp1CalibRPYA->GetBinError(ibLo);
+       if(err>0){
+         iFoundBin = ibLo;
+       }
+       else{
+         err = fp1CalibRPYA->GetBinError(ibUp);
+         if(err>0)iFoundBin = ibUp;
+       }
+       ibUp++;
+       ibLo--;
+      }
+    }
+    iOldRun = aod->GetRunNumber();
+  }
+
+  Printf("%s:%d iFoundBin %d",(char*)__FILE__,__LINE__,iFoundBin);
+
+  if(iFoundBin>0){
+    meanXA = fp1CalibRPXA->GetBinContent(iFoundBin);
+    meanYA = fp1CalibRPYA->GetBinContent(iFoundBin);
+    meanXC = fp1CalibRPXC->GetBinContent(iFoundBin);
+    meanYC = fp1CalibRPYC->GetBinContent(iFoundBin);
+  }
+
+  Printf("%s:%d iFoundBin %1.3E %1.3E %1.3E %1.3E",(char*)__FILE__,__LINE__,meanXA,meanYA,meanXC,meanYC);
+
   for (int i=0; i<64; i++) {  
     Double_t mult = aodVZERO->GetMultiplicity(i);
     Double_t phi = v0phi[i];
@@ -1051,10 +1139,10 @@ Bool_t AliAnalysisTaskJetServices::CalculateReactionPlaneAngleVZERO(AliAODEvent
   if(fPsiVZEROC>TMath::Pi()){fPsiVZEROC-=TMath::Pi();}
   if(fPsiVZEROC<0){fPsiVZEROC+=TMath::Pi();}
   
-  fh2XYA->Fill(XA,YA);
+  fh2XYA->Fill(XA-meanXA,YA-meanYA); // control
   fp1RPXA->Fill(aod->GetRunNumber(),XA);
   fp1RPYA->Fill(aod->GetRunNumber(),YA);
-  fh2XYC->Fill(XC,YC);
+  fh2XYC->Fill(XC-meanXC,YC-meanYC); // control
   fp1RPXC->Fill(aod->GetRunNumber(),XC);
   fp1RPYC->Fill(aod->GetRunNumber(),YC);
   return kTRUE;
index 6ac81ee..602352f 100644 (file)
@@ -82,6 +82,9 @@ class AliAnalysisTaskJetServices : public AliAnalysisTaskSE
     virtual void SetMinTrackPt(Float_t f){fMinTrackPt = f;}
     virtual void SetTrackEtaWindow(Float_t f){fTrackRecEtaWindow = f;}
     virtual void SetRPMethod(Int_t i){fRPMethod = i;}
+    virtual void SetV0Centroids(TProfile *xa,TProfile *ya,
+                              TProfile *xc,TProfile *yc);
+
 
     Bool_t   CalculateReactionPlaneAngleVZERO(AliAODEvent *aod);
     Int_t   GetListOfTracks(TList *list);
@@ -159,6 +162,10 @@ class AliAnalysisTaskJetServices : public AliAnalysisTaskSE
     TProfile*     fp1RPYA;              //! mean YA vs run
     TProfile*     fp1RPXC;              //! mean XA vs run
     TProfile*     fp1RPYC;              //! mean YA vs run
+    TProfile*     fp1CalibRPXA;              // calib mean XA vs run
+    TProfile*     fp1CalibRPYA;              // calib YA vs run
+    TProfile*     fp1CalibRPXC;              // calib XA vs run
+    TProfile*     fp1CalibRPYC;              // calib YA vs run
     TH2F*         fh2RPAC;              //! RP A vs C 
     TH2F*         fh2RPAT;              //! RP A vs tracks 
     TH2F*         fh2RPCT;              //! RP C vs tracks 
index 82dc4f8..6b5bed1 100644 (file)
@@ -1,4 +1,4 @@
-AliAnalysisTaskJetServices *AddTaskJetServices()\r
+AliAnalysisTaskJetServices *AddTaskJetServices(TString v0CalibFile = "")\r
 {\r
    // Get the pointer to the existing analysis manager via the static access method.\r
    //==============================================================================\r
@@ -22,6 +22,18 @@ AliAnalysisTaskJetServices *AddTaskJetServices()
    \r
    AliAnalysisTaskJetServices* pwg4serv = new  AliAnalysisTaskJetServices("JetServices");\r
       \r
+   if(v0CalibFile.Length()){\r
+     TFile *fV0 = TFile::Open(v0CalibFile.Data());\r
+     if(fV0){\r
+       TDirectory *dir = (TDirectory*)fV0->Get("PWG4_services");\r
+       TList *list = (TList*)dir->Get("pwg4serv");\r
+       TProfile *xa = (TProfile*)list->FindObject("fp1RPXA");\r
+       TProfile *ya = (TProfile*)list->FindObject("fp1RPYA");\r
+       TProfile *xc = (TProfile*)list->FindObject("fp1RPXC");\r
+       TProfile *yc = (TProfile*)list->FindObject("fp1RPYC");\r
+       pwg4serv->SetV0Centroids(xa,ya,xc,yc);\r
+     }\r
+   }\r
 \r
    if(type == "AOD"){\r
      pwg4serv->SetAODInput(kTRUE);\r
index d10ee2a..4c9f2b8 100644 (file)
@@ -912,7 +912,7 @@ void AnalysisTrainPWG4Jets(const char *analysis_mode="local",
    if(iPWG4JetServices){
      gROOT->LoadMacro("$ALICE_ROOT/PWG4/macros/AddTaskJetServices.C");
      AliAnalysisTaskJetServices *taskjetServ = 0;
-     taskjetServ = AddTaskJetServices();
+     taskjetServ = AddTaskJetServices("/Users/kleinb/Downloads/PWG4_JetTasksOutput_110816a_000139107_tmp.root");
      if (!taskjetServ) ::Warning("AnalysisTrainPWG4Jets", "AliAnalysisTaskJetServices cannot run for this train conditions - EXCLUDED");
      if(kGridRunRange[0]>0)taskjetServ->SetRunRange(kGridRunRange[0],kGridRunRange[1]);
      else taskjetServ->SetRunRange(110000,160000);
index 34a6b4a..4035b0b 100644 (file)
@@ -39,7 +39,7 @@
   // bextra == 0 4 plus
   // bextra == 1 large pass1 split..
   // bextra == 2 3 plus
-  Int_t bRun = 802; Int_t bExtra = 0;  char* cDate = "110816a";
+  Int_t bRun = 802; Int_t bExtra = 0;  char* cDate = "110818a";
   //  Int_t bRun = 8102; Int_t bExtra = 1;  char* cDate = "110725a";
   iAODanalysis = 0; 
   // 1 == Read Jets and tracks form the input AOD
@@ -56,7 +56,7 @@
   if (kPluginMode.Contains("merge")){
     // currently merging this one...
     //       cDate = "110717a";
-    bRun = 802; Int_t bExtra = 0; cDate = "110719a";
+    bRun = 802; Int_t bExtra = 0; cDate = "110812a";
   }
   kUseDebug = kFALSE;
   // this is for testing just one run...