updates from Alla
authorantoniol <antoniol@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 9 May 2013 09:09:48 +0000 (09:09 +0000)
committerantoniol <antoniol@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 9 May 2013 09:09:48 +0000 (09:09 +0000)
ANALYSIS/TenderSupplies/AliT0TenderSupply.cxx

index 6d31ef0..1cce68e 100644 (file)
-/**************************************************************************
- * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
- *                                                                        *
- * Author: The ALICE Off-line Project.                                    *
- * Contributors are mentioned in the code where appropriate.              *
- *                                                                        *
- * Permission to use, copy, modify and distribute this software and its   *
- * documentation strictly for non-commercial purposes is hereby granted   *
- * without fee, provided that the above copyright notice appears in all   *
- * copies and that both the copyright notice and this permission notice   *
- * appear in the supporting documentation. The authors make no claims     *
- * about the suitability of this software for any purpose. It is          *
- * provided "as is" without express or implied warranty.                  *
- **************************************************************************/
-
-///////////////////////////////////////////////////////////////////////////
-//                                                                       //
-//  T0 Tender supply    //
-//  //
-//                                                                       //
-///////////////////////////////////////////////////////////////////////////
-
-#include <AliESDEvent.h>
-#include <AliESDtrack.h>
-
-#include <AliTender.h>
-#include <AliT0TenderSupply.h>
-#include <AliCDBManager.h>
-#include <AliCDBEntry.h>
-#include <AliT0CalibSeasonTimeShift.h>
-#include <AliESDInputHandler.h>
-#include <AliAnalysisManager.h>
-#include <AliProdInfo.h>
-
-ClassImp(AliT0TenderSupply)
-
-//________________________________________________________________________
-AliT0TenderSupply::AliT0TenderSupply():
-  AliTenderSupply(),
-  fCorrectMeanTime(kFALSE),
-  fCorrectStartTimeOnAmplSatur(kFALSE),
-  fAmplitudeThreshold(100), 
-  fPass4LHC11aCorrection(kFALSE)
-{
-  //
-  // default constructor
-  //
-  for(int i=0; i<4; i++) fTimeOffset[i]=0;
-}
-
-//________________________________________________________________________
-AliT0TenderSupply::AliT0TenderSupply(const char *name, const AliTender *tender):
-  AliTenderSupply(name,tender),
-  fCorrectMeanTime(kFALSE),
-  fCorrectStartTimeOnAmplSatur(kFALSE),
-  fAmplitudeThreshold(100),
-  fPass4LHC11aCorrection(kFALSE)
-{
-  //
-  // constructor
-  //
-  for(int i=0; i<4; i++) fTimeOffset[i]=0;
-
-}
-
-//________________________________________________________________________
-AliT0TenderSupply::~AliT0TenderSupply(){
-  //
-  // destructor
-  //
-  
-}
-
-//________________________________________________________________________
-void AliT0TenderSupply::Init(){
-  // Init
-  //
-  AliLog::SetClassDebugLevel("AliT0TenderSupply",10); 
-  Int_t run = fTender->GetRun();
-  if (run == 0) return;    // to skip first init, when we don't have yet a run number
-
-  // reset to no-action
-  fCorrectMeanTime = kFALSE; //reset
-  for(int i=0; i<4; i++) fTimeOffset[i]=0;
-  fPass4LHC11aCorrection=kFALSE;
-  fCorrectStartTimeOnAmplSatur = kFALSE;
-
-  // check if MC
-  AliAnalysisManager *mgr=AliAnalysisManager::GetAnalysisManager();
-  AliVEventHandler *inputHandler=mgr->GetInputEventHandler();
-  if (!inputHandler) return;
-  TList *uiList = inputHandler->GetUserInfo();
-  AliProdInfo prodInfo(uiList);
-  prodInfo.List();
-  Bool_t fIsMc = kFALSE;
-  if ( mgr->GetMCtruthEventHandler() ) fIsMc=kTRUE;
-  if (prodInfo.IsMC() == kTRUE) fIsMc=kTRUE;                // protection
-
-  if (!fIsMc) {  // we consider actions only for data, not for MC
-
-    // align T0s for LHC10d/LHC10e
-    if ((run>=122195 &&  run<=126437) || (run>=127712 && run<=130850)) {
-      AliInfo("Loading TZERO OCBD entries");
-      fCorrectMeanTime=kTRUE;
-      AliCDBManager* ocdbMan = AliCDBManager::Instance();
-      ocdbMan->SetRun(fTender->GetRun());    
-      AliCDBEntry *entry = ocdbMan->Get("T0/Calib/TimeAdjust/");
-      if(entry) {
-      AliT0CalibSeasonTimeShift *clb = (AliT0CalibSeasonTimeShift*) entry->GetObject();
-      Float_t *t0means = clb->GetT0Means();
-      for (Int_t i=0;i<4;i++) fTimeOffset[i] = t0means[i];
-      } else {
-       for (Int_t i=0;i<4;i++) fTimeOffset[i] = 0;
-       AliWarning("T0Tender no T0 entry found T0shift set to 0");
-      }
-    }  
-    
-    // LHC11a pass4
-    if (run>=139699 && run<=146860) {
-      Int_t recoPass = prodInfo.GetRecoPass();
-      if (recoPass < 0) {
-       AliESDInputHandler *esdIH = dynamic_cast<AliESDInputHandler*>(fTender->GetESDhandler());
-       if (esdIH) {
-         TTree *tree= (TTree*)esdIH->GetTree();
-         TFile *file= (TFile*)tree->GetCurrentFile();
-         if (file) {
-           TString fileName(file->GetName());
-           if (fileName.Contains("pass4") ) recoPass=4;
-         }
-       }
-      }
-      if (recoPass == 4) fPass4LHC11aCorrection=kTRUE;
-    }
-       
-    // LHC11h
-    fAmplitudeThreshold = 100; //in mips
-    if(167693<= run && run<=170593){  
-      fCorrectStartTimeOnAmplSatur = kTRUE;
-      fAmplitudeThreshold = 50; //in mips
-    }
-
-  }
-
-
-  AliInfo("|******************************************************|");
-  AliInfo(Form("|    Alice T0 Tender Initialisation (Run %d)       |",run));
-  AliInfo("|    Settings:                                         |");
-  AliInfo(Form("|    Monte Carlo flag               :  %d               |",fIsMc));
-  AliInfo(Form("|    Adjust Offsets (LHC10d/LHC10e) :  %d               |",fCorrectMeanTime));
-  AliInfo(Form("|    LHC11a pass4 patch   (LHC11a)  :  %d               |",fPass4LHC11aCorrection));
-  AliInfo(Form("|    Amplitude Correction (LHC11h)  :  %d               |",fCorrectStartTimeOnAmplSatur));
-  AliInfo("|******************************************************|");
-
-}
-
-//________________________________________________________________________
-void AliT0TenderSupply::ProcessEvent(){
-
-    //
-    // loop over all online T0 candidates and flag
-    // selected daughter tracks using the status bis of the TObject
-    //
-
-    AliESDEvent *event=fTender->GetEvent();
-    if (!event) return;
-
-    //Do something when the run number changed, like loading OCDB entries etc.
-    if(fTender->RunChanged()) Init();
-
-    
-    if(fPass4LHC11aCorrection) {
-      const Double32_t* mean = event->GetT0TOF();
-      event->SetT0TOF(0, (mean[1]+mean[2])/2.);
-     }
-    if(fCorrectStartTimeOnAmplSatur){
-        //correct A side ORA on amplitude saturation
-        const Double32_t* time = event->GetT0time();
-        const Double32_t* amplitude = event->GetT0amplitude();
-
-        Int_t idxOfFirstPmtA = -1;
-        Double32_t timeOrA   = 99999;
-        for(int ipmt=12; ipmt<24; ipmt++){ //loop over A side
-            if( amplitude[ipmt] < fAmplitudeThreshold){
-                if( time[ipmt] > -200 && time[ipmt]!=0 && time[ipmt] < timeOrA ){ 
-                    timeOrA        = time[ipmt];
-                    idxOfFirstPmtA = ipmt;
-                }
-            }
-        }
-
-        if(idxOfFirstPmtA>-1){ //a hit in aside with less than 40 mips
-            const Double32_t* mean = event->GetT0TOF();
-            Double32_t timeOrC = mean[2];
-            Double32_t timeOrAplusOrC = (timeOrA+timeOrC)/2;
-
-            event->SetT0TOF(0, timeOrAplusOrC);
-            event->SetT0TOF(1, timeOrA);
-        }
-    }
-
-    if(fCorrectMeanTime) {
-      // correct mean time offsets  
-      const Double32_t* mean = event->GetT0TOF();
-      for(int it0=0; it0<3; it0++){
-       if(-2000 < mean[it0]){
-         event->SetT0TOF(it0, mean[it0] - fTimeOffset[it0]); 
-       }
-      }
-    }
-
-
-}
-
-
+/**************************************************************************\r
+ * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *\r
+ *                                                                        *\r
+ * Author: The ALICE Off-line Project.                                    *\r
+ * Contributors are mentioned in the code where appropriate.              *\r
+ *                                                                        *\r
+ * Permission to use, copy, modify and distribute this software and its   *\r
+ * documentation strictly for non-commercial purposes is hereby granted   *\r
+ * without fee, provided that the above copyright notice appears in all   *\r
+ * copies and that both the copyright notice and this permission notice   *\r
+ * appear in the supporting documentation. The authors make no claims     *\r
+ * about the suitability of this software for any purpose. It is          *\r
+ * provided "as is" without express or implied warranty.                  *\r
+ **************************************************************************/\r
+\r
+///////////////////////////////////////////////////////////////////////////\r
+//                                                                       //\r
+//  T0 Tender supply    //\r
+//  //\r
+//                                                                       //\r
+///////////////////////////////////////////////////////////////////////////\r
+\r
+#include <AliESDEvent.h>\r
+#include <AliESDtrack.h>\r
+#include <AliTender.h>\r
+#include <AliT0TenderSupply.h>\r
+#include <AliCDBManager.h>\r
+#include <AliCDBEntry.h>\r
+#include <AliT0CalibSeasonTimeShift.h>\r
+#include <AliESDInputHandler.h>\r
+\r
+ClassImp(AliT0TenderSupply)\r
+\r
+//________________________________________________________________________\r
+AliT0TenderSupply::AliT0TenderSupply():\r
+  AliTenderSupply(),\r
+  fCorrectMeanTime(kFALSE),\r
+  fCorrectStartTimeOnAmplSatur(kFALSE),\r
+  fAmplitudeThreshold(100), \r
+  fPass4LHC11aCorrection(kFALSE)\r
+{\r
+  //\r
+  // default constructor\r
+  //\r
+  for(int i=0; i<4; i++) fTimeOffset[i]=0;\r
+}\r
+\r
+//________________________________________________________________________\r
+AliT0TenderSupply::AliT0TenderSupply(const char *name, const AliTender *tender):\r
+  AliTenderSupply(name,tender),\r
+  fCorrectMeanTime(kFALSE),\r
+  fCorrectStartTimeOnAmplSatur(kFALSE),\r
+  fAmplitudeThreshold(100),\r
+  fPass4LHC11aCorrection(kFALSE)\r
+{\r
+  //\r
+  // constructor\r
+  //\r
+  for(int i=0; i<4; i++) fTimeOffset[i]=0;\r
+\r
+}\r
+\r
+//________________________________________________________________________\r
+AliT0TenderSupply::~AliT0TenderSupply(){\r
+  //\r
+  // destructor\r
+  //\r
+  \r
+}\r
+\r
+//________________________________________________________________________\r
+void AliT0TenderSupply::Init(){\r
+  // Init\r
+  //\r
+  Int_t run = fTender->GetRun();\r
+  if (run == 0) return;    // to skip first init, when we don't have yet a run number\r
+  Printf("----------- TZERO Tender ----------------");\r
+\r
+  fCorrectMeanTime = kFALSE; //reset\r
+  for(int i=0; i<4; i++) fTimeOffset[i]=0;\r
+\r
+  // align T0s for LHC10def periods \r
+  if (fTender->GetRun()>=122195 &&  fTender->GetRun()<=130850){\r
+    Printf("Loading TZERO OCBD entries");\r
+    fCorrectMeanTime=kTRUE;\r
+    Printf("fCorrectMeanTime %i \n", fCorrectMeanTime);\r
\r
+    AliCDBManager* ocdbMan = AliCDBManager::Instance();\r
+    ocdbMan->SetRun(fTender->GetRun());    \r
+    AliCDBEntry *entry = ocdbMan->Get("T0/Calib/TimeAdjust/");\r
+    if(entry) {\r
+      AliT0CalibSeasonTimeShift *clb = (AliT0CalibSeasonTimeShift*) entry->GetObject();\r
+      Float_t *t0means = clb->GetT0Means();\r
+      for (Int_t i=0;i<4;i++) fTimeOffset[i] = t0means[i];\r
+    } else {\r
+      for (Int_t i=0;i<4;i++) fTimeOffset[i] = 0;\r
+      AliWarning("T0Tender no T0 entry found T0shift set to 0");\r
+    }\r
+  }  \r
+       \r
+  // LHC11h\r
+  fCorrectStartTimeOnAmplSatur = kFALSE;\r
+  fAmplitudeThreshold = 100; //in mips\r
+  if(167693<= run && run<=170593){  \r
+    fCorrectStartTimeOnAmplSatur = kTRUE;\r
+    fAmplitudeThreshold = 50; //in mips\r
+  }\r
+\r
+\r
+\r
+}\r
+\r
+//________________________________________________________________________\r
+void AliT0TenderSupply::ProcessEvent(){\r
+\r
+    //\r
+    // loop over all online T0 candidates and flag\r
+    // selected daughter tracks using the status bis of the TObject\r
+    //\r
+\r
+    AliESDEvent *event=fTender->GetEvent();\r
+    if (!event) return;\r
+     //...........................................\r
+   //Do something when the run number changed, like loading OCDB entries etc.\r
+     if(fTender->RunChanged()) Init();\r
+    \r
+   if(fTender->RunChanged()){\r
+      Init();\r
+      if (fTender->GetRun()>=139699&&  fTender->GetRun()<=146860){\r
+        AliESDInputHandler *esdIH = dynamic_cast<AliESDInputHandler*>  (fTender->GetESDhandler());\r
+        if (esdIH) {\r
+          TTree *tree= (TTree*)esdIH->GetTree();\r
+          TFile *file= (TFile*)tree->GetCurrentFile();\r
+         if (file){\r
+            TString fileName(file->GetName());\r
+           if (fileName.Contains("pass4") ) fPass4LHC11aCorrection=kTRUE;\r
+         }\r
+       }\r
+      }\r
+    }\r
+    \r
+    if(fPass4LHC11aCorrection) {\r
+      const Double32_t* mean = event->GetT0TOF();\r
+      event->SetT0TOF(0, (mean[1]+mean[2])/2.);\r
\r
+    }\r
+    //...........................................\r
+    if(fCorrectStartTimeOnAmplSatur){\r
+        //correct A side ORA on amplitude saturation\r
+        const Double32_t* time = event->GetT0time();\r
+        const Double32_t* amplitude = event->GetT0amplitude();\r
+\r
+        Int_t idxOfFirstPmtA = -1;\r
+        Double32_t timeOrA   = 99999;\r
+        for(int ipmt=12; ipmt<24; ipmt++){ //loop over A side\r
+            if( amplitude[ipmt] < fAmplitudeThreshold){\r
+                if( time[ipmt] > -200 && time[ipmt]!=0 && time[ipmt] < timeOrA ){ \r
+                    timeOrA        = time[ipmt];\r
+                    idxOfFirstPmtA = ipmt;\r
+                }\r
+            }\r
+        }\r
+\r
+        if(idxOfFirstPmtA>-1){ //a hit in aside with less than 40 mips\r
+            const Double32_t* mean = event->GetT0TOF();\r
+            Double32_t timeOrC = mean[2];\r
+            Double32_t timeOrAplusOrC = (timeOrA+timeOrC)/2;\r
+\r
+            event->SetT0TOF(0, timeOrAplusOrC);\r
+            event->SetT0TOF(1, timeOrA);\r
+        }\r
+    }\r
+\r
+    //...........................................\r
+    if(fCorrectMeanTime) {\r
+      // correct mean time offsets  \r
+      const Double32_t* mean = event->GetT0TOF();\r
+      for(int it0=0; it0<3; it0++){\r
+       if( mean[it0] < 10000 || (mean[it0]>6499000 && mean[it0]<6555000 ) )\r
+         event->SetT0TOF(it0, mean[it0] - fTimeOffset[it0]); \r
+      }\r
+    }\r
+    //...........................................\r
+\r
+\r
+}\r
+\r
+\r