From 456396b8ad1244e31e23550f5f0b908e8c002d3b Mon Sep 17 00:00:00 2001 From: hristov Date: Mon, 2 Feb 2004 13:34:41 +0000 Subject: [PATCH] Adding new class for taking into account the cluster displacement (M.Ivanov) --- TRD/AliTRDclusterCorrection.cxx | 86 ++++++++++++++++++++++++++++++++ TRD/AliTRDclusterCorrection.h | 28 +++++++++++ TRD/TRDLinkDef.h | 1 + TRD/TRDcorrection.root | Bin 0 -> 14191 bytes TRD/libTRD.pkg | 3 +- 5 files changed, 117 insertions(+), 1 deletion(-) create mode 100644 TRD/AliTRDclusterCorrection.cxx create mode 100644 TRD/AliTRDclusterCorrection.h create mode 100644 TRD/TRDcorrection.root diff --git a/TRD/AliTRDclusterCorrection.cxx b/TRD/AliTRDclusterCorrection.cxx new file mode 100644 index 00000000000..95101624d75 --- /dev/null +++ b/TRD/AliTRDclusterCorrection.cxx @@ -0,0 +1,86 @@ +/************************************************************************** + * 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. * + **************************************************************************/ + +/////////////////////////////////////////////////////////////////////////////// +// // +// TRD clusterCorrection // +// marian.ivanov@cern.ch // +// // +/////////////////////////////////////////////////////////////////////////////// + +#include "AliTRDclusterCorrection.h" +#include "TFile.h" + +ClassImp(AliTRDclusterCorrection) + +AliTRDclusterCorrection * gTRDclusterCorrection=0; + +AliTRDclusterCorrection::AliTRDclusterCorrection() +{ + // + //default constructor for correction + // + for (Int_t iplane=0;iplane<6;iplane++) + for (Int_t itime=0;itime<30;itime++) + for(Int_t iangle=0;iangle<20;iangle++){ + fCorrections[iplane][itime][iangle][0]=0; + fCorrections[iplane][itime][iangle][1]=0; + } + fOffsetAngle =0; +} + + +void AliTRDclusterCorrection::SetCorrection(Int_t plane,Int_t timebin, Float_t angle, + Float_t value, Float_t sigma) +{ + Int_t iangle = int( (angle-fOffsetAngle+1.)*10.+0.5); + if (iangle<0) return; + if (iangle>=20) return; + fCorrections[plane][timebin][iangle][0] = value; + fCorrections[plane][timebin][iangle][1] = sigma; +} + +Float_t AliTRDclusterCorrection::GetCorrection(Int_t plane, Int_t timebin, Float_t angle) +{ + Int_t iangle = int( (angle-fOffsetAngle+1.)*10.+0.5); + if (iangle<0) return 0.; + if (iangle>=20) return 0.; + return fCorrections[plane][timebin][iangle][0]; +} + +Float_t AliTRDclusterCorrection::GetSigma(Int_t plane, Int_t timebin, Float_t angle) +{ + Int_t iangle = int( (angle-fOffsetAngle+1.)*10.+0.5); + if (iangle<0) return 1.; + if (iangle>=20) return 1.; + return fCorrections[plane][timebin][iangle][1]; +} + + +AliTRDclusterCorrection * AliTRDclusterCorrection::GetCorrection() +{ + if (gTRDclusterCorrection!=0) return gTRDclusterCorrection; + // + TFile * f = new TFile("$ALICE_ROOT/TRD/TRDcorrection.root"); + if (!f){ + //// + gTRDclusterCorrection = new AliTRDclusterCorrection(); + return gTRDclusterCorrection; + } + gTRDclusterCorrection = (AliTRDclusterCorrection*)f->Get("TRDcorrection"); + if (gTRDclusterCorrection==0) gTRDclusterCorrection = new AliTRDclusterCorrection(); + return gTRDclusterCorrection; + +} diff --git a/TRD/AliTRDclusterCorrection.h b/TRD/AliTRDclusterCorrection.h new file mode 100644 index 00000000000..32b9cc9174f --- /dev/null +++ b/TRD/AliTRDclusterCorrection.h @@ -0,0 +1,28 @@ +#ifndef ALITRDCLUSTERCORRECTON_H +#define ALITRDCLUSTERCORRECTON_H +/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * + * See cxx source for full Copyright notice */ + + +#include "TObject.h" + +class AliTRDclusterCorrection : public TObject { + + public: + AliTRDclusterCorrection(); + Float_t GetCorrection(Int_t plane, Int_t timebin, Float_t angle); + Float_t GetSigma(Int_t plane, Int_t timebin, Float_t angle); + Float_t GetOffsetAngle(){return fOffsetAngle;} + void SetOffsetAngle(Float_t angle){fOffsetAngle=angle;} + void SetCorrection(Int_t plane,Int_t timebin, Float_t angle, Float_t value,Float_t sigma); + Float_t GetAngle(Int_t i){return (i-10.)/10.+fOffsetAngle;} + static AliTRDclusterCorrection * GetCorrection(); + protected: + Float_t fCorrections[6][30][20][2]; + Float_t fOffsetAngle; + + ClassDef(AliTRDclusterCorrection,1) // ClusterCorrection for the TRD + +}; + +#endif diff --git a/TRD/TRDLinkDef.h b/TRD/TRDLinkDef.h index 2eaa788a997..82a7e417cf6 100644 --- a/TRD/TRDLinkDef.h +++ b/TRD/TRDLinkDef.h @@ -26,6 +26,7 @@ #pragma link C++ class AliTRDclusterizerV0+; #pragma link C++ class AliTRDclusterizerV1+; #pragma link C++ class AliTRDclusterizerMI+; +#pragma link C++ class AliTRDclusterCorrection+; #pragma link C++ class AliTRDrecPoint+; #pragma link C++ class AliTRDsegmentArray+; diff --git a/TRD/TRDcorrection.root b/TRD/TRDcorrection.root new file mode 100644 index 0000000000000000000000000000000000000000..b2c1acb478577a8e36915f301b699311632fdd2d GIT binary patch literal 14191 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