From 960c5431439ec16e4f3cdd55572bad84551b5040 Mon Sep 17 00:00:00 2001 From: coppedis Date: Sun, 10 Feb 2013 10:18:49 +0000 Subject: [PATCH] Adding stuff to follow gain dependence on rate for LHC13d-e-f periods --- .../SaturationCalib/Run0_999999999_v0_s0.root | Bin 0 -> 2549 bytes ZDC/AliZDCReconstructor.cxx | 73 +++++++++-- ZDC/AliZDCReconstructor.h | 5 +- ZDC/AliZDCSaturationCalib.cxx | 119 ++++++++++++++++++ ZDC/AliZDCSaturationCalib.h | 43 +++++++ ZDC/CMakelibZDCbase.pkg | 1 + ZDC/ZDCbaseLinkDef.h | 1 + 7 files changed, 233 insertions(+), 9 deletions(-) create mode 100644 OCDB/ZDC/Calib/SaturationCalib/Run0_999999999_v0_s0.root create mode 100644 ZDC/AliZDCSaturationCalib.cxx create mode 100644 ZDC/AliZDCSaturationCalib.h diff --git a/OCDB/ZDC/Calib/SaturationCalib/Run0_999999999_v0_s0.root b/OCDB/ZDC/Calib/SaturationCalib/Run0_999999999_v0_s0.root new file mode 100644 index 0000000000000000000000000000000000000000..eb4d89e143049cde5afce55931225244dbe7fc96 GIT binary patch literal 2549 zcmcImc{J2*8~%+wMj0=`~LgB?~k7IyU%k!=Q;QNyRPdz=Ug|LM4|!!D;od+ z9{||H=0pG|kKhD|6Pw8_`as z2Dt!%+|Hc80RX>?6`p`~ft{sb$rKpr$`z~+o`Qjy5%5kNTreUw2xf0?aT4ZXVGc9L z5bzgZ&KPO{8AHXBh<~4*0*G+5(Z3ct5RRt6waB}qeoa?^f0qN72LP0FD0Fgy%LM?0 z+WwnBAn>jZpkQvj&aMt1!fw3?hcSnzC6P+L_MbW6VI#x>fM5{ki*cwBZh}jO>OF_@ zANXsTx39TNrP|Aq)wNJ%l{j$!HBNj}#9*h5@d#EGb0|uhCZ?6aybbh3Sx2)9)q%m^ zFewlH<^5Ub!5+mcLON-NfdUHU(XOvfttj$*8iC4YJh`5ejB@bgL#HR+4eJ6oLVAj2 z0?=2Drg~75fr9BBPJl_4siVABaWg~{G1HJ%Cp?jRV{1B(rG)-1=C6l3Q(2FBZ01aI z!^aRt?E}jV`q>4`eMkJT-E=wYu%-bV=o7E94iBY8Z`4}EzLNW#I9iC8ahZ15B+*qKVkV*IgWB=HhS!h#fVfpATUfG7H4eK;G1$`M9T04Npb2-A%6jF&qL z+144JSN#xpz4vrgf*`3uteR++{Ahtdlj3>*l~(j)Fo0%6x6AA-(xEpzz=b~XHWPO= zoA*=~HkC$iOhwy|)0KYCmolQ*8$C9abpNLW;m3mA;g`CzDKB=ywtMkEf>QG(^YJz; zRcc>YaD;1V>%P_j}q)0 zV)U%PsA&HK=71P&QNqcnA{>2zQg1$*ue7>oNP5c&^o+8^yV5b2VWFUl#UI4d*4DDV z4S-FhSO$cPF~hUSGT@FR7_ctU3a*wroonXYyY-lHDIqjAlM_JV!>!*^$1 zAsmaca)^b65XMQ_>Fg%Y{@=xm%PTX}$}o;vV_TZ58`I{V`r4<52X19~wIy6l(PiD9 zUHwAu`&`zqt$W%E=i|A=tIi~7^mYps)@1N|%Cbtd?ft9D%dTbWYQ&eVIY}JzON(B^ zqSl=i`aflTkV?O(dkeR(ZdoVs4q<}7hazP@t;P1tnAUDVr^dZ_XZ>=!!F$!|p_^V) z66t337b(%!$Ng{BC*-n)kDvO`GW8zPcy2KtAN%%}>FcOmxYqs+pEEPxf)%6VTl{>* z)TYKp^wejsbewR@fq}=C3G?^Hl^Q24adAl|H*GCfMLqja9~WrfYwbSM1!j*(C8@Z- zyXb|`5jmJfP08z#Jcf7gPmm6k6qPbrw~%kKV6s|S?p-E(pWSj!^1XRG-|m?@)pf~X zb$p`WX+Yz&)nG$$*@h3A@Z^AB&i3}oYv^-dN|syKRK0d*wylOYg=m(rNAM)i?HP=mdS36eTSSfQn_#N575D9XlA>{NKdI?3;S)|d^!c(NWI-`l2E!3?vIO$xViR zYNisE%3^a!x|1o@unYoYf4owbn13to)M2;UY-!t%`YTOK$qUO(^Up@I{j8VfR)@SM zhh}Sn+ObczZ1^6W*Q^VuCmjj#U1;RURF8x z46yM~;UP(;A=-A_TRjKi1pU^0qi7^uGz@}_25ua`bkIfPc|wcUNhC=#kTt>vQt6Jd{=m zXXA4Rsy3qjHORBZeR8*lK4&(t-4jesr@>I%qA zA#RSAf{O~5W0#K1zITEl@u4QRf)AD@2O%6IRf2rvyX3Ld1C zor9Rs_`KW zxu@>Kqqe+-+DNaU&)cSXjrzA%KM5*aZ`N3kJ!@W|9h!;;yX4VbLC3d5`f83*DwC{R z{?vg7=8@d=5_1>QMC~+kky&=D)ihXcDybx9z+{$LN-mo&qpK{X-p3L&76K zU!7f6M0>x&Kqf<>jKY2X7pwZM{@CWv5q<~eI7c~m#xUUe33tZe_%YW{e%*}0>A&mY g|F5fa$|AU6h5rqfJ9cr*?-zpQK;6R*(n|&Y32}@ly#N3J literal 0 HcmV?d00001 diff --git a/ZDC/AliZDCReconstructor.cxx b/ZDC/AliZDCReconstructor.cxx index 81c5f2f4700..f5db66aab51 100644 --- a/ZDC/AliZDCReconstructor.cxx +++ b/ZDC/AliZDCReconstructor.cxx @@ -41,6 +41,7 @@ #include "AliZDCReconstructor.h" #include "AliZDCPedestals.h" #include "AliZDCEnCalib.h" +#include "AliZDCSaturationCalib.h" #include "AliZDCTowerCalib.h" #include "AliZDCMBCalib.h" #include "AliZDCTDCCalib.h" @@ -59,6 +60,7 @@ AliZDCMBCalib *AliZDCReconstructor::fgMBCalibData=0; //calibration parameters f AliZDCReconstructor:: AliZDCReconstructor() : fPedData(GetPedestalData()), fEnCalibData(GetEnergyCalibData()), + fSatCalibData(GetSaturationCalibData()), fTowCalibData(GetTowerCalibData()), fTDCCalibData(GetTDCCalibData()), fRecoMode(0), @@ -81,6 +83,7 @@ AliZDCReconstructor::~AliZDCReconstructor() // if(fgRecoParam) delete fgRecoParam; if(fPedData) delete fPedData; if(fEnCalibData) delete fEnCalibData; + if(fSatCalibData) delete fSatCalibData; if(fTowCalibData) delete fTowCalibData; if(fgMBCalibData) delete fgMBCalibData; if(fESDZDC) delete fESDZDC; @@ -734,10 +737,14 @@ void AliZDCReconstructor::ReconstructEventpp(TTree *clustersTree, equalCoeffZP2[ji] = fTowCalibData->GetZP2EqualCoeff(ji); } // --- Energy calibration factors ------------------------------------ - Float_t calibEne[6]; + Float_t calibEne[6], calibSatZNA[4], calibSatZNC[4]; // **** Energy calibration coefficient set to 1 // **** (no trivial way to calibrate in p-p runs) for(Int_t ij=0; ij<6; ij++) calibEne[ij] = fEnCalibData->GetEnCalib(ij); + for(Int_t ij=0; ij<4; ij++){ + calibSatZNA[ij] = fSatCalibData->GetZNASatCalib(ij); + calibSatZNC[ij] = fSatCalibData->GetZNCSatCalib(ij); + } // ****** Equalization of detector responses Float_t equalTowZN1[10], equalTowZN2[10], equalTowZP1[10], equalTowZP2[10]; @@ -756,7 +763,7 @@ void AliZDCReconstructor::ReconstructEventpp(TTree *clustersTree, } } // Ch. debug - /*printf("\n ------------- EQUALIZATION -------------\n"); + printf("\n ------------- EQUALIZATION -------------\n"); printf(" ADCZN1 [%1.2f %1.2f %1.2f %1.2f %1.2f]\n", equalTowZN1[0],equalTowZN1[1],equalTowZN1[2],equalTowZN1[3],equalTowZN1[4]); printf(" ADCZP1 [%1.2f %1.2f %1.2f %1.2f %1.2f]\n", @@ -765,7 +772,25 @@ void AliZDCReconstructor::ReconstructEventpp(TTree *clustersTree, equalTowZN2[0],equalTowZN2[1],equalTowZN2[2],equalTowZN2[3],equalTowZN2[4]); printf(" ADCZP2 [%1.2f %1.2f %1.2f %1.2f %1.2f]\n", equalTowZP2[0],equalTowZP2[1],equalTowZP2[2],equalTowZP2[3],equalTowZP2[4]); - printf(" ----------------------------------------\n");*/ + printf(" ----------------------------------------\n"); + + // *** p-A RUN 2013 -> new calibration object + // to take into account saturation in ZN PMC + // -> 5th order pol. fun. to be applied BEFORE en. calibration + equalTowZN1[0] = equalTowZN1[0] + calibSatZNC[0]*equalTowZN1[0]*equalTowZN1[0] + + calibSatZNC[1]*equalTowZN1[0]*equalTowZN1[0]*equalTowZN1[0] + + calibSatZNC[2]*equalTowZN1[0]*equalTowZN1[0]*equalTowZN1[0]*equalTowZN1[0] + + calibSatZNC[3]*equalTowZN1[0]*equalTowZN1[0]*equalTowZN1[0]*equalTowZN1[0]*equalTowZN1[0]; + equalTowZN2[0] = equalTowZN2[0] + calibSatZNA[0]*equalTowZN2[0]*equalTowZN2[0] + + calibSatZNA[1]*equalTowZN2[0]*equalTowZN2[0]*equalTowZN2[0] + + calibSatZNA[2]*equalTowZN2[0]*equalTowZN2[0]*equalTowZN2[0]*equalTowZN2[0] + + calibSatZNA[3]*equalTowZN2[0]*equalTowZN2[0]*equalTowZN2[0]*equalTowZN2[0]*equalTowZN2[0]; + + // Ch. debug + printf("\n ------------- SATURATION CORRECTION -------------\n"); + printf(" ZNC PMC %1.2f\n", equalTowZN1[0]); + printf(" ZNA PMC %1.2f\n", equalTowZN2[0]); + printf(" ----------------------------------------\n"); // ****** Summed response for hadronic calorimeter (SUMMED and then CALIBRATED!) Float_t calibSumZN1[]={0,0}, calibSumZN2[]={0,0}, calibSumZP1[]={0,0}, calibSumZP2[]={0,0}; @@ -930,10 +955,14 @@ void AliZDCReconstructor::ReconstructEventPbPb(TTree *clustersTree, equalCoeffZP2[ji] = fTowCalibData->GetZP2EqualCoeff(ji); } // --- Energy calibration factors ------------------------------------ - Float_t calibEne[6]; - // The energy calibration object already takes into account of E_beam - // -> the value from the OCDB can be directly used (Jul 2010) + Float_t calibEne[6], calibSatZNA[4], calibSatZNC[4]; + // **** Energy calibration coefficient set to 1 + // **** (no trivial way to calibrate in p-p runs) for(Int_t ij=0; ij<6; ij++) calibEne[ij] = fEnCalibData->GetEnCalib(ij); + for(Int_t ij=0; ij<4; ij++){ + calibSatZNA[ij] = fSatCalibData->GetZNASatCalib(ij); + calibSatZNC[ij] = fSatCalibData->GetZNCSatCalib(ij); + } // ****** Equalization of detector responses Float_t equalTowZN1[10], equalTowZN2[10], equalTowZP1[10], equalTowZP2[10]; @@ -965,6 +994,18 @@ void AliZDCReconstructor::ReconstructEventPbPb(TTree *clustersTree, printf(" ----------------------------------------\n"); */ + // *** p-A RUN 2013 -> new calibration object + // to take into account saturation in ZN PMC + // -> 5th order pol. fun. to be applied BEFORE en. calibration + equalTowZN1[0] = equalTowZN1[0] + calibSatZNC[0]*equalTowZN1[0]*equalTowZN1[0] + + calibSatZNC[1]*equalTowZN1[0]*equalTowZN1[0]*equalTowZN1[0] + + calibSatZNC[2]*equalTowZN1[0]*equalTowZN1[0]*equalTowZN1[0]*equalTowZN1[0] + + calibSatZNC[3]*equalTowZN1[0]*equalTowZN1[0]*equalTowZN1[0]*equalTowZN1[0]*equalTowZN1[0]; + equalTowZN2[0] = equalTowZN2[0] + calibSatZNA[0]*equalTowZN2[0]*equalTowZN2[0] + + calibSatZNA[1]*equalTowZN2[0]*equalTowZN2[0]*equalTowZN2[0] + + calibSatZNA[2]*equalTowZN2[0]*equalTowZN2[0]*equalTowZN2[0]*equalTowZN2[0] + + calibSatZNA[3]*equalTowZN2[0]*equalTowZN2[0]*equalTowZN2[0]*equalTowZN2[0]*equalTowZN2[0]; + // ****** Summed response for hadronic calorimeter (SUMMED and then CALIBRATED!) Float_t calibSumZN1[]={0,0}, calibSumZN2[]={0,0}, calibSumZP1[]={0,0}, calibSumZP2[]={0,0}; for(Int_t gi=0; gi<5; gi++){ @@ -993,9 +1034,9 @@ void AliZDCReconstructor::ReconstructEventPbPb(TTree *clustersTree, calibSumZP2[1] = calibSumZP2[1]*calibEne[3]; // Float_t sumZEM[]={0,0}, calibZEM1[]={0,0}, calibZEM2[]={0,0}; - calibZEM1[0] = corrADCZEM1[0]*calibEne[4]*8.; + calibZEM1[0] = corrADCZEM1[0]*calibEne[4]; calibZEM1[1] = corrADCZEM1[1]*calibEne[4]; - calibZEM2[0] = corrADCZEM2[0]*calibEne[5]*8.; + calibZEM2[0] = corrADCZEM2[0]*calibEne[5]; calibZEM2[1] = corrADCZEM2[1]*calibEne[5]; for(Int_t k=0; k<2; k++) sumZEM[k] = calibZEM1[k] + calibZEM2[k]; @@ -1441,6 +1482,22 @@ AliZDCEnCalib* AliZDCReconstructor::GetEnergyCalibData() const return calibdata; } +//_____________________________________________________________________________ +AliZDCSaturationCalib* AliZDCReconstructor::GetSaturationCalibData() const +{ + + // Getting energy and equalization calibration object for ZDC set + + AliCDBEntry *entry = AliCDBManager::Instance()->Get("ZDC/Calib/SaturationCalib"); + if(!entry) AliFatal("No calibration data loaded!"); + entry->SetOwner(kFALSE); + + AliZDCSaturationCalib *calibdata = dynamic_cast (entry->GetObject()); + if(!calibdata) AliFatal("Wrong calibration object in calibration file!"); + + return calibdata; +} + //_____________________________________________________________________________ AliZDCTowerCalib* AliZDCReconstructor::GetTowerCalibData() const { diff --git a/ZDC/AliZDCReconstructor.h b/ZDC/AliZDCReconstructor.h index 1957f26ede7..7c1aaeee816 100644 --- a/ZDC/AliZDCReconstructor.h +++ b/ZDC/AliZDCReconstructor.h @@ -19,6 +19,7 @@ class AliCDBManager; class AliCDBStorage; class AliZDCPedestals; class AliZDCEnCalib; +class AliZDCSaturationCalib; class AliZDCTowerCalib; class AliZDCMBCalib; class AliZDCTDCCalib; @@ -70,6 +71,7 @@ public: AliCDBStorage *SetStorage(const char* uri); AliZDCPedestals *GetPedestalData() const; AliZDCEnCalib *GetEnergyCalibData() const; + AliZDCSaturationCalib *GetSaturationCalibData() const; AliZDCTowerCalib *GetTowerCalibData() const; AliZDCMBCalib *GetMBCalibData() const; AliZDCTDCCalib *GetTDCCalibData() const; @@ -98,6 +100,7 @@ private: static AliZDCMBCalib *fgMBCalibData; //! mb calibration data AliZDCPedestals *fPedData; //! pedestal calibration data AliZDCEnCalib *fEnCalibData; //! energy calibration data + AliZDCSaturationCalib *fSatCalibData; //! energy calibration data AliZDCTowerCalib *fTowCalibData; //! equalization calibration data AliZDCTDCCalib *fTDCCalibData; //! TDC offset data @@ -111,7 +114,7 @@ private: AliESDZDC* fESDZDC; // ESD output object - ClassDef(AliZDCReconstructor, 13) // class for the ZDC reconstruction + ClassDef(AliZDCReconstructor, 14) // class for the ZDC reconstruction }; #endif diff --git a/ZDC/AliZDCSaturationCalib.cxx b/ZDC/AliZDCSaturationCalib.cxx new file mode 100644 index 00000000000..8946f19c42e --- /dev/null +++ b/ZDC/AliZDCSaturationCalib.cxx @@ -0,0 +1,119 @@ +/************************************************************************** + * 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. * + **************************************************************************/ + +/////////////////////////////////////////////////////////////////////////////// +// // +// class for ZDC calibration // +// -> values for calibration // +// // +/////////////////////////////////////////////////////////////////////////////// + +#include "AliZDCSaturationCalib.h" + +ClassImp(AliZDCSaturationCalib) + +//________________________________________________________________ +AliZDCSaturationCalib::AliZDCSaturationCalib(): +TNamed() +{ + Reset(); + for(Int_t i=0; i<4; i++){ + fZNASatCalibration[i] = 0.; + fZNCSatCalibration[i] = 0.; + } +} + +//________________________________________________________________ +AliZDCSaturationCalib::AliZDCSaturationCalib(const char* name): +TNamed() +{ + // Constructor + TString namst = "Calib_"; + namst += name; + SetName(namst.Data()); + SetTitle(namst.Data()); + Reset(); + for(Int_t i=0; i<4; i++){ + fZNASatCalibration[i] = 0.; + fZNCSatCalibration[i] = 0.; + } +} + +//________________________________________________________________ +AliZDCSaturationCalib::AliZDCSaturationCalib(const AliZDCSaturationCalib& calibda) : + TNamed(calibda) +{ + // Copy constructor + SetName(calibda.GetName()); + SetTitle(calibda.GetName()); + Reset(); + for(int i=0; i<4; i++){ + fZNASatCalibration[i] = calibda.GetZNASatCalib(i); + fZNCSatCalibration[i] = calibda.GetZNCSatCalib(i); + } +} + +//________________________________________________________________ +AliZDCSaturationCalib &AliZDCSaturationCalib::operator =(const AliZDCSaturationCalib& calibda) +{ +// assignment operator + SetName(calibda.GetName()); + SetTitle(calibda.GetName()); + Reset(); + for(int i=0; i<4; i++){ + fZNASatCalibration[i] = calibda.GetZNASatCalib(i); + fZNCSatCalibration[i] = calibda.GetZNCSatCalib(i); + } + + return *this; +} + +//________________________________________________________________ +AliZDCSaturationCalib::~AliZDCSaturationCalib() +{ +} + +//________________________________________________________________ +void AliZDCSaturationCalib::Reset() +{ + // Reset +} + + +//________________________________________________________________ +void AliZDCSaturationCalib::Print(Option_t *) const +{ + // Printing of calibration object + printf("\n\n ####### Parameters for ZN knee saturation coeffieicients ####### \n"); + printf(" ZNA => %e %e %e %e \n",fZNASatCalibration[0],fZNASatCalibration[1],fZNASatCalibration[2],fZNASatCalibration[3]); + printf(" ZNC => %e %e %e %e \n",fZNCSatCalibration[0],fZNCSatCalibration[1],fZNCSatCalibration[2],fZNCSatCalibration[3]); + +} + +//________________________________________________________________ +void AliZDCSaturationCalib::SetZNASatCalib(Float_t* satCalib) +{ + // Set energy calibration coefficients + if(satCalib) for(int t=0; t<4; t++) fZNASatCalibration[t] = satCalib[t]; + else for(int t=0; t<4; t++) fZNASatCalibration[t] = 0.; +} + +//________________________________________________________________ +void AliZDCSaturationCalib::SetZNCSatCalib(Float_t* satCalib) +{ + // Set energy calibration coefficients + if(satCalib) for(int t=0; t<4; t++) fZNCSatCalibration[t] = satCalib[t]; + else for(int t=0; t<4; t++) fZNCSatCalibration[t] = 0.; +} diff --git a/ZDC/AliZDCSaturationCalib.h b/ZDC/AliZDCSaturationCalib.h new file mode 100644 index 00000000000..1a8b21bffa4 --- /dev/null +++ b/ZDC/AliZDCSaturationCalib.h @@ -0,0 +1,43 @@ +#ifndef ALIZDCSATURATIONCALIB_H +#define ALIZDCSATURATIONCALIB_H + +/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * + * See cxx source for full Copyright notice */ + +////////////////////////////////////////////////////////// +// class for ZDC calibration -> p-A high rate run // +////////////////////////////////////////////////////////// + +#include "TNamed.h" +#include "AliCDBEntry.h" + +class AliZDC; + +class AliZDCSaturationCalib: public TNamed { + + public: + AliZDCSaturationCalib(); + AliZDCSaturationCalib(const char* name); + AliZDCSaturationCalib(const AliZDCSaturationCalib &calibda); + AliZDCSaturationCalib& operator= (const AliZDCSaturationCalib &calibda); + virtual ~AliZDCSaturationCalib(); + void Reset(); + virtual void Print(Option_t *) const; + // + Float_t* GetZNASatCalib() const {return (float*)fZNASatCalibration;} + Float_t GetZNASatCalib(int i) const {return fZNASatCalibration[i];} + void SetZNASatCalib(Float_t* EnCalib); + + Float_t* GetZNCSatCalib() const {return (float*)fZNCSatCalibration;} + Float_t GetZNCSatCalib(int i) const {return fZNCSatCalibration[i];} + void SetZNCSatCalib(Float_t* EnCalib); + + protected: + // + Float_t fZNASatCalibration[4]; // Coeff. for ZNA calibration + Float_t fZNCSatCalibration[4]; // Coeff. for ZNC calibration + // + ClassDef(AliZDCSaturationCalib,1) // ZDC calibration calibration data +}; + +#endif diff --git a/ZDC/CMakelibZDCbase.pkg b/ZDC/CMakelibZDCbase.pkg index 430ad478932..640051cc3dc 100644 --- a/ZDC/CMakelibZDCbase.pkg +++ b/ZDC/CMakelibZDCbase.pkg @@ -34,6 +34,7 @@ set ( SRCS AliZDCPedestals.cxx AliZDCLaserCalib.cxx AliZDCEnCalib.cxx + AliZDCSaturationCalib.cxx AliZDCTowerCalib.cxx AliZDCMBCalib.cxx AliZDCChMap.cxx diff --git a/ZDC/ZDCbaseLinkDef.h b/ZDC/ZDCbaseLinkDef.h index efbc5523459..325cb3c9a44 100644 --- a/ZDC/ZDCbaseLinkDef.h +++ b/ZDC/ZDCbaseLinkDef.h @@ -14,6 +14,7 @@ #pragma link C++ class AliZDCPedestals+; #pragma link C++ class AliZDCLaserCalib+; #pragma link C++ class AliZDCEnCalib+; +#pragma link C++ class AliZDCSaturationCalib+; #pragma link C++ class AliZDCTowerCalib+; #pragma link C++ class AliZDCMBCalib+; #pragma link C++ class AliZDCMisAligner+; -- 2.43.0