new OADB object type for 1/pt corrections
authorshahoian <shahoian@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 22 Jun 2012 16:43:58 +0000 (16:43 +0000)
committershahoian <shahoian@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 22 Jun 2012 16:43:58 +0000 (16:43 +0000)
OADB/AliOADBTrackFix.cxx [new file with mode: 0644]
OADB/AliOADBTrackFix.h [new file with mode: 0644]
OADB/CMakelibOADB.pkg
OADB/OADBLinkDef.h

diff --git a/OADB/AliOADBTrackFix.cxx b/OADB/AliOADBTrackFix.cxx
new file mode 100644 (file)
index 0000000..53ee544
--- /dev/null
@@ -0,0 +1,82 @@
+/**************************************************************************
+ * Copyright(c) 1998-2007, 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.                  *
+ **************************************************************************/
+
+/* $Id$ */
+
+//-------------------------------------------------------------------------
+//     OADB class for run dependent track fixing parameters
+//     Convention for phi-dependent data: 0 : 2pi
+//     Author: ruben.shahoyan@cern.ch
+//-------------------------------------------------------------------------
+
+#include <TGraph.h>
+#include <TMath.h>
+#include "AliOADBTrackFix.h"
+#include "AliLog.h"
+
+ClassImp(AliOADBTrackFix);
+
+//______________________________________________________________________________
+AliOADBTrackFix::AliOADBTrackFix()
+{
+  // Default constructor
+  for (int imd=0;imd<kNCorModes;imd++) {
+    for (int iside=0;iside<2;iside++) fPtInvCor[imd][iside] = 0;  
+    fXIniPtInvCorr[imd] = 0;
+  }
+  //
+}
+//______________________________________________________________________________
+AliOADBTrackFix::AliOADBTrackFix(const char* name) : 
+  TNamed(name, "TrackFix")
+{
+  // Constructor
+  for (int imd=0;imd<kNCorModes;imd++) {
+    for (int iside=0;iside<2;iside++) fPtInvCor[imd][iside] = 0;  
+    fXIniPtInvCorr[imd] = 0;
+  }  
+}
+
+//______________________________________________________________________________
+AliOADBTrackFix::~AliOADBTrackFix() 
+{
+  // destructor
+  for (int imd=0;imd<kNCorModes;imd++) for (int iside=0;iside<2;iside++) delete fPtInvCor[imd][iside];
+  //
+}
+
+//______________________________________________________________________________
+void AliOADBTrackFix::SetPtInvCorr(int mode,int side, const TGraph* gr)
+{
+  if (!gr || gr->GetN()<1) {
+    AliInfo(Form("Correction for side %d in mode %d is empty",side,mode));
+    fPtInvCor[mode][side] = 0;
+  }
+  fPtInvCor[mode][side] = gr;
+}
+
+//______________________________________________________________________________
+Double_t AliOADBTrackFix::GetPtInvCorr(int mode, double sideAfrac, double phi) const
+{
+  // calculate the correction for the track of given model at given phi, provided the sideAfrac fraction of its
+  // total lenght in TPC is in side A.
+  if (!fPtInvCor[mode][0] || !fPtInvCor[mode][1]) return 0; // no graph 
+  while (phi>2*TMath::Pi()) phi -= 2*TMath::Pi();
+  while (phi<0) phi += 2*TMath::Pi();  
+  int bin = int( phi/(2*TMath::Pi())*fPtInvCor[mode][0]->GetN());
+  return sideAfrac*fPtInvCor[mode][0]->GetY()[bin] + (1.-sideAfrac)*fPtInvCor[mode][1]->GetY()[bin];
+}
+
+
diff --git a/OADB/AliOADBTrackFix.h b/OADB/AliOADBTrackFix.h
new file mode 100644 (file)
index 0000000..306a313
--- /dev/null
@@ -0,0 +1,44 @@
+#ifndef ALIOADBTRACKKIX_H
+#define ALIOADBTRACKFIX_H
+/* Copyright(c) 1998-2007, ALICE Experiment at CERN, All rights reserved. *
+ * See cxx source for full Copyright notice                               */
+
+
+//-------------------------------------------------------------------------
+//     OADB class for run dependent track fixing parameters
+//     Convention for phi-dependent data: 0 : 2pi
+//     Author: ruben.shahoyan@cern.ch
+//-------------------------------------------------------------------------
+
+#include <TNamed.h>
+class TGraph;
+
+class AliOADBTrackFix : public TNamed 
+{
+ public :
+  enum CorMode_t {kCorModeGlob, kCorModeTPCInner, kNCorModes};
+  //
+  AliOADBTrackFix();
+  AliOADBTrackFix(const char* name);
+  virtual ~AliOADBTrackFix();
+  //
+  Double_t GetPtInvCorr(int mode, double sideAfrac, double phi=0) const;
+  //
+  TGraph*  GetPtInvCorrGraph(int mode,int side)             const {return (TGraph*)fPtInvCor[mode][side];}
+  Double_t GetXIniPtInvCorr(int mode)                       const {return fXIniPtInvCorr[mode];}
+  //
+  void     SetPtInvCorr(int mode,int side, const TGraph* gr);
+  void     SetXIniPtInvCorr(int mode, double x=0)                 {fXIniPtInvCorr[mode] = x;}
+  //
+ private:
+  AliOADBTrackFix(const AliOADBTrackFix& cont); 
+  AliOADBTrackFix& operator=(const AliOADBTrackFix& cont);
+
+ protected:
+  const TGraph   *fPtInvCor[kNCorModes][2];    // graphs with 1/pt correction vs phi for A,C sides
+  Double_t        fXIniPtInvCorr[kNCorModes];  // if >0 use as the reper X for slope,position correction of corresponding mode
+  //
+  ClassDef(AliOADBTrackFix, 1);
+};
+
+#endif
index f3c076b1f252d9f0ab9222bb89dc3424ad4f8274..7168173d1db7e093dc85afa05eab537568616053 100644 (file)
@@ -4,6 +4,7 @@ set ( SRCS
   AliOADBPhysicsSelection.cxx 
   AliOADBFillingScheme.cxx 
   AliOADBTriggerAnalysis.cxx 
   AliOADBPhysicsSelection.cxx 
   AliOADBFillingScheme.cxx 
   AliOADBTriggerAnalysis.cxx 
+  AliOADBTrackFix.cxx 
   )
 
 string(REPLACE ".cxx" ".h" HDRS  "${SRCS}")
   )
 
 string(REPLACE ".cxx" ".h" HDRS  "${SRCS}")
index 69dde71796f14bf6360784e0d733c58ac94a9ee2..fbfc6fd735bf388913979ec8772e349e186017e4 100644 (file)
@@ -11,5 +11,6 @@
 #pragma link C++ class AliOADBPhysicsSelection+;
 #pragma link C++ class AliOADBFillingScheme+;
 #pragma link C++ class AliOADBTriggerAnalysis+;
 #pragma link C++ class AliOADBPhysicsSelection+;
 #pragma link C++ class AliOADBFillingScheme+;
 #pragma link C++ class AliOADBTriggerAnalysis+;
+#pragma link C++ class AliOADBTrackFix+;
 
 #endif
 
 #endif