From 104ba36627de7d035e547c4e8aeaf55a3612d5f0 Mon Sep 17 00:00:00 2001 From: rpreghen Date: Mon, 1 Mar 2010 15:09:31 +0000 Subject: [PATCH] software update: - TOF offline calibration tuned to fulfil time-slewing correction (cosmic calibration) - PHYSICS DA and corresponding config file/class changed - Preprocessor computes online T0-fill and doesn't compute online delays anymore in PHYSICS run --- .../Run0_999999999_v0_s0.root | Bin 0 -> 2378 bytes TOF/AliTOFClusterFinder.cxx | 5 + TOF/AliTOFDaConfigHandler.cxx | 351 ++++++------ TOF/AliTOFDaConfigHandler.h | 13 +- TOF/AliTOFDaConfigHandler.old.cxx | 180 ++++++ TOF/AliTOFDaConfigHandler.old.h | 50 ++ TOF/AliTOFGeometry.cxx | 3 + TOF/AliTOFGeometry.h | 6 + TOF/AliTOFHitField.cxx | 83 +++ TOF/AliTOFHitField.h | 50 ++ TOF/AliTOFLvHvDataPoints.cxx | 52 ++ TOF/AliTOFPreprocessor.cxx | 274 ++++++++- TOF/AliTOFPreprocessor.h | 7 +- TOF/AliTOFT0FillOnlineCalib.cxx | 77 +++ TOF/AliTOFT0FillOnlineCalib.h | 43 ++ TOF/CreateCalibPars_CalibHisto.C | 12 +- TOF/MakeCDBEntryT0FillOnlineCalib.C | 22 + TOF/ShuttleInput/Hits.root | Bin 0 -> 219268 bytes TOF/TOFPhysicsConfig.xml | 6 +- TOF/TOFPreprocessor.C | 229 +++++++- TOF/TOFPreprocessorLVHV.C | 448 --------------- TOF/TOFbaseLinkDef.h | 2 + TOF/TOFda.cxx | 539 ++++++++---------- TOF/TOFda.old.cxx | 394 +++++++++++++ TOF/data/AliTOFcalibPar.root | Bin 3021810 -> 3021810 bytes TOF/libTOFbase.pkg | 2 + 26 files changed, 1867 insertions(+), 981 deletions(-) create mode 100644 OCDB/TOF/Calib/T0FillOnlineCalib/Run0_999999999_v0_s0.root create mode 100644 TOF/AliTOFDaConfigHandler.old.cxx create mode 100644 TOF/AliTOFDaConfigHandler.old.h create mode 100644 TOF/AliTOFHitField.cxx create mode 100644 TOF/AliTOFHitField.h create mode 100644 TOF/AliTOFT0FillOnlineCalib.cxx create mode 100644 TOF/AliTOFT0FillOnlineCalib.h create mode 100644 TOF/MakeCDBEntryT0FillOnlineCalib.C create mode 100644 TOF/ShuttleInput/Hits.root delete mode 100644 TOF/TOFPreprocessorLVHV.C create mode 100644 TOF/TOFda.old.cxx diff --git a/OCDB/TOF/Calib/T0FillOnlineCalib/Run0_999999999_v0_s0.root b/OCDB/TOF/Calib/T0FillOnlineCalib/Run0_999999999_v0_s0.root new file mode 100644 index 0000000000000000000000000000000000000000..94d564b177ca9ded41b34aacb14ee4854e51d7d8 GIT binary patch literal 2378 zcmcImcT|&E7XJbSr5TD+BQ0WRk_f1PfCNZDR2YybB1jDoi3CX~5g3XfC6qv5f}oUu zD9$nzBMb|QGgK)Xnux0qAdCl)qL@MAqU=XJd(Ql~yMOr3x#!*U-ns4f?zz7gMJ7`L zU^or{fM5WSashz7{h*!-3Ivo9iEoNn0suho0+6E5yx>C&1zs{l3;>dzu7kJ#%Yw)P zyN-&i+YE04aU#!PG|;6djz}V0K!uU75l{gnB8416-QAa@ zK=jo98%W=0f~= zWt8%74Y4FkYhlOjwYq)?se~JOxyn1_DfHkN&$az+-Yq2UrKhA=q8`6VNvYCWz8b26 z0mD@EF?81cfWcGw0XQE@`&K<|b4-e%VjM7vWYa!zH zI%@kRu~~Yzg*0hs7B;J`POlEzV;3%=R+6F&ftdAspaEcL)q^2wDX=eKJQ0?5yIAZt z8W0TiJWHfdWzSQi2m#j!QKut9$cm2S=s*%p8+`b1LNK^ds30(&P=E&mf$6z8NY=or z?sT{Ywnr$=z#eBRG}QLHl)Cun=jZZq%|#Oh{2Djsm+fY27s{qr*Q{VE&)|y?$UNZe z>{GzF;fQZ|^1*4pl+GG_OI*M6wlA{X9sZ(tFJd^z$&9xi&uz6jXItq$pip{v59jDz z&Pmv)w~_m^Tsh4N-#LYt&T6)+KsWDa85-P#Yq^8sVL9SBzBEV%%z=OCzc|{JloUn=dI~2`o(Ygw)^=SzpEBUtXKP*@uGqvY=7Wf0}MrV6>(V z2bO##98`8*x%<)V@7s!0h4YnD8GO+!0N5Bn(_ zO~<508n3iy?ODh;8-w}Gna-nTa-F-j3dHK~WAf=(M9u|W6xu4G7q(Tq8ttImt1%QS z%Y0+wj#q2-7z)5^Ca^hNQ@7+c0s72$gP0QaMx(J5}+>49az$~5nu z_uLXq=EUrhF#KOOPm;x*R+cI@!&Xpt!|3KYtwkn0w|AzSg6tkdN5_?CHG}Q?a#Nm1 zUX|A23C$IkKC~IAI1uG4wUEY++0ctk?_EpNQ@s|--dIuw+?D8a!cFscls}KRdz3Xa zPHt=q1cIdWQyP43?fY=NGG<=-{JKlJ&bHNB<5sJZ@Ra)o*+{6ekFm4zx56EgdWBPB z{lyaQ5l!4JrQd&+dz~nIj>8Ol%C;aHxSEa{^Hz>oS50o!!dJsWr;r+(wu@2&6Es4l z59i>Zxmb9D(Ir`#G>d`67xeI(Tzpvh*>_aG+8Wf4;WNksu(6W$ zWUUM4gWGIJbiXtguGuE6AI}_2v!q`(4Je->7wqT+%($>$96pCMEyjk7m;dRwk&lL9 z(^VJ-6?sX@uIWQXmkkq$nNE`EX$k60^MvUAit-3^}SMi@^3ST#~kEu zj2USPqs1pMKNi%@53;khdI*|R<@ksogX@iw|FHO6h3}ra+L;rnC^R0UvSGyu#he7D zSl#0#n!ATff0DfL`Q~y~KzFlZ2i1$vZOE3MnX-dg|JGXl%s*uNz*yw+>$RTf8n@Cs z-YLD8Z5$s$6FhFjEBNF41AVw)ny&CZL1*T?M!Lnv*nHs1WHNGePfNjM;oNxV@rmqC za11wyNc)6nIEzRdBsbA;{+^@_M%bl9(TCyxAW6_HRg|vuU(((E$$(t)UDE}Vm2!za HRs{ST{9o1R literal 0 HcmV?d00001 diff --git a/TOF/AliTOFClusterFinder.cxx b/TOF/AliTOFClusterFinder.cxx index 3b333c64ed9..8386ae3284f 100644 --- a/TOF/AliTOFClusterFinder.cxx +++ b/TOF/AliTOFClusterFinder.cxx @@ -1094,6 +1094,11 @@ void AliTOFClusterFinder::CalibrateRecPoint() AliDebug(2,Form(" The ToT and Time, uncorr (counts) = %d , %d", fTofClusters[ii]->GetToT(),fTofClusters[ii]->GetTDC())); tToT = (Double_t)(fTofClusters[ii]->GetToT()*AliTOFGeometry::ToTBinWidth()); tToT*=1.E-3; //ToT in ns + + /* check TOT limits and set new TOT in case */ + if (tToT < AliTOFGeometry::SlewTOTMin()) tToT = AliTOFGeometry::SlewTOTMin(); + if (tToT > AliTOFGeometry::SlewTOTMax()) tToT = AliTOFGeometry::SlewTOTMax(); + AliDebug(2,Form(" The ToT and Time, uncorr (ns)= %e, %e",fTofClusters[ii]->GetTDC()*AliTOFGeometry::TdcBinWidth()*1.E-3,tToT)); timeCorr=par[0]+par[1]*tToT+par[2]*tToT*tToT+par[3]*tToT*tToT*tToT+par[4]*tToT*tToT*tToT*tToT+par[5]*tToT*tToT*tToT*tToT*tToT; // the time correction (ns) } diff --git a/TOF/AliTOFDaConfigHandler.cxx b/TOF/AliTOFDaConfigHandler.cxx index 3a9f54b90ba..a1202626aa6 100644 --- a/TOF/AliTOFDaConfigHandler.cxx +++ b/TOF/AliTOFDaConfigHandler.cxx @@ -1,180 +1,171 @@ -/************************************************************************* - * * Copyright(c) 1998-2008, 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. * - * **************************************************************************/ - -//////////////////////////////////////////////////////////////////////////// -// // -// The SAX XML file handler used in the TOFda // -// // -// Author: // -// Chiara Zampolli (Chiara.Zampolli@cern.ch) // -// // -//////////////////////////////////////////////////////////////////////////// - -#include -#include - -#include -#include -#include -#include - -#include "AliLog.h" -#include "AliTOFDaConfigHandler.h" - -ClassImp(AliTOFDaConfigHandler) - - -//_____________________________________________________________________________ -AliTOFDaConfigHandler::AliTOFDaConfigHandler() - :TObject(), - fDebugFlag(0), - fT0Flag(0) -{ - // - // AliTOFDaConfigHandler default constructor - // -} - -//_____________________________________________________________________________ -AliTOFDaConfigHandler::AliTOFDaConfigHandler(const AliTOFDaConfigHandler &sh) - :TObject(sh), - fDebugFlag(sh.fDebugFlag), - fT0Flag(sh.fT0Flag) -{ - // - // AliTOFDaConfigHandler copy constructor - // -} - -//_____________________________________________________________________________ -AliTOFDaConfigHandler &AliTOFDaConfigHandler::operator=(const AliTOFDaConfigHandler &sh) -{ - // - // Assignment operator - // - if (&sh == this) return *this; - - new (this) AliTOFDaConfigHandler(sh); - return *this; -} - -//_____________________________________________________________________________ -AliTOFDaConfigHandler::~AliTOFDaConfigHandler() -{ - // - // AliTOFDaConfigHandler destructor - // -} - -//_____________________________________________________________________________ -void AliTOFDaConfigHandler::OnStartDocument() -{ - // if something should happen right at the beginning of the - // XML document, this must happen here - AliInfo("Reading XML file for TOF da Config"); -} - -//_____________________________________________________________________________ -void AliTOFDaConfigHandler::OnEndDocument() -{ - // if something should happen at the end of the XML document - // this must be done here -} - -//_____________________________________________________________________________ -void AliTOFDaConfigHandler::OnStartElement(const char *name, const TList *attributes) -{ - // when a new XML element is found, it is processed here - - // set the current system if necessary - TString strName(name); - AliDebug(2,Form("name = %s",strName.Data())); - TXMLAttr* attr; - TIter next(attributes); - while ((attr = (TXMLAttr*) next())) { - TString attrName = attr->GetName(); - AliDebug(2,Form("Name = %s",attrName.Data())); - if (attrName == "DebugFlag"){ - fDebugFlag = ((TString)(attr->GetValue())).Atoi(); - } - if (attrName == "t0Flag"){ - TString t0Flag = (TString)(attr->GetValue()); - if (t0Flag == "ON" || t0Flag == "On" || t0Flag == "on"){ - fT0Flag = 1; - } - else if (t0Flag == "OFF" || t0Flag == "Off"|| t0Flag == "off"){ - fT0Flag = 0; - } - else { - AliWarning("Invalid T0 Flag. Keeping t0 off"); - fT0Flag = 0; - } - } - } - AliDebug(2,Form("Debug Flag = %i",fDebugFlag)); - AliDebug(2,Form("T0 Flag = %i",fT0Flag)); - return; -} -//_____________________________________________________________________________ -void AliTOFDaConfigHandler::OnEndElement(const char *name) -{ - // do everything that needs to be done when an end tag of an element is found - TString strName(name); - AliDebug(2,Form("name = %s",strName.Data())); -} - -//_____________________________________________________________________________ -void AliTOFDaConfigHandler::OnCharacters(const char *characters) -{ - // copy the text content of an XML element - //fContent = characters; - TString strCharacters(characters); - AliDebug(2,Form("characters = %s",strCharacters.Data())); -} - -//_____________________________________________________________________________ -void AliTOFDaConfigHandler::OnComment(const char* /*text*/) -{ - // comments within the XML file are ignored -} - -//_____________________________________________________________________________ -void AliTOFDaConfigHandler::OnWarning(const char *text) -{ - // process warnings here - AliInfo(Form("Warning: %s",text)); -} - -//_____________________________________________________________________________ -void AliTOFDaConfigHandler::OnError(const char *text) -{ - // process errors here - AliError(Form("Error: %s",text)); -} - -//_____________________________________________________________________________ -void AliTOFDaConfigHandler::OnFatalError(const char *text) -{ - // process fatal errors here - AliFatal(Form("Fatal error: %s",text)); -} - -//_____________________________________________________________________________ -void AliTOFDaConfigHandler::OnCdataBlock(const char* /*text*/, Int_t /*len*/) -{ - // process character data blocks here - // not implemented and should not be used here -} - +/************************************************************************* + * * Copyright(c) 1998-2008, 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. * + * **************************************************************************/ + +//////////////////////////////////////////////////////////////////////////// +// // +// The SAX XML file handler used in the TOFda // +// // +// Author: // +// Chiara Zampolli (Chiara.Zampolli@cern.ch) // +// Roberto Preghenella (R+) (preghenella@bo.infn.it) // +// // +//////////////////////////////////////////////////////////////////////////// + +#include +#include + +#include +#include +#include +#include + +#include "AliLog.h" +#include "AliTOFDaConfigHandler.h" + +ClassImp(AliTOFDaConfigHandler) + + +//_____________________________________________________________________________ +AliTOFDaConfigHandler::AliTOFDaConfigHandler() +:TObject(), + fMeanMultiplicity(0), + fMaxHits(0) +{ + // + // AliTOFDaConfigHandler default constructor + // +} + +//_____________________________________________________________________________ +AliTOFDaConfigHandler::AliTOFDaConfigHandler(const AliTOFDaConfigHandler &sh) + :TObject(sh), + fMeanMultiplicity(sh.fMeanMultiplicity), + fMaxHits(sh.fMaxHits) +{ + // + // AliTOFDaConfigHandler copy constructor + // +} + +//_____________________________________________________________________________ +AliTOFDaConfigHandler &AliTOFDaConfigHandler::operator=(const AliTOFDaConfigHandler &sh) +{ + // + // Assignment operator + // + if (&sh == this) return *this; + + new (this) AliTOFDaConfigHandler(sh); + return *this; +} + +//_____________________________________________________________________________ +AliTOFDaConfigHandler::~AliTOFDaConfigHandler() +{ + // + // AliTOFDaConfigHandler destructor + // +} + +//_____________________________________________________________________________ +void AliTOFDaConfigHandler::OnStartDocument() +{ + // if something should happen right at the beginning of the + // XML document, this must happen here + AliInfo("Reading XML file for TOF da Config"); +} + +//_____________________________________________________________________________ +void AliTOFDaConfigHandler::OnEndDocument() +{ + // if something should happen at the end of the XML document + // this must be done here +} + +//_____________________________________________________________________________ +void AliTOFDaConfigHandler::OnStartElement(const char *name, const TList *attributes) +{ + // when a new XML element is found, it is processed here + + // set the current system if necessary + TString strName(name); + AliDebug(2,Form("name = %s",strName.Data())); + TXMLAttr* attr; + TIter next(attributes); + while ((attr = (TXMLAttr*) next())) { + TString attrName = attr->GetName(); + AliDebug(2,Form("Name = %s",attrName.Data())); + if (attrName == "MeanMultiplicity"){ + fMeanMultiplicity = ((TString)(attr->GetValue())).Atoi(); + } + if (attrName == "MaxHits"){ + fMaxHits = ((TString)(attr->GetValue())).Atoi(); + } + } + AliDebug(2,Form("MeanMultiplicity = %d",fMeanMultiplicity)); + AliDebug(2,Form("MaxHits = %d",fMaxHits)); + return; +} +//_____________________________________________________________________________ +void AliTOFDaConfigHandler::OnEndElement(const char *name) +{ + // do everything that needs to be done when an end tag of an element is found + TString strName(name); + AliDebug(2,Form("name = %s",strName.Data())); +} + +//_____________________________________________________________________________ +void AliTOFDaConfigHandler::OnCharacters(const char *characters) +{ + // copy the text content of an XML element + //fContent = characters; + TString strCharacters(characters); + AliDebug(2,Form("characters = %s",strCharacters.Data())); +} + +//_____________________________________________________________________________ +void AliTOFDaConfigHandler::OnComment(const char* /*text*/) +{ + // comments within the XML file are ignored +} + +//_____________________________________________________________________________ +void AliTOFDaConfigHandler::OnWarning(const char *text) +{ + // process warnings here + AliInfo(Form("Warning: %s",text)); +} + +//_____________________________________________________________________________ +void AliTOFDaConfigHandler::OnError(const char *text) +{ + // process errors here + AliError(Form("Error: %s",text)); +} + +//_____________________________________________________________________________ +void AliTOFDaConfigHandler::OnFatalError(const char *text) +{ + // process fatal errors here + AliFatal(Form("Fatal error: %s",text)); +} + +//_____________________________________________________________________________ +void AliTOFDaConfigHandler::OnCdataBlock(const char* /*text*/, Int_t /*len*/) +{ + // process character data blocks here + // not implemented and should not be used here +} + diff --git a/TOF/AliTOFDaConfigHandler.h b/TOF/AliTOFDaConfigHandler.h index 8894e304895..86317f0b683 100644 --- a/TOF/AliTOFDaConfigHandler.h +++ b/TOF/AliTOFDaConfigHandler.h @@ -10,6 +10,8 @@ // to get the necessary flags to run (e.g. debug flag) // // // // Chiara.Zampolli (Chiara.Zampolli@cern.ch) // +// Roberto Preghenella (R+) (preghenella@bo.infn.it) // +// // // // //////////////////////////////////////////////////////////////////////////// @@ -37,14 +39,15 @@ public: void OnFatalError(const char *name); void OnCdataBlock(const char *name, Int_t len); - Int_t GetDebugFlag() const {return fDebugFlag;} - Int_t GetT0Flag() const {return fT0Flag;} + Int_t GetMeanMultiplicity() const {return fMeanMultiplicity;}; + Int_t GetMaxHits() const {return fMaxHits;}; private: - Int_t fDebugFlag; // debug flag: 0-->off, 1-->first level of debug, 2-->second level of debug, 3-->third level of debug - Int_t fT0Flag; // flag for using T0: 0-->off, 1-->on - ClassDef(AliTOFDaConfigHandler,0); + Int_t fMeanMultiplicity; // mean multiplicity + Int_t fMaxHits; // max hits + + ClassDef(AliTOFDaConfigHandler,1); }; #endif diff --git a/TOF/AliTOFDaConfigHandler.old.cxx b/TOF/AliTOFDaConfigHandler.old.cxx new file mode 100644 index 00000000000..3a9f54b90ba --- /dev/null +++ b/TOF/AliTOFDaConfigHandler.old.cxx @@ -0,0 +1,180 @@ +/************************************************************************* + * * Copyright(c) 1998-2008, 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. * + * **************************************************************************/ + +//////////////////////////////////////////////////////////////////////////// +// // +// The SAX XML file handler used in the TOFda // +// // +// Author: // +// Chiara Zampolli (Chiara.Zampolli@cern.ch) // +// // +//////////////////////////////////////////////////////////////////////////// + +#include +#include + +#include +#include +#include +#include + +#include "AliLog.h" +#include "AliTOFDaConfigHandler.h" + +ClassImp(AliTOFDaConfigHandler) + + +//_____________________________________________________________________________ +AliTOFDaConfigHandler::AliTOFDaConfigHandler() + :TObject(), + fDebugFlag(0), + fT0Flag(0) +{ + // + // AliTOFDaConfigHandler default constructor + // +} + +//_____________________________________________________________________________ +AliTOFDaConfigHandler::AliTOFDaConfigHandler(const AliTOFDaConfigHandler &sh) + :TObject(sh), + fDebugFlag(sh.fDebugFlag), + fT0Flag(sh.fT0Flag) +{ + // + // AliTOFDaConfigHandler copy constructor + // +} + +//_____________________________________________________________________________ +AliTOFDaConfigHandler &AliTOFDaConfigHandler::operator=(const AliTOFDaConfigHandler &sh) +{ + // + // Assignment operator + // + if (&sh == this) return *this; + + new (this) AliTOFDaConfigHandler(sh); + return *this; +} + +//_____________________________________________________________________________ +AliTOFDaConfigHandler::~AliTOFDaConfigHandler() +{ + // + // AliTOFDaConfigHandler destructor + // +} + +//_____________________________________________________________________________ +void AliTOFDaConfigHandler::OnStartDocument() +{ + // if something should happen right at the beginning of the + // XML document, this must happen here + AliInfo("Reading XML file for TOF da Config"); +} + +//_____________________________________________________________________________ +void AliTOFDaConfigHandler::OnEndDocument() +{ + // if something should happen at the end of the XML document + // this must be done here +} + +//_____________________________________________________________________________ +void AliTOFDaConfigHandler::OnStartElement(const char *name, const TList *attributes) +{ + // when a new XML element is found, it is processed here + + // set the current system if necessary + TString strName(name); + AliDebug(2,Form("name = %s",strName.Data())); + TXMLAttr* attr; + TIter next(attributes); + while ((attr = (TXMLAttr*) next())) { + TString attrName = attr->GetName(); + AliDebug(2,Form("Name = %s",attrName.Data())); + if (attrName == "DebugFlag"){ + fDebugFlag = ((TString)(attr->GetValue())).Atoi(); + } + if (attrName == "t0Flag"){ + TString t0Flag = (TString)(attr->GetValue()); + if (t0Flag == "ON" || t0Flag == "On" || t0Flag == "on"){ + fT0Flag = 1; + } + else if (t0Flag == "OFF" || t0Flag == "Off"|| t0Flag == "off"){ + fT0Flag = 0; + } + else { + AliWarning("Invalid T0 Flag. Keeping t0 off"); + fT0Flag = 0; + } + } + } + AliDebug(2,Form("Debug Flag = %i",fDebugFlag)); + AliDebug(2,Form("T0 Flag = %i",fT0Flag)); + return; +} +//_____________________________________________________________________________ +void AliTOFDaConfigHandler::OnEndElement(const char *name) +{ + // do everything that needs to be done when an end tag of an element is found + TString strName(name); + AliDebug(2,Form("name = %s",strName.Data())); +} + +//_____________________________________________________________________________ +void AliTOFDaConfigHandler::OnCharacters(const char *characters) +{ + // copy the text content of an XML element + //fContent = characters; + TString strCharacters(characters); + AliDebug(2,Form("characters = %s",strCharacters.Data())); +} + +//_____________________________________________________________________________ +void AliTOFDaConfigHandler::OnComment(const char* /*text*/) +{ + // comments within the XML file are ignored +} + +//_____________________________________________________________________________ +void AliTOFDaConfigHandler::OnWarning(const char *text) +{ + // process warnings here + AliInfo(Form("Warning: %s",text)); +} + +//_____________________________________________________________________________ +void AliTOFDaConfigHandler::OnError(const char *text) +{ + // process errors here + AliError(Form("Error: %s",text)); +} + +//_____________________________________________________________________________ +void AliTOFDaConfigHandler::OnFatalError(const char *text) +{ + // process fatal errors here + AliFatal(Form("Fatal error: %s",text)); +} + +//_____________________________________________________________________________ +void AliTOFDaConfigHandler::OnCdataBlock(const char* /*text*/, Int_t /*len*/) +{ + // process character data blocks here + // not implemented and should not be used here +} + diff --git a/TOF/AliTOFDaConfigHandler.old.h b/TOF/AliTOFDaConfigHandler.old.h new file mode 100644 index 00000000000..8894e304895 --- /dev/null +++ b/TOF/AliTOFDaConfigHandler.old.h @@ -0,0 +1,50 @@ +#ifndef ALITOFDACONFIGHANDLER_H +#define ALITOFDACONFIGHANDLER_H +/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * + * * See cxx source for full Copyright notice */ +/* $Id$ */ + +//////////////////////////////////////////////////////////////////////////// +// // +// The SAX XML file handler used by the TOF DA for PHYSICS runs // +// to get the necessary flags to run (e.g. debug flag) // +// // +// Chiara.Zampolli (Chiara.Zampolli@cern.ch) // +// // +//////////////////////////////////////////////////////////////////////////// + +#include +class TString; + +class AliTOFDaConfigHandler : public TObject { + +public: + + AliTOFDaConfigHandler(); + AliTOFDaConfigHandler(const AliTOFDaConfigHandler &sh); + virtual ~AliTOFDaConfigHandler(); + AliTOFDaConfigHandler &operator=(const AliTOFDaConfigHandler &sh); + + // functions to interface to TSAXHandler + void OnStartDocument(); + void OnEndDocument(); + void OnStartElement(const char *name, const TList *attributes); + void OnEndElement(const char *name); + void OnCharacters(const char *name); + void OnComment(const char *name); + void OnWarning(const char *name); + void OnError(const char *name); + void OnFatalError(const char *name); + void OnCdataBlock(const char *name, Int_t len); + + Int_t GetDebugFlag() const {return fDebugFlag;} + Int_t GetT0Flag() const {return fT0Flag;} + + private: + Int_t fDebugFlag; // debug flag: 0-->off, 1-->first level of debug, 2-->second level of debug, 3-->third level of debug + Int_t fT0Flag; // flag for using T0: 0-->off, 1-->on + + ClassDef(AliTOFDaConfigHandler,0); +}; +#endif + diff --git a/TOF/AliTOFGeometry.cxx b/TOF/AliTOFGeometry.cxx index b6f35d561c9..2231fe4c846 100644 --- a/TOF/AliTOFGeometry.cxx +++ b/TOF/AliTOFGeometry.cxx @@ -151,6 +151,9 @@ const Float_t AliTOFGeometry::fgkTdcBin = 24.4; // time-of-flight bin width const Float_t AliTOFGeometry::fgkToTBin = 48.8; // time-over-threshold bin width [ps] const Float_t AliTOFGeometry::fgkBunchCrossingBin = fgkTdcBin * 1024; // bunch-crossing bin width [ps] +const Float_t AliTOFGeometry::fgkSlewTOTMin = 10.; // min TOT for slewing correction [ns] +const Float_t AliTOFGeometry::fgkSlewTOTMax = 16.; // max TOT for slewing correction [ns] + const Float_t AliTOFGeometry::fgkDeadTime = 25E+03; // Single channel dead time (ps) const Float_t AliTOFGeometry::fgkMatchingWindow = fgkTdcBin*TMath::Power(2,13); // Matching window (ps) diff --git a/TOF/AliTOFGeometry.h b/TOF/AliTOFGeometry.h index c36504e2128..e8dcfec081e 100644 --- a/TOF/AliTOFGeometry.h +++ b/TOF/AliTOFGeometry.h @@ -73,6 +73,9 @@ class AliTOFGeometry: public TObject{ static Float_t ToTBinWidth() {return fgkToTBin;}; static Float_t BunchCrossingBinWidth() {return fgkBunchCrossingBin;}; + static Float_t SlewTOTMin() {return fgkSlewTOTMin;}; + static Float_t SlewTOTMax() {return fgkSlewTOTMax;}; + virtual void ImportGeometry(); virtual void SetHoles(Bool_t holes) {fHoles = holes;}; virtual Bool_t GetHoles() const {return fHoles;}; @@ -175,6 +178,9 @@ class AliTOFGeometry: public TObject{ static const Float_t fgkToTBin; // time-over-threshold bin width [ps] static const Float_t fgkBunchCrossingBin; // bunch-crossing bin width [ps] + static const Float_t fgkSlewTOTMin; // min TOT for slewing correction [ns] + static const Float_t fgkSlewTOTMax; // max TOT for slewing correction [ns] + ClassDef(AliTOFGeometry,8) // TOF Geometry base class }; diff --git a/TOF/AliTOFHitField.cxx b/TOF/AliTOFHitField.cxx new file mode 100644 index 00000000000..38b6d7d9aa1 --- /dev/null +++ b/TOF/AliTOFHitField.cxx @@ -0,0 +1,83 @@ +/************************************************************************** + * 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. * + **************************************************************************/ + +/////////////////////////////////////////////////////////////// +// // +// This class provides the minimum-size TOF hit info // +// // +// author: Roberto Preghenella (R+) // +// preghenella@bo.infn.it // +// // +/////////////////////////////////////////////////////////////// + +#include "AliTOFHitField.h" + +ClassImp(AliTOFHitField) + +//----------------------------------------------------------------------------- + +AliTOFHitField::AliTOFHitField() : + fIndex(0), + fTimeBin(0), + fTOTBin(0), + fDeltaBC(0), + fL0L1Latency(0) +{ + /* + * default constructor + */ +} + +//----------------------------------------------------------------------------- + +AliTOFHitField::~AliTOFHitField() +{ + /* + * default destructor + */ +} + +//----------------------------------------------------------------------------- + +AliTOFHitField::AliTOFHitField(const AliTOFHitField &source) : + fIndex(source.fIndex), + fTimeBin(source.fTimeBin), + fTOTBin(source.fTOTBin), + fDeltaBC(source.fDeltaBC), + fL0L1Latency(source.fL0L1Latency) +{ + /* + * default constructor + */ +} + +//----------------------------------------------------------------------------- + +AliTOFHitField & +AliTOFHitField::operator=(const AliTOFHitField &source) +{ + /* + * operator= + */ + + if(this==&source) return *this; + fIndex = source.fIndex; + fTimeBin = source.fTimeBin; + fTOTBin = source.fTOTBin; + fDeltaBC = source.fDeltaBC; + fL0L1Latency =source.fL0L1Latency; + return *this; +} + diff --git a/TOF/AliTOFHitField.h b/TOF/AliTOFHitField.h new file mode 100644 index 00000000000..7d130bccdce --- /dev/null +++ b/TOF/AliTOFHitField.h @@ -0,0 +1,50 @@ +#ifndef ALITOFHITFIELD_H +#define ALITOFHITFIELD_H +/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * + * See cxx source for full Copyright notice */ + +/////////////////////////////////////////////////////////////// +// // +// This class provides the minimum-size TOF hit info // +// // +// author: Roberto Preghenella (R+) // +// preghenella@bo.infn.it // +// // +/////////////////////////////////////////////////////////////// + +#include "TROOT.h" + +class AliTOFHitField +{ + + public: + + AliTOFHitField(); // default constructor + virtual ~AliTOFHitField(); // default destructor + AliTOFHitField(const AliTOFHitField &source); // copy constructor + AliTOFHitField &operator=(const AliTOFHitField &source); // operator= + + UInt_t GetIndex() const {return fIndex;}; // get index + UShort_t GetTimeBin() const {return fTimeBin;}; // get time bin + UShort_t GetTOTBin() const {return fTOTBin;}; // get TOT bin + UChar_t GetDeltaBC() const {return fDeltaBC;}; // get delta BC + UShort_t GetL0L1Latency() const {return fL0L1Latency;}; // get L0-L1 latency + + void SetIndex(UInt_t value) {fIndex = value;}; // set index + void SetTimeBin(UShort_t value) {fTimeBin = value;}; // set time bin + void SetTOTBin(UShort_t value) {fTOTBin = value;}; // set TOT bin + void SetDeltaBC(UChar_t value) {fDeltaBC = value;}; // set delta BC + void SetL0L1Latency(UShort_t value) {fL0L1Latency = value;}; // set L0-L1 latency + + private: + + UInt_t fIndex; // channel index + UShort_t fTimeBin; // time bin [24.4 ps] + UShort_t fTOTBin; // TOT bin [48.8 ps] + UChar_t fDeltaBC; // delta BC [BC bins] + UShort_t fL0L1Latency; // L0-L1 latency [BC bins] + + ClassDef(AliTOFHitField, 1); +}; + +#endif /* ALITOFHITFIELD_H */ diff --git a/TOF/AliTOFLvHvDataPoints.cxx b/TOF/AliTOFLvHvDataPoints.cxx index 2f96c535559..9c708e87fd5 100644 --- a/TOF/AliTOFLvHvDataPoints.cxx +++ b/TOF/AliTOFLvHvDataPoints.cxx @@ -177,6 +177,7 @@ Bool_t AliTOFLvHvDataPoints::ProcessData(TMap& aliasMap) { AliDebug(1,Form(" Number of LV dps = %d",fNumberOfLVdataPoints)); if (!MergeHVmap()) return kFALSE; + if (fNumberOfLVdataPoints==0) return kFALSE; if (!MergeLVmap()) return kFALSE; if (!MergeMaps()) return kFALSE; @@ -401,6 +402,39 @@ Bool_t AliTOFLvHvDataPoints::ReadHVDataPoints(TMap& aliasMap) { } } + if (fNumberOfHVdataPoints==0) { + AliInfo("Valid LV dps not found. By default all HV TOF channels (except the ones in the PHOS holes) switched ON."); + for (int i=0; iGetObject(); + if (!t0FillOnlineCalibObject) { + Log("cannot get \"T0FillOnlineCalib\" object from CDB entry"); + return 21; + } + Float_t t0FillCalibOffset = t0FillOnlineCalibObject->GetOffset(); + Float_t t0FillCalibCoefficient = t0FillOnlineCalibObject->GetCoefficient(); + Log(Form("got \"T0FillOnlineCalib\" object: offset=%f coeff=%f", t0FillCalibOffset, t0FillCalibCoefficient)); + + /* get online status from OCDB */ + cdbe = GetFromOCDB("Calib", "Status"); + if (!cdbe) { + Log("cannot get \"Status\" entry from OCDB"); + return 21; + } + AliTOFChannelOnlineStatusArray *statusArray = (AliTOFChannelOnlineStatusArray *)cdbe->GetObject(); + if (!statusArray) { + Log("cannot get \"Status\" object from CDB entry"); + return 21; + } + Log("got \"Status\" object"); + + /* get offline calibration from OCDB */ + cdbe = GetFromOCDB("Calib", "ParOffline"); + if (!cdbe) { + Log("cannot get \"ParOffline\" entry from OCDB"); + return 21; + } + TObjArray *offlineArray = (TObjArray *)cdbe->GetObject(); + AliTOFChannelOffline *channelOffline; + if (!offlineArray) { + Log("cannot get \"ParOffline\" object from CDB entry"); + return 21; + } + Log("got \"ParOffline\" object"); + + /* get deltaBC offset from OCDB */ + cdbe = GetFromOCDB("Calib", "DeltaBCOffset"); + if (!cdbe) { + Log("cannot get \"DeltaBCOffset\" entry from OCDB"); + return 21; + } + AliTOFDeltaBCOffset *deltaBCOffsetObject = (AliTOFDeltaBCOffset *)cdbe->GetObject(); + if (!deltaBCOffsetObject) { + Log("cannot get \"DeltaBCOffset\" object from CDB entry"); + return 21; + } + Int_t deltaBCOffset = deltaBCOffsetObject->GetDeltaBCOffset(); + Log(Form("got \"DeltaBCOffset\" object: deltaBCOffset=%d (BC bins)", deltaBCOffset)); + + /* get CTP latency from OCDB */ + cdbe = GetFromOCDB("Calib", "CTPLatency"); + if (!cdbe) { + Log("cannot get \"CTPLatency\" entry from OCDB"); + return 21; + } + AliTOFCTPLatency *ctpLatencyObject = (AliTOFCTPLatency *)cdbe->GetObject(); + if (!ctpLatencyObject) { + Log("cannot get \"CTPLatency\" object from CDB entry"); + return 21; + } + Float_t ctpLatency = ctpLatencyObject->GetCTPLatency(); + Log(Form("got \"CTPLatency\" object: ctpLatency=%f (ps)", ctpLatency)); + + /* get file sources from FXS */ + TList *fileList = GetFileSources(kDAQ, "HITS"); + if (!fileList || fileList->GetEntries() == 0) { + Log("cannot get DAQ source file list or empty list"); + return 21; + } + Log(Form("got DAQ source file list: %d files", fileList->GetEntries())); + fileList->Print(); + + /* create tree chain using file sources */ + TChain chain("hitTree"); + for (Int_t ifile = 0; ifile < fileList->GetEntries(); ifile++) { + TObjString *str = (TObjString *)fileList->At(ifile); + TString filename = GetFile(kDAQ, "HITS", str->GetName()); + chain.Add(filename); + Log(Form("file added to input chain: source=%s, filename=%s", str->String().Data(), filename.Data())); + } + Int_t nhits = chain.GetEntries(); + Log(Form("input chain ready: %d hits", nhits)); + + /* setup input chain */ + AliTOFHitField *hit = new AliTOFHitField(); + chain.SetBranchAddress("hit", &hit); + + /* create calib histo and geometry */ + AliTOFcalibHisto calibHisto; + calibHisto.LoadCalibHisto(); + AliTOFGeometry tofGeo; + + /* constants */ + Float_t c = TMath::C() * 1.e2 / 1.e12; /* cm/ps */ + Float_t c_1 = 1. / c; + /* variables */ + Int_t index, timebin, totbin, deltaBC, l0l1latency, det[5]; + Float_t timeps, totns, corrps, length, timeexp, timezero, pos[3], latencyWindow; + + /* histos */ + TH1F *hT0Fill = new TH1F("hT0Fill", "T0 fill;t - t_{exp}^{(c)} (ps);", 2000, -24400., 24400.); + + /* loop over hits */ + for (Int_t ihit = 0; ihit < nhits; ihit++) { + + /* get entry */ + chain.GetEntry(ihit); + + /* get hit info */ + index = hit->GetIndex(); + timebin = hit->GetTimeBin(); + totbin = hit->GetTOTBin(); + deltaBC = hit->GetDeltaBC(); + l0l1latency = hit->GetL0L1Latency(); + latencyWindow = statusArray->GetLatencyWindow(index) * 1.e3; + + /* convert time in ps and tot in ns */ + timeps = timebin * AliTOFGeometry::TdcBinWidth(); + totns = totbin * AliTOFGeometry::ToTBinWidth() * 1.e-3; + /* get calibration correction in ps */ + channelOffline = (AliTOFChannelOffline *)offlineArray->At(index); + if (totns < AliTOFGeometry::SlewTOTMin()) totns = AliTOFGeometry::SlewTOTMin(); + if (totns > AliTOFGeometry::SlewTOTMax()) totns = AliTOFGeometry::SlewTOTMax(); + corrps = 0.; + for (Int_t ipar = 0; ipar < 6; ipar++) corrps += channelOffline->GetSlewPar(ipar) * TMath::Power(totns, ipar); + corrps *= 1.e3; + /* perform time correction */ + timeps = timeps + (deltaBC - deltaBCOffset) * AliTOFGeometry::BunchCrossingBinWidth() + l0l1latency * AliTOFGeometry::BunchCrossingBinWidth() + ctpLatency - latencyWindow - corrps; + /* compute length and expected time */ + tofGeo.GetVolumeIndices(index, det); + tofGeo.GetPosPar(det, pos); + length = 0.; + for (Int_t i = 0; i < 3; i++) length += pos[i] * pos[i]; + length = TMath::Sqrt(length); + timeexp = length * c_1; + /* compute time zero */ + timezero = timeps - timeexp; + + /* fill histos */ + hT0Fill->Fill(timezero); + } + + /* rebin until maximum bin has required minimum entries */ + Int_t maxBin = hT0Fill->GetMaximumBin(); + Int_t maxBinContent = hT0Fill->GetBinContent(maxBin); + Float_t binWidth = hT0Fill->GetBinWidth(maxBin); + while (maxBinContent < 400 && binWidth < 90.) { + hT0Fill->Rebin(2); + maxBin = hT0Fill->GetMaximumBin(); + maxBinContent = hT0Fill->GetBinContent(maxBin); + binWidth = hT0Fill->GetBinWidth(maxBin); + } + Float_t maxBinCenter = hT0Fill->GetBinCenter(maxBin); + + /* rough landau fit of the edge */ + TF1 *landau = (TF1 *)gROOT->GetFunction("landau"); + landau->SetParameter(1, maxBinCenter); + Float_t fitMin = maxBinCenter - 1000.; /* fit from 10 ns before max */ + Float_t fitMax = maxBinCenter + binWidth; /* fit until a bin width above max */ + hT0Fill->Fit("landau", "q0", "", fitMin, fitMax); + /* get rough landau mean and sigma to set a better fit range */ + Float_t mean = landau->GetParameter(1); + Float_t sigma = landau->GetParameter(2); + /* better landau fit of the edge */ + fitMin = maxBinCenter - 3. * sigma; + fitMax = mean; + hT0Fill->Fit("landau", "q0", "", fitMin, fitMax); + /* print params */ + mean = landau->GetParameter(1); + sigma = landau->GetParameter(2); + Float_t meane = landau->GetParError(1); + Float_t sigmae = landau->GetParError(2); + Log(Form("edge fit: mean = %f +- %f ps", mean, meane)); + Log(Form("edge fit: sigma = %f +- %f ps", sigma, sigmae)); + Float_t edge = mean - 3. * sigma; + Float_t edgee = TMath::Sqrt(meane * meane + 3. * sigmae * 3. * sigmae); + Log(Form("edge fit: edge = %f +- %f ps", edge, edgee)); + /* apply calibration to get T0-fill from egde */ + Float_t t0Fill = edge * t0FillCalibCoefficient + t0FillCalibOffset; + Log(Form("estimated T0-fill: %f ps", t0Fill)); + + /* create T0-fill object */ + AliTOFT0Fill *t0FillObject = new AliTOFT0Fill(); + t0FillObject->SetT0Fill(t0Fill); + + /* store reference data */ + if(fStoreRefData){ + AliCDBMetaData metaDataHisto; + metaDataHisto.SetBeamPeriod(0); + metaDataHisto.SetResponsible("Roberto Preghenella"); + metaDataHisto.SetComment("online T0-fill histogram"); + if (!StoreReferenceData("Calib","T0Fill", hT0Fill, &metaDataHisto)) { + Log("error while storing reference data"); + delete hT0Fill; + delete hit; + delete t0FillObject; + return 21; + } + Log("reference data successfully stored"); + } + + AliCDBMetaData metaData; + metaData.SetBeamPeriod(0); + metaData.SetResponsible("Roberto Preghenella"); + metaData.SetComment("online T0-fill measurement"); + if (!Store("Calib", "T0Fill", t0FillObject, &metaData, 0, kFALSE)) { + Log("error while storing T0-fill object"); + delete hT0Fill; + delete hit; + delete t0FillObject; + return 21; + } + Log("T0-fill object successfully stored"); + + delete hT0Fill; + delete hit; + delete t0FillObject; + return 0; + +} + + //_____________________________________________________________________________ UInt_t AliTOFPreprocessor::ProcessPulserData() @@ -1297,7 +1556,7 @@ UInt_t AliTOFPreprocessor::ProcessFEEData() //_____________________________________________________________________________ -UInt_t AliTOFPreprocessor::Process(TMap * const dcsAliasMap) +UInt_t AliTOFPreprocessor::Process(TMap *dcsAliasMap) { // // Main AliTOFPreprocessor method called by SHUTTLE @@ -1322,9 +1581,10 @@ UInt_t AliTOFPreprocessor::Process(TMap * const dcsAliasMap) Int_t iresultNoise = ProcessNoiseData(); return iresultNoise; } - + if (runType == "PHYSICS") { - Int_t iresultDAQ = ProcessOnlineDelays(); + // Int_t iresultDAQ = ProcessOnlineDelays(); + Int_t iresultDAQ = ProcessT0Fill(); if (iresultDAQ != 0) { return iresultDAQ; } diff --git a/TOF/AliTOFPreprocessor.h b/TOF/AliTOFPreprocessor.h index 809daf68df2..d49b6e36c37 100644 --- a/TOF/AliTOFPreprocessor.h +++ b/TOF/AliTOFPreprocessor.h @@ -31,18 +31,19 @@ class AliTOFPreprocessor : public AliPreprocessor protected: virtual void Initialize(Int_t run, UInt_t startTime, UInt_t endTime); - virtual UInt_t Process(TMap * const dcsAliasMap); + virtual UInt_t Process(TMap *dcsAliasMap); virtual Bool_t ProcessDCS(); private: AliTOFPreprocessor(const AliTOFPreprocessor & proc); // copy constructor AliTOFPreprocessor& operator=(const AliTOFPreprocessor & proc); - UInt_t ProcessDCSDataPoints(TMap * const dcsAliasMap); - UInt_t ProcessHVandLVdps(TMap * const dcsAliasMap); + UInt_t ProcessDCSDataPoints(TMap *dcsAliasMap); + UInt_t ProcessHVandLVdps(TMap *dcsAliasMap); UInt_t ProcessOnlineDelays(); UInt_t ProcessPulserData(); UInt_t ProcessNoiseData(); UInt_t ProcessFEEData(); // dummy, for the time being + UInt_t ProcessT0Fill(); void FillWithCosmicCalibration(AliTOFChannelOnlineArray *cal); // fill with cosmic calibration void FillWithCableLengthMap(AliTOFChannelOnlineArray *cal); // fill with cable-lenght map diff --git a/TOF/AliTOFT0FillOnlineCalib.cxx b/TOF/AliTOFT0FillOnlineCalib.cxx new file mode 100644 index 00000000000..e5348c37435 --- /dev/null +++ b/TOF/AliTOFT0FillOnlineCalib.cxx @@ -0,0 +1,77 @@ +/************************************************************************** + * 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. * + **************************************************************************/ + +/* + * + * + * this class defines the T0Fill online calibration object to be stored + * in OCDB in order to obtain a corrected T0Fill from online algorithm + * + * + */ + +#include "AliTOFT0FillOnlineCalib.h" + +ClassImp(AliTOFT0FillOnlineCalib) + +//_________________________________________________________ + +AliTOFT0FillOnlineCalib::AliTOFT0FillOnlineCalib() : + TObject(), + fOffset(0.), + fCoefficient(0.) +{ + /* + * default constructor + */ +} + +//_________________________________________________________ + +AliTOFT0FillOnlineCalib::~AliTOFT0FillOnlineCalib() +{ + /* + * default destructor + */ +} + +//_________________________________________________________ + +AliTOFT0FillOnlineCalib::AliTOFT0FillOnlineCalib(const AliTOFT0FillOnlineCalib &source) : + TObject(source), + fOffset(source.fOffset), + fCoefficient(source.fCoefficient) +{ + /* + * copy constructor + */ +} + +//_________________________________________________________ + +AliTOFT0FillOnlineCalib & +AliTOFT0FillOnlineCalib::operator=(const AliTOFT0FillOnlineCalib &source) +{ + /* + * operator= + */ + + if (this == &source) return *this; + TObject::operator=(source); + fOffset = source.fOffset; + fCoefficient = source.fCoefficient; + return *this; +} + diff --git a/TOF/AliTOFT0FillOnlineCalib.h b/TOF/AliTOFT0FillOnlineCalib.h new file mode 100644 index 00000000000..1f6b00d6aba --- /dev/null +++ b/TOF/AliTOFT0FillOnlineCalib.h @@ -0,0 +1,43 @@ +#ifndef ALITOFT0FILLONLINECALIB_H +#define ALITOFT0FILLONLINECALIB_H + +/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * + * See cxx source for full Copyright notice */ +/* $Id$ */ + +/* + * + * + * this class defines the T0Fill online calibration object to be stored + * in OCDB in order to obtain a corrected T0Fill from online algorithm + * + * + * + */ + +#include "TObject.h" + +class AliTOFT0FillOnlineCalib : +public TObject +{ + + public: + + AliTOFT0FillOnlineCalib(); // default constructor + virtual ~AliTOFT0FillOnlineCalib(); // default destructor + AliTOFT0FillOnlineCalib(const AliTOFT0FillOnlineCalib &source); // copy constructor + AliTOFT0FillOnlineCalib &operator=(const AliTOFT0FillOnlineCalib &source); // operator= + Float_t GetOffset() const {return fOffset;}; // getter + Float_t GetCoefficient() const {return fCoefficient;}; // getter + void SetOffset(Float_t value) {fOffset = value;}; // setter + void SetCoefficient(Float_t value) {fCoefficient = value;}; // setter + + private: + + Float_t fOffset; // offset (ps) + Float_t fCoefficient; // coefficient + + ClassDef(AliTOFT0FillOnlineCalib, 1); +}; + +#endif /* ALITOFT0FILLOnlineCalib_H */ diff --git a/TOF/CreateCalibPars_CalibHisto.C b/TOF/CreateCalibPars_CalibHisto.C index cd20f0e341c..a9ea2511840 100644 --- a/TOF/CreateCalibPars_CalibHisto.C +++ b/TOF/CreateCalibPars_CalibHisto.C @@ -14,19 +14,25 @@ void CreateCalibPars_CalibHisto(){ calibHisto.SetFullCorrectionFlag(AliTOFcalibHisto::kTimeSlewingCorr, kFALSE); /* OCDB init */ + Float_t slewPar[6] = {0.,0.,0.,0.,0.,0.}; Float_t par[6] = {0.,0.,0.,0.,0.,0.}; AliCDBManager *man = AliCDBManager::Instance(); man->SetDefaultStorage("local://$ALICE_ROOT/OCDB"); Int_t nChannels = AliTOFGeometry::NSectors()*(2*(AliTOFGeometry::NStripC()+AliTOFGeometry::NStripB())+AliTOFGeometry::NStripA())*AliTOFGeometry::NpadZ()*AliTOFGeometry::NpadX(); /* common time-slewing params */ - for (Int_t iSlew = 1; iSlew < 6; iSlew++) - par[iSlew] = calibHisto.GetCalibPar(AliTOFcalibHisto::kTimeSlewingPar, iSlew); + for (Int_t iSlew = 0; iSlew < 6; iSlew++) + slewPar[iSlew] = calibHisto.GetCalibPar(AliTOFcalibHisto::kTimeSlewingPar, iSlew); /* channel-related params */ for (Int_t ipad = 0 ; ipadAt(ipad); - par[0] = calibHisto.GetFullCorrection(ipad); + par[0] = slewPar[0] + calibHisto.GetFullCorrection(ipad); + par[1] = slewPar[1]; + par[2] = slewPar[2]; + par[3] = slewPar[3]; + par[4] = slewPar[4]; + par[5] = slewPar[5]; calChannelOffline->SetSlewPar(par); } diff --git a/TOF/MakeCDBEntryT0FillOnlineCalib.C b/TOF/MakeCDBEntryT0FillOnlineCalib.C new file mode 100644 index 00000000000..29887aeea4a --- /dev/null +++ b/TOF/MakeCDBEntryT0FillOnlineCalib.C @@ -0,0 +1,22 @@ +MakeCDBEntryT0FillOnlineCalib(Float_t offset = 0., Float_t coefficient = 0., Int_t startRun = 0, Int_t endRun = AliCDBRunRange::Infinity()) +{ + + /* create object */ + AliTOFT0FillOnlineCalib *obj = new AliTOFT0FillOnlineCalib(); + obj->SetOffset(offset); + obj->SetCoefficient(coefficient); + + /* create cdb info */ + AliCDBId id("TOF/Calib/T0FillOnlineCalib", startRun, endRun); + AliCDBMetaData *md = new AliCDBMetaData(); + md->SetResponsible("Roberto Preghenella"); + md->SetComment("Online T0-fill calibration parameters"); + md->SetAliRootVersion(gSystem->Getenv("ARVERSION")); + md->SetBeamPeriod(0); + + /* put object in cdb */ + AliCDBManager *cdb = AliCDBManager::Instance(); + cdb->SetDefaultStorage("local://$ALICE_ROOT/OCDB"); + cdb->GetDefaultStorage()->Put(obj, id, md); + +} diff --git a/TOF/ShuttleInput/Hits.root b/TOF/ShuttleInput/Hits.root new file mode 100644 index 0000000000000000000000000000000000000000..7fc72da52ae7bb1f772fbcb07f22a7db5a6a8b1d GIT binary patch literal 219268 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¥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 bn;_Z$YEb{L#tYs5TjM5$7jS>+G@}0iC!V3x literal 0 HcmV?d00001 diff --git a/TOF/TOFPhysicsConfig.xml b/TOF/TOFPhysicsConfig.xml index 9528f0214b8..f5f4d79201d 100644 --- a/TOF/TOFPhysicsConfig.xml +++ b/TOF/TOFPhysicsConfig.xml @@ -2,10 +2,10 @@ - - + + ]> - + diff --git a/TOF/TOFPreprocessor.C b/TOF/TOFPreprocessor.C index 4e27115ac39..5ef9f198fb8 100644 --- a/TOF/TOFPreprocessor.C +++ b/TOF/TOFPreprocessor.C @@ -21,7 +21,7 @@ void TOFPreprocessor(Char_t * RunType="PHYSICS") AliTestShuttle::SetMainRefStorage("local://$ALICE_ROOT/OCDB/SHUTTLE/TestShuttle/TestReference"); // create AliTestShuttle instance - Int_t nrun = 7; + Int_t nrun = 104892; AliTestShuttle* shuttle = new AliTestShuttle(nrun, 30, 980); //setting run type to physiscs shuttle->SetInputRunType(RunType); @@ -35,6 +35,7 @@ void TOFPreprocessor(Char_t * RunType="PHYSICS") shuttle->SetDCSInput(dcsAliasMap); // processing files. for the time being, the files are local. + shuttle->AddInputFile(AliTestShuttle::kDAQ, "TOF", "HITS", "MON", "$ALICE_ROOT/TOF/ShuttleInput/Hits.root"); shuttle->AddInputFile(AliTestShuttle::kDAQ, "TOF", "DELAYS", "MON", "$ALICE_ROOT/TOF/ShuttleInput/Total.root"); shuttle->AddInputFile(AliTestShuttle::kDAQ, "TOF", "RUNLevel", "MON", "$ALICE_ROOT/TOF/ShuttleInput/Partial.root"); shuttle->AddInputFile(AliTestShuttle::kDCS, "TOF", "TofFeeLightMap", "", "$ALICE_ROOT/TOF/ShuttleInput/TOFFEElight.20090616.102605.8000"); @@ -64,22 +65,10 @@ void TOFPreprocessor(Char_t * RunType="PHYSICS") gBenchmark->Stop("process"); gBenchmark->Print("process"); - // checking the file which should have been created - AliCDBEntry* chkEntry = AliCDBManager::Instance()->GetStorage(AliShuttleInterface::GetMainCDB())->Get("TOF/Calib/ParOnlineDelay", nrun); - if (!chkEntry) - { - printf("The file is not there. Something went wrong.\n"); - return; - } - - AliTOFDataDCS* output = dynamic_cast (chkEntry->GetObject()); - // If everything went fine, draw the result - if (output) - printf("Output found.\n"); - // output->Draw(); } + TMap* CreateDCSAliasMap() { // Creates a DCS structure @@ -97,38 +86,35 @@ TMap* CreateDCSAliasMap() aliasMap->SetOwner(1); TRandom random; + /* TDatime *datime = new TDatime(); Int_t time = datime->GetTime(); Int_t date = datime->GetDate(); Int_t pid = gSystem->GetPid(); delete datime; Int_t iseed = TMath::Abs(10000 * pid + time - date); + */ - //Float_t thrHVv=7.75, thrHVc=3, thrLVv=2.75, thrLVc=2.5, - //thrFEEthr=1.5, thrFEEt=10, thrTemp=35, thrPress=1000; - //Float_t tentHVv=6.75, tentHVc=2, tentLVv=1.75, tentLVc=1.5, - // tentFEEthr=0.5, te result=0; - //ntFEEt=20, tentTemp=25, tentPress=900; - //Float_t sigmaHVv=1, sigmaHVc=0.25, sigmaLVv=0.25, sigmaLVc=0.25, - // sigmaFEEthr=0.05, sigmaFEEt=5, sigmaTemp=1, sigmaPress=10; Float_t tentHVv=6500, tentHVi=80; Float_t sigmaHVv=10, sigmaHVi=10; - Float_t tent=0, sigma=0, thr=0; + Float_t tent=0, sigma=0;//, thr=0; // to have all the aliases, decomment the following line: Int_t NAliases=360, NHV=90; + // if not all the aliases are there, use this: //Int_t NAliases=120, NHV=90; + TString sindex; + TString aliasName; + for(int nAlias=0;nAliasSetOwner(1); - TString sindex; - TString aliasName; if (nAliassigma){ @@ -179,11 +165,202 @@ TMap* CreateDCSAliasMap() } aliasMap->Add(new TObjString(aliasName), valueSet); + + } + + + + + const Int_t kNsectors = 18; + const Int_t kNplates = 5; + + UInt_t baseWord = 0; + UInt_t oldBaseWord = 0; + + for(int i=0;iSetOwner(1); + + aliasName = "TOF_HVSTATUS_"; + sindex.Form("SM%02dMOD%1d",i,j); + aliasName += sindex; + + + //for (int timeStamp=0;timeStamp<6000;timeStamp+=600) { + for (int timeStamp=0;timeStamp<1201;timeStamp+=600) { + if (timeStamp==0 /*|| timeStamp==1200*/) { + baseWord = CreateHVword(i,j, kTRUE); + oldBaseWord = baseWord; + AliDCSValue* dcsVal = new AliDCSValue(baseWord, timeStamp); + valueSetHV->Add(dcsVal); + } + else { + if (random.Uniform(0.,1.)>=0.5) { + baseWord = CreateHVword(i,j, kFALSE); + if (baseWord<=oldBaseWord) { + oldBaseWord = baseWord; + AliDCSValue* dcsVal = new AliDCSValue(baseWord, timeStamp); + valueSetHV->Add(dcsVal); + } + else { + AliDCSValue* dcsVal = new AliDCSValue(oldBaseWord, timeStamp); + valueSetHV->Add(dcsVal); + } + //Info(Form(" %2d %1d %s %d %d",i,j,aliasName,timeStamp,baseWord)); + } + } + } + + /* + baseWord = CreateHVword(i,j, kTRUE); + AliDCSValue* dcsVal0 = new AliDCSValue(baseWord, 0); + valueSetHV->Add(dcsVal0); + + if ((i==0 && j==2) || (i==9 && j==4)) { + baseWord = CreateHVword(i,j, kFALSE); + AliDCSValue* dcsVal1 = new AliDCSValue(baseWord, 600); + valueSetHV->Add(dcsVal1); + } + + baseWord = CreateHVword(i,j, kTRUE); + AliDCSValue* dcsVal2 = new AliDCSValue(baseWord, 1200); + valueSetHV->Add(dcsVal2); + */ + + aliasMap->Add(new TObjString(aliasName), valueSetHV); + + } + + + const Int_t kNddl = 72; + baseWord = 0; + oldBaseWord = 0; + + for(int i=0;iSetOwner(1); + + aliasName = "TOF_FEACSTATUS_"; + sindex.Form("%02d",i); + aliasName += sindex; + + + //for (int timeStamp=0;timeStamp<6000;timeStamp+=600) { + for (int timeStamp=0;timeStamp<1201;timeStamp+=400) { + if (timeStamp==0 /*|| timeStamp==1200*/) { + baseWord = CreateLVword(kTRUE); + AliDCSValue* dcsVal = new AliDCSValue(baseWord, timeStamp); + valueSetLV->Add(dcsVal); + oldBaseWord = baseWord; + //Info(Form(" %2d %s %d %d",i,aliasName,timeStamp,baseWord)); + } + else { + if (random.Uniform(0.,1.)>=0.5) { + baseWord = CreateLVword(kFALSE); + if (baseWord<=oldBaseWord) { + oldBaseWord = baseWord; + AliDCSValue* dcsVal = new AliDCSValue(baseWord, timeStamp); + valueSetLV->Add(dcsVal); + } + else { + AliDCSValue* dcsVal = new AliDCSValue(oldBaseWord, timeStamp); + valueSetLV->Add(dcsVal); + } + //Info(Form(" %2d %1d %s %d %d",i,j,aliasName,timeStamp,baseWord)); + } + } + } + + /* + baseWord = CreateLVword(kTRUE); + AliDCSValue* dcsVal0 = new AliDCSValue(baseWord, 0); + valueSetLV->Add(dcsVal0); + + if (i==7 || i==9) { + baseWord = CreateLVword(kFALSE); + AliDCSValue* dcsVal1 = new AliDCSValue(baseWord, 400); + valueSetLV->Add(dcsVal1); + } + else if (i==50 || i==35) { + baseWord = CreateLVword(kFALSE); + AliDCSValue* dcsVal2 = new AliDCSValue(baseWord, 800); + valueSetLV->Add(dcsVal2); + } + + baseWord = CreateLVword(kTRUE); + AliDCSValue* dcsVal3 = new AliDCSValue(baseWord, 1200); + valueSetLV->Add(dcsVal3); + */ + + aliasMap->Add(new TObjString(aliasName), valueSetLV); + } + return aliasMap; } + +UInt_t CreateHVword(Int_t nSector, Int_t nPlate, Bool_t isAtBorder) { + // + // + // + + UInt_t baseWord = 0; + UInt_t word = 0; + TRandom random; + + for (Int_t iStrip=0; iStrip=13 && nSector<=15) + word = 0; + } + else { + random.Uniform(0.,1.)<0.5 ? word = 0 : word = 1; + if (nPlate==2 && nSector>=13 && nSector<=15) + word = 0; + word = 0; + } + + AliBitPacking::PackWord(word,baseWord,iStrip,iStrip); + } + + return baseWord; + +} + + +UInt_t CreateLVword(Bool_t isAtBorder) { + // + // + // + + UInt_t baseWord = 0; + UInt_t word = 0; + TRandom random; + + for (Int_t iFeac=0; iFeac<8; iFeac++) { + + if (isAtBorder) + word = 1; + else { + random.Uniform(0.,1.)<0.5 ? word = 0 : word = 1; + word = 0; + } + + AliBitPacking::PackWord(word,baseWord,iFeac,iFeac); + } + + return baseWord; + +} + + TMap* ReadDCSAliasMap() { // Open a file that contains DCS input data @@ -214,3 +391,5 @@ void WriteDCSAliasMap() AliCDBManager::Instance()->Put(dcsAliasMap, id, &metaData); } + + diff --git a/TOF/TOFPreprocessorLVHV.C b/TOF/TOFPreprocessorLVHV.C deleted file mode 100644 index 6ed8f3b35bd..00000000000 --- a/TOF/TOFPreprocessorLVHV.C +++ /dev/null @@ -1,448 +0,0 @@ -/* -$Id: TOFPreprocessor.C 38207 2010-01-13 14:08:33Z rpreghen $ -*/ - -// This class runs the test TOF preprocessor -// It uses AliTestShuttle to simulate a full Shuttle process - -// The input data is created in the functions -// CreateDCSAliasMap() creates input that would in the same way come from DCS -// ReadDCSAliasMap() reads from a file -// CreateInputFilesMap() creates a list of local files, that can be accessed by the shuttle - - -#ifndef __CINT__ -#include "TDatime.h" -#include "TMap.h" -#include "TFile.h" -#include "TObjString.h" -#include "TRandom.h" -#include "TBenchmark.h" -#include "TString.h" - -#include "AliBitPacking.h" -#include "AliCDBEntry.h" -#include "AliCDBManager.h" -#include "AliCDBStorage.h" -#include "AliDCSValue.h" -#include "AliLog.h" -#include "AliTestShuttle.h" -#include "AliShuttleInterface.h" - -#include "AliTOFDataDCS.h" -#include "AliTOFPreprocessor.h" -#include "AliTOFGeometry.h" -//#include "AliTOFChannelOnlineArray.h" -#endif - -void TOFPreprocessorLVHV(Char_t * RunType="PHYSICS"); -TMap* CreateDCSAliasMap(); -TMap* ReadDCSAliasMap(); -//TMap* CreateInputFilesMap(); -UInt_t CreateHVword(Int_t sec, Int_t pla, Bool_t isAtBorder); -UInt_t CreateLVword(Bool_t isAtBorder); - - - -extern TBenchmark *gBenchmark; -void TOFPreprocessorLVHV(Char_t * RunType) -{ - gSystem->Load("$ALICE_ROOT/SHUTTLE/TestShuttle/libTestShuttle.so"); - - AliLog::SetClassDebugLevel("AliTOFPreprocessor",2); - // initialize location of CDB - AliTestShuttle::SetMainCDB("local://$ALICE_ROOT/OCDB/SHUTTLE/TestShuttle/TestCDB"); - AliTestShuttle::SetMainRefStorage("local://$ALICE_ROOT/OCDB/SHUTTLE/TestShuttle/TestReference"); - - // create AliTestShuttle instance - Int_t nrun = 7; - AliTestShuttle* shuttle = new AliTestShuttle(nrun, 30, 980); - //setting run type to physiscs - shuttle->SetInputRunType(RunType); - shuttle->SetTimeCreated(20); - shuttle->SetDCSQueryOffset(20); - - // Generation of "fake" input DCS data - TMap* dcsAliasMap = CreateDCSAliasMap(); - - TFile *file=TFile::Open("dcsMap.root","RECREATE"); - file->cd(); - dcsAliasMap->Write(); - file->Close(); - - - // now give the alias map to the shuttle - shuttle->SetDCSInput(dcsAliasMap); - - // processing files. for the time being, the files are local. - shuttle->AddInputFile(AliTestShuttle::kDAQ, "TOF", "DELAYS", "MON", "$ALICE_ROOT/TOF/ShuttleInput/Total.root"); - shuttle->AddInputFile(AliTestShuttle::kDAQ, "TOF", "RUNLevel", "MON", "$ALICE_ROOT/TOF/ShuttleInput/Partial.root"); - shuttle->AddInputFile(AliTestShuttle::kDCS, "TOF", "TofFeeLightMap", "", "$ALICE_ROOT/TOF/ShuttleInput/TOFFEElight.20090616.102605.8000"); - shuttle->AddInputFile(AliTestShuttle::kDCS, "TOF", "TofFeeMap", "", "$ALICE_ROOT/TOF/ShuttleInput/TOFFEE.20091217.194708.105517"); - - TString filename; - TString LDCname; - //char filename[100]; - //char LDCname[5]; - - for (Int_t iLDC=0;iLDC<2;iLDC++){ - filename.Form("$ALICE_ROOT/TOF/ShuttleInput/TOFoutPulserLDC_%02i.root",iLDC*2); - LDCname.Form("LDC%i",iLDC*2); - shuttle->AddInputFile(AliTestShuttle::kDAQ, "TOF", "PULSER", LDCname, filename); - filename.Form("$ALICE_ROOT/TOF/ShuttleInput/TOFoutNoiseLDC_%02i.root",iLDC*2); - LDCname.Form("LDC%i",iLDC*2); - shuttle->AddInputFile(AliTestShuttle::kDAQ, "TOF", "NOISE", LDCname, filename); - } - - - // instantiation of the preprocessor - AliPreprocessor* pp = new AliTOFPreprocessor(shuttle); - pp->Print(); - - // preprocessing - gBenchmark->Start("process"); - shuttle->Process(); - gBenchmark->Stop("process"); - gBenchmark->Print("process"); - - // checking the file which should have been created - AliCDBEntry* chkEntry = AliCDBManager::Instance()->GetStorage(AliShuttleInterface::GetMainCDB())->Get("TOF/Calib/ParOnlineDelay", nrun); - if (!chkEntry) - { - printf("The file is not there. Something went wrong.\n"); - return; - } - - AliTOFDataDCS* output = dynamic_cast (chkEntry->GetObject()); - // If everything went fine, draw the result - if (output) - printf("Output found.\n"); - // output->Draw(); - - - //shuttle->Delete(); - -} - -TMap* CreateDCSAliasMap() -{ - // Creates a DCS structure - // The structure is the following: - // TMap (key --> value) - // --> - // is a string - // is a TObjArray of AliDCSValue - // An AliDCSValue consists of timestamp and a value in form of a AliSimpleValue - - // In this example 6 aliases exists: DCSAlias1 ... DCSAlias6 - // Each contains 1000 values randomly generated by TRandom::Gaus + 5*nAlias - - TMap* aliasMap = new TMap; - aliasMap->SetOwner(1); - - TRandom random; - /* - TDatime *datime = new TDatime(); - Int_t time = datime->GetTime(); - Int_t date = datime->GetDate(); - Int_t pid = gSystem->GetPid(); - delete datime; - Int_t iseed = TMath::Abs(10000 * pid + time - date); - */ - - - Float_t tentHVv=6500, tentHVi=80; - Float_t sigmaHVv=10, sigmaHVi=10; - - Float_t tent=0, sigma=0;//, thr=0; - // to have all the aliases, decomment the following line: - Int_t NAliases=360, NHV=90; - - - // if not all the aliases are there, use this: - //Int_t NAliases=120, NHV=90; - - TString sindex; - TString aliasName; - - for(int nAlias=0;nAliasSetOwner(1); - - if (nAliassigma){ - AliDCSValue* dcsVal = new AliDCSValue(gaussvalue, timeStamp); - valueSet->Add(dcsVal); - } - } - - aliasMap->Add(new TObjString(aliasName), valueSet); - - } - - - - - const Int_t kNsectors = 18; - const Int_t kNplates = 5; - - UInt_t baseWord = 0; - UInt_t oldBaseWord = 0; - - for(int i=0;iSetOwner(1); - - aliasName = "TOF_HVSTATUS_"; - sindex.Form("SM%02dMOD%1d",i,j); - aliasName += sindex; - - - //for (int timeStamp=0;timeStamp<6000;timeStamp+=600) { - for (int timeStamp=0;timeStamp<1201;timeStamp+=600) { - if (timeStamp==0 /*|| timeStamp==1200*/) { - baseWord = CreateHVword(i,j, kTRUE); - oldBaseWord = baseWord; - AliDCSValue* dcsVal = new AliDCSValue(baseWord, timeStamp); - valueSetHV->Add(dcsVal); - } - else { - if (random.Uniform(0.,1.)>=0.5) { - baseWord = CreateHVword(i,j, kFALSE); - if (baseWord<=oldBaseWord) { - oldBaseWord = baseWord; - AliDCSValue* dcsVal = new AliDCSValue(baseWord, timeStamp); - valueSetHV->Add(dcsVal); - } - else { - AliDCSValue* dcsVal = new AliDCSValue(oldBaseWord, timeStamp); - valueSetHV->Add(dcsVal); - } - //Info(Form(" %2d %1d %s %d %d",i,j,aliasName,timeStamp,baseWord)); - } - } - } - - /* - baseWord = CreateHVword(i,j, kTRUE); - AliDCSValue* dcsVal0 = new AliDCSValue(baseWord, 0); - valueSetHV->Add(dcsVal0); - - if ((i==0 && j==2) || (i==9 && j==4)) { - baseWord = CreateHVword(i,j, kFALSE); - AliDCSValue* dcsVal1 = new AliDCSValue(baseWord, 600); - valueSetHV->Add(dcsVal1); - } - - baseWord = CreateHVword(i,j, kTRUE); - AliDCSValue* dcsVal2 = new AliDCSValue(baseWord, 1200); - valueSetHV->Add(dcsVal2); - */ - - aliasMap->Add(new TObjString(aliasName), valueSetHV); - - } - - - const Int_t kNddl = 72; - baseWord = 0; - oldBaseWord = 0; - - for(int i=0;iSetOwner(1); - - aliasName = "TOF_FEACSTATUS_"; - sindex.Form("%02d",i); - aliasName += sindex; - - - //for (int timeStamp=0;timeStamp<6000;timeStamp+=600) { - for (int timeStamp=0;timeStamp<1201;timeStamp+=400) { - if (timeStamp==0 /*|| timeStamp==1200*/) { - baseWord = CreateLVword(kTRUE); - AliDCSValue* dcsVal = new AliDCSValue(baseWord, timeStamp); - valueSetLV->Add(dcsVal); - oldBaseWord = baseWord; - //Info(Form(" %2d %s %d %d",i,aliasName,timeStamp,baseWord)); - } - else { - if (random.Uniform(0.,1.)>=0.5) { - baseWord = CreateLVword(kFALSE); - if (baseWord<=oldBaseWord) { - oldBaseWord = baseWord; - AliDCSValue* dcsVal = new AliDCSValue(baseWord, timeStamp); - valueSetLV->Add(dcsVal); - } - else { - AliDCSValue* dcsVal = new AliDCSValue(oldBaseWord, timeStamp); - valueSetLV->Add(dcsVal); - } - //Info(Form(" %2d %1d %s %d %d",i,j,aliasName,timeStamp,baseWord)); - } - } - } - - /* - baseWord = CreateLVword(kTRUE); - AliDCSValue* dcsVal0 = new AliDCSValue(baseWord, 0); - valueSetLV->Add(dcsVal0); - - if (i==7 || i==9) { - baseWord = CreateLVword(kFALSE); - AliDCSValue* dcsVal1 = new AliDCSValue(baseWord, 400); - valueSetLV->Add(dcsVal1); - } - else if (i==50 || i==35) { - baseWord = CreateLVword(kFALSE); - AliDCSValue* dcsVal2 = new AliDCSValue(baseWord, 800); - valueSetLV->Add(dcsVal2); - } - - baseWord = CreateLVword(kTRUE); - AliDCSValue* dcsVal3 = new AliDCSValue(baseWord, 1200); - valueSetLV->Add(dcsVal3); - */ - - aliasMap->Add(new TObjString(aliasName), valueSetLV); - - } - - - return aliasMap; -} - - -UInt_t CreateHVword(Int_t nSector, Int_t nPlate, Bool_t isAtBorder) { - // - // - // - - UInt_t baseWord = 0; - UInt_t word = 0; - TRandom random; - - for (Int_t iStrip=0; iStrip=13 && nSector<=15) - word = 0; - } - else { - random.Uniform(0.,1.)<0.5 ? word = 0 : word = 1; - if (nPlate==2 && nSector>=13 && nSector<=15) - word = 0; - word = 0; - } - - AliBitPacking::PackWord(word,baseWord,iStrip,iStrip); - } - - return baseWord; - -} - - -UInt_t CreateLVword(Bool_t isAtBorder) { - // - // - // - - UInt_t baseWord = 0; - UInt_t word = 0; - TRandom random; - - for (Int_t iFeac=0; iFeac<8; iFeac++) { - - if (isAtBorder) - word = 1; - else { - random.Uniform(0.,1.)<0.5 ? word = 0 : word = 1; - word = 0; - } - - AliBitPacking::PackWord(word,baseWord,iFeac,iFeac); - } - - return baseWord; - -} - - -TMap* ReadDCSAliasMap() -{ - // Open a file that contains DCS input data - // The CDB framework is used to open the file, this means the file is located - // in $ALICE_ROOT/SHUTTLE/TestShuttle/TestCDB//DCS/Data - // The file contains an AliCDBEntry that contains a TMap with the DCS structure. - // An explanation of the structure can be found in CreateDCSAliasMap() - - AliCDBEntry *entry = AliCDBManager::Instance()->Get("TOF/DCS/Data", 0); - return dynamic_cast (entry->GetObject()); -} - -void WriteDCSAliasMap() -{ - // This writes the output from CreateDCSAliasMap to a CDB file - - TMap* dcsAliasMap = CreateDCSAliasMap(); - - AliCDBMetaData metaData; - metaData.SetBeamPeriod(0); - metaData.SetResponsible("Chiara"); - metaData.SetComment("Test object for TOFPreprocessor.C"); - - AliCDBId id("TOF/DCS/Data", 0, 0); - - // initialize location of CDB - AliCDBManager::Instance()->SetDefaultStorage("local://$ALICE_ROOT/OCDB/SHUTTLE/TestShuttle/TestCDB"); - - AliCDBManager::Instance()->Put(dcsAliasMap, id, &metaData); -} diff --git a/TOF/TOFbaseLinkDef.h b/TOF/TOFbaseLinkDef.h index 04ff98b6a82..b3777467d9c 100644 --- a/TOF/TOFbaseLinkDef.h +++ b/TOF/TOFbaseLinkDef.h @@ -15,6 +15,7 @@ #pragma link C++ class AliTOFrawData+; #pragma link C++ class AliTOFRawStream+; #pragma link C++ class AliTOFHitData+; +#pragma link C++ class AliTOFHitField+; #pragma link C++ class AliTOFHitDataBuffer+; #pragma link C++ class AliTOFDecoder+; #pragma link C++ class AliTOFChannelOffline+; @@ -38,6 +39,7 @@ #pragma link C++ class AliTOFDeltaBCOffset+; #pragma link C++ class AliTOFCTPLatency+; #pragma link C++ class AliTOFT0Fill+; +#pragma link C++ class AliTOFT0FillOnlineCalib+; #pragma link C++ class AliTOFDCSmaps+; #pragma link C++ class AliTOFLvHvDataPoints+; diff --git a/TOF/TOFda.cxx b/TOF/TOFda.cxx index a221e7928f7..8e0b7e350e3 100644 --- a/TOF/TOFda.cxx +++ b/TOF/TOFda.cxx @@ -3,18 +3,18 @@ TOF DA for online calibration Contact: Chiara.Zampolli@bo.infn.it -Link: www.bo.infn.it/~zampolli + Roberto.Preghenella@bo.infn.it + Run Type: PHYSICS DA Type: MON -Number of events needed: depending on the run, being run-level -Input Files: TOFdaTotal.root, to be updated if existing -Output Files: TOFdaRun.root, TOFdaTotal.root, both to be exported to the DAQ FXS -Trigger types used: PHYSICS_EVENT +Number of events needed: +Input Files: no input +Output Files: TOFdaHits.root +Event types used: PHYSICS_EVENT */ -#define FILE_TOTAL "TOFdaTotal.root" -#define FILE_RUN "TOFdaRun.root" +#define FILE_HITS "TOFdaHits.root" // DATE #include "event.h" @@ -25,69 +25,66 @@ Trigger types used: PHYSICS_EVENT #include //AliRoot -#include -#include -#include -#include -#include -#include -#include -#include -#include +#include "TROOT.h" +#include "AliTOFRawStream.h" +#include "AliRawReaderDate.h" +#include "AliRawReader.h" +#include "AliDAQ.h" +#include "AliTOFHitData.h" +#include "AliTOFHitDataBuffer.h" +#include "AliTOFDaConfigHandler.h" +#include "AliTOFHitField.h" +#include "AliTOFcalibHisto.h" +#include "AliLog.h" //ROOT -#include -#include -#include -#include -#include -#include +#include "TFile.h" +#include "TKey.h" +#include "TH2S.h" +#include "TObject.h" +#include "TMath.h" +#include "TSystem.h" #include "TROOT.h" #include "TPluginManager.h" #include "TSAXParser.h" +#include "TTree.h" /* Main routine Arguments: 1- monitoring data source */ -int main(int argc, char **argv) { - +int +main(int argc, char **argv) +{ + /* magic line from Rene */ gROOT->GetPluginManager()->AddHandler("TVirtualStreamerInfo", - "*", - "TStreamerInfo", - "RIO", - "TStreamerInfo()"); - - AliTOFGeometry * geom = new AliTOFGeometry(); - - static const Int_t size = AliTOFGeometry::NPadXSector()*AliTOFGeometry::NSectors(); - static const Int_t nbins = 500; - static const Int_t binmin = -20; - const Float_t c = 2.99792458E10; //speed of light [cm/s] - TH1F::AddDirectory(0); - TH2S * htofPartial = new TH2S("htof","histo with delays", - size,-0.5,size*1.-0.5, - nbins,binmin-0.5,nbins*1.+binmin-0.5); + "*", + "TStreamerInfo", + "RIO", + "TStreamerInfo()"); - int status; /* log start of process */ printf("TOF DA started\n"); - + /* check that we got some arguments = list of files */ if (argc!=2) { printf("Wrong number of arguments\n"); return -1; } + /* + * CONFIG + */ + /* retrieve config file */ int getConfigFile = daqDA_DB_getFile("TOFPhysicsConfig.xml","TOFPhysicsConfig.xml"); if (getConfigFile != 0){ printf("Failed to retrieve config file from DB! returning...\n"); return -1; } - + /* parse config file */ AliTOFDaConfigHandler* tofHandler = new AliTOFDaConfigHandler(); TSAXParser *parser = new TSAXParser(); parser->ConnectToHandler("AliTOFDaConfigHandler", tofHandler); @@ -95,300 +92,228 @@ int main(int argc, char **argv) { printf("Failed parsing config file! retunring... \n"); return -1; } - - Int_t debugFlag = tofHandler->GetDebugFlag(); - printf("The debug flag is %i\n",debugFlag); - Int_t t0Flag = tofHandler->GetT0Flag(); - printf("The T0 flag is %i\n\n",t0Flag); - if (t0Flag) { - printf("The T0 time will be subtracted from the measured TOF time. So, in TDC bins: \n"); - printf("tof = tofRaw - (rawReaderT0->GetData(51,0)+rawReaderT0->GetData(52,0))/2) \n\n"); + /* setup config params */ + Int_t meanMultiplicity = tofHandler->GetMeanMultiplicity(); /* average expected TOF multiplicity */ + Int_t maxHits = tofHandler->GetMaxHits(); /* max number of hits to be collected */ + printf("current settings:\n"); + printf(" - meanMultiplicity = %d\n", meanMultiplicity); + printf(" - maxHits = %d\n", maxHits); + /* constants */ + const Int_t nChannels = 157248; + Int_t noiseCheckTrigger = 10; /* first noise check after 10 events */ + Float_t meanChannelRate = (Float_t)meanMultiplicity / (Float_t)nChannels; /* average expected channel rate (hits/event) */ + Float_t noiseThreshold = 10. * meanChannelRate; /* noise threshold (hits/event) */ + Int_t minNoiseHits = 10; /* min number of channel hits to check noise */ + /* counters and flags */ + Int_t nEvents, totHits; + Int_t nChHits[nChannels]; + Bool_t noiseFlag[nChannels]; + /* variables */ + Int_t nhits, ddl, slot, trm, chain, tdc, channel, indexEO, index, timebin, totbin, deltaBC, l0l1latency; + Float_t noiseHitThreshold; + + /* + * INIT + */ + + /* init counters and flags */ + nEvents = 0; + totHits = 0; + for (Int_t ich = 0; ich < nChannels; ich++) { + nChHits[ich] = 0; + noiseFlag[ich] = 0; } - else { - printf("The T0 time will not be used.\n"); - printf("tof = tofRaw \n\n"); - } - - /* init some counters */ - int nevents_physics=0; - int nevents_total=0; - - Int_t iev=0; - Int_t nPDBEntriesToT = 0; - Int_t nDBEntriesToT = 0; - AliTOFHitData *HitData; - Int_t dummy = -1; - Int_t Volume[5]; - for (Int_t i=0;i<5;i++) Volume[i]=-1; - AliTOFRawStream *rawStreamTOF = new AliTOFRawStream(); - AliTOFHitDataBuffer *DataBuffer; - AliTOFHitDataBuffer *PackedDataBuffer; - Int_t nDBEntries = 0; - Int_t nPDBEntries = 0; + /* TOF raw data handling */ + AliTOFRawStream *rawStream = new AliTOFRawStream(); + AliTOFHitDataBuffer *pdb = NULL; + AliTOFHitData *hit = NULL; + /* calib histo */ + AliTOFcalibHisto calibHisto; + calibHisto.LoadCalibHisto(); + /* open output file */ + TFile *fileOut = new TFile(FILE_HITS, "RECREATE"); + /* create hit field data structure */ + AliTOFHitField *hitField = new AliTOFHitField(); + /* create temporary tree */ + TTree *tempTree = new TTree("tempTree", "temporary tree"); + tempTree->Branch("hit", "AliTOFHitField", &hitField); + /* create output tree */ + TTree *outTree = new TTree("hitTree", "hit tree"); + outTree->Branch("hit", "AliTOFHitField", &hitField); + + /* + * ONLINE MONITOR + */ + + AliLog::SetGlobalLogLevel(AliLog::kFatal); struct eventHeaderStruct *event; - eventTypeType eventT; - + int ret; /* define data source : this is argument 1 */ - status=monitorSetDataSource( argv[1] ); - if (status!=0) { - printf("monitorSetDataSource() failed : %s\n",monitorDecodeError(status)); + ret = monitorSetDataSource(argv[1]); + if (ret != 0) { + printf("monitorSetDataSource() failed : %s\n",monitorDecodeError(ret)); return -1; } - /* declare monitoring program */ - status=monitorDeclareMp( __FILE__ ); - if (status!=0) { - printf("monitorDeclareMp() failed : %s\n",monitorDecodeError(status)); + ret = monitorDeclareMp("tofDA"); + if (ret != 0) { + printf("monitorDeclareMp() failed : %s\n",monitorDecodeError(ret)); return -1; } - /* define wait event timeout - 1s max */ monitorSetNowait(); monitorSetNoWaitNetworkTimeout(1000); - - /* main loop (infinite) */ - for(;;) { + + /* loop over events */ + while (1) { /* check shutdown condition */ if (daqDA_checkShutdown()) break; + /* + * NOISE CHECK + */ + + /* check number of events and check noise */ + if (nEvents >= noiseCheckTrigger || totHits >= maxHits) { + noiseHitThreshold = noiseThreshold * nEvents; + printf("noise check triggered after %d events: threshold is %f hits\n", nEvents, noiseHitThreshold); + /* loop over all channels */ + for (Int_t ich = 0; ich < nChannels; ich++) { + /* check */ + if (nChHits[ich] < minNoiseHits || noiseFlag[ich] || nChHits[ich] < noiseHitThreshold) continue; + printf("channel %d tagged as noisy (%d hits): disabled\n", ich, nChHits[ich]); + noiseFlag[ich] = kTRUE; + totHits -= nChHits[ich]; + } /* end of loop over all channels */ + /* set new noise check trigger value */ + noiseCheckTrigger *= 10; + } /* end of noise check */ + + /* break loop when maximum number of hits exceeded */ + if (totHits >= maxHits) { + printf("maximum number of hits exceeded (%d): stop hit collection\n", maxHits); + break; + } + + /* + * GET EVENT + */ + /* get next event (blocking call until timeout) */ - status=monitorGetEventDynamic((void **)&event); - if (status==MON_ERR_EOF) { + ret = monitorGetEventDynamic((void **)&event); + if (ret == MON_ERR_EOF) { printf ("End of File detected\n"); break; /* end of monitoring file has been reached */ } - - if (status!=0) { - printf("monitorGetEventDynamic() failed : %s\n",monitorDecodeError(status)); + if (ret != 0) { + printf("monitorGetEventDynamic() failed : %s\n",monitorDecodeError(ret)); break; } - /* retry if got no event */ if (event==NULL) continue; - - iev++; - - /* use event - here, just write event id to result file */ - nevents_total++; - eventT=event->eventType; - switch (event->eventType) { - - /* START OF RUN */ - case START_OF_RUN: - break; - /* END START OF RUN */ - - /* END OF RUN */ - case END_OF_RUN: - break; - /* END END OF RUN */ - - case PHYSICS_EVENT: - nevents_physics++; - AliRawReader *rawReader = new AliRawReaderDate((void*)event); - //rawReader->RequireHeader(kFALSE); - - //T0 event - Int_t meantime = 0; - AliT0RawReader *rawReaderT0 = new AliT0RawReader(rawReader,kTRUE); - if (!rawReaderT0->Next()) { - printf("T0: no raw data found!\n"); - } - else { - /* - Int_t allData[105][5]; - for (Int_t i=0; i<105; i++) { - allData[i][0]=rawReaderT0->GetData(i,0); - } - meantime = allData[49][0]; - */ - //meantime = rawReaderT0->GetData(49,0); //OLD - meantime = (Int_t)((rawReaderT0->GetData(51,0)+rawReaderT0->GetData(52,0))/2.); //Alla - if (debugFlag > 0) { - printf("\nT0 for the current event:\n"); // debugging purpose - printf("time zero = %i (TDC bin)\n", meantime); // debugging purpose - printf("time zero = %f (ns)\n\n", (Float_t)(meantime)*24.4*1E-3); // debugging purpose - } - } - - delete rawReaderT0; - rawReaderT0 = 0x0; - rawReader->Reset(); - - //TOF event - dummy = -1; - for (Int_t ii=0; ii<5; ii++) Volume[ii]=-1; - rawStreamTOF->SetRawReader(rawReader); - //rawReader->ReadHeader(); - rawStreamTOF->ResetBuffers(); - rawStreamTOF->DecodeDDL(0, AliDAQ::NumberOfDdls("TOF") - 1,0); - nPDBEntriesToT = 0; - nDBEntriesToT = 0; - for (Int_t iDDL = 0; iDDL < AliDAQ::NumberOfDdls("TOF"); iDDL++) { - - /* read decoded data */ - DataBuffer = rawStreamTOF->GetDataBuffer(iDDL); - PackedDataBuffer = rawStreamTOF->GetPackedDataBuffer(iDDL); - - /* get buffer entries */ - nDBEntries = DataBuffer->GetEntries(); - nPDBEntries = PackedDataBuffer->GetEntries(); - nPDBEntriesToT+=nPDBEntries; - nDBEntriesToT+=nDBEntries; - - //for (Int_t iHit = 0; iHit < nDBEntries; iHit++) { - // HitData = DataBuffer->GetHit(iHit); - /* store volume information */ - // rawStreamTOF->EquipmentId2VolumeId(HitData, Volume); - //} - /* reset buffer */ - DataBuffer->Reset(); - - /* read data buffer hits */ - for (Int_t iHit = 0; iHit < nPDBEntries; iHit++) { - HitData = PackedDataBuffer->GetHit(iHit); - /* add volume information */ - HitData->SetDDLID(iDDL); - rawStreamTOF->EquipmentId2VolumeId(HitData, Volume); - if (Volume[0]==-1 || - Volume[1]==-1 || - Volume[2]==-1 || - Volume[3]==-1 || - Volume[4]==-1) continue; - else { - dummy = Volume[3]; - Volume[3] = Volume[4]; - Volume[4] = dummy; - Int_t tofRaw = (Int_t)((Double_t)HitData->GetTime()*1E3/AliTOFGeometry::TdcBinWidth()); - Int_t tof; - if (!t0Flag) tof = tofRaw; - else tof = tofRaw - meantime; - Int_t index = geom->GetIndex(Volume); - Float_t pos[3]; - geom->GetPosPar(Volume,pos); - Float_t texp = TMath::Sqrt(pos[0]*pos[0]+pos[1]*pos[1]+pos[2]*pos[2])/c*1E9; //expected time in ns - Float_t texpBin = texp*1E3/AliTOFGeometry::TdcBinWidth(); //expected time in number of TDC bin - Int_t deltabin = tof-TMath::Nint(texpBin); //to be used with real data; rounding expected time to Int_t - htofPartial->Fill(index,deltabin); //channel index start from 0, bin index from 1 - //debugging printings - if (debugFlag > 1) { - printf("tofRaw = %i, tof = %i \n",tofRaw,tof); - } - if (debugFlag > 2) { - printf("sector %2d, plate %1d, strip %2d, padz %1d, padx %2d \n",Volume[0],Volume[1],Volume[2],Volume[3],Volume[4]); // too verbose - printf("pos x = %f, pos y = %f, pos z = %f \n",pos[0],pos[1],pos[2]); // too verbose - printf("expected time = %f (ns)\n",texp); // too verbose - printf("expected time bin = %f (TDC bin)\n",texpBin); // too verbose - printf("measured time bin = %i (TDC bin) with %f (ns) and ACQ bit = %i \n",tof, HitData->GetTime(), HitData->GetACQ()); // too verbose - printf("index = %6d, deltabin = %d , filling index = %6d, and bin = %d\n",index, deltabin, index, deltabin); // too verbose - } - - } - /* reset buffer */ - PackedDataBuffer->Reset(); - } - } - //if (debugFlag) { - // printf(" Packed Hit Buffer Entries = %i \n",nPDBEntriesToT); // too verbose - // printf(" Hit Buffer Entries = %i \n",nDBEntriesToT); // too verbose - //} - - delete rawReader; - rawReader = 0x0; - } + /* check event type */ + if (event->eventType != PHYSICS_EVENT) continue; + /* increment number of events */ + nEvents++; - /* free resources */ - free(event); + /* + * DECODE EVENT + */ + + /* create raw reader */ + AliRawReader *rawReader = new AliRawReaderDate((void *)event); + /* setup raw stream */ + rawStream->SetRawReader(rawReader); + /* reset buffers */ + rawStream->ResetBuffers(); + /* decode */ + rawStream->DecodeDDL(0, AliDAQ::NumberOfDdls("TOF") - 1, 0); + + /* + * HIT MANIPULATION + */ + + /* loop over DDLs */ + for (Int_t iddl = 0; iddl < AliDAQ::NumberOfDdls("TOF"); iddl++) { + /* get packed-data buffer */ + pdb = rawStream->GetPackedDataBuffer(iddl); + nhits = pdb->GetEntries(); + /* loop over hits in buffer */ + for (Int_t ihit = 0; ihit < nhits; ihit++) { + /* get hit */ + hit = pdb->GetHit(ihit); + /* get channel info */ + ddl = iddl; + slot = hit->GetSlotID(); + trm = slot - 3; + chain = hit->GetChain(); + tdc = hit->GetTDC(); + channel = hit->GetChan(); + indexEO = calibHisto.GetIndexEO(ddl, trm, chain, tdc, channel); + index = calibHisto.GetCalibMap(AliTOFcalibHisto::kIndex, indexEO); + if (index < 0) continue; + /* check noise flag */ + if (noiseFlag[index]) continue; + /* increment number of channel hits and total hits */ + nChHits[index]++; + totHits++; + /* get signal info */ + timebin = hit->GetTimeBin(); + totbin = hit->GetTOTBin(); + deltaBC = hit->GetDeltaBunchID(); + l0l1latency = hit->GetL0L1Latency(); + /* set hit field data */ + hitField->SetIndex(index); + hitField->SetTimeBin(timebin); + hitField->SetTOTBin(totbin); + hitField->SetDeltaBC(deltaBC); + hitField->SetL0L1Latency(l0l1latency); + /* fill temp tree */ + tempTree->Fill(); + } /* end of loop over hits in buffer */ + } /* end of loop over DDLs */ - /* exit when last event received, no need to wait for TERM signal */ - if (eventT==END_OF_RUN) { - printf("EOR event detected\n"); - break; - } - - } - - delete rawStreamTOF; - rawStreamTOF = 0x0; - - delete geom; - geom = 0x0; - - //write the Run level file - TFile * fileRun = new TFile (FILE_RUN,"RECREATE"); - htofPartial->Write(); - fileRun->Close(); - - //write the Total file - TH2S *htoftot = 0x0; - TFile * filetot = 0x0; - Bool_t isThere=kFALSE; - const char *dirname = "./"; - TString filename = FILE_TOTAL; - if((gSystem->FindFile(dirname,filename))!=NULL){ - isThere=kTRUE; - printf("%s found \n",FILE_TOTAL); - } - if (isThere) { - - TFile * filetot1 = new TFile (FILE_TOTAL,"READ"); - //look for the file - if (!filetot1->IsZombie()){ - printf("updating file %s \n",FILE_TOTAL); - TIter next(filetot1->GetListOfKeys()); - TKey *key; - //look for the histogram - while ((key=(TKey*)next())){ - const char * namekey = key->GetName(); - if (strcmp(namekey,"htoftot")==0) { - printf(" histo found \n"); - htoftot = (TH2S*) filetot1->Get("htoftot"); - htoftot->AddDirectory(0); - htoftot->Add(htofPartial); - break; - } - } - } - filetot1->Close(); - delete filetot1; - filetot1=0x0; - } - else { - printf(" no %s file found \n",FILE_TOTAL); - htoftot = new TH2S(*htofPartial); - htoftot->SetName("htoftot"); - htoftot->AddDirectory(0); - } - - filetot = new TFile (FILE_TOTAL,"RECREATE"); - filetot->cd(); - htoftot->Write(); - filetot->Close(); + /* delete raw reader */ + delete rawReader; + + } /* end of loop over events */ + + /* final noise check */ + noiseHitThreshold = noiseThreshold * nEvents; + printf("final noise check after %d events: threshold is %f hits\n", nEvents, noiseHitThreshold); + /* loop over all channels */ + for (Int_t ich = 0; ich < nChannels; ich++) { + /* check */ + if (nChHits[ich] < minNoiseHits || noiseFlag[ich] || nChHits[ich] < noiseHitThreshold) continue; + printf("channel %d tagged as noisy (%d hits): disabled\n", ich, nChHits[ich]); + noiseFlag[ich] = kTRUE; + totHits -= nChHits[ich]; + } /* end of loop over all channels */ - delete fileRun; - delete filetot; - delete htofPartial; - delete htoftot; - - fileRun = 0x0; - filetot = 0x0; - htofPartial = 0x0; - htoftot = 0x0; - - /* write report */ - printf("Run #%s, received %d physics events out of %d\n", - getenv("DATE_RUN_NUMBER"),nevents_physics,nevents_total); - - status = 0; + /* copy hits into output tree from temp tree */ + printf("copy hits from temporary tree into output tree\n"); + printf("temporary tree contains %d hits\n", (Int_t)tempTree->GetEntries()); + for (Int_t ihit = 0; ihit < tempTree->GetEntries(); ihit++) { + /* get entry */ + tempTree->GetEntry(ihit); + /* check noise flag */ + if (noiseFlag[hitField->GetIndex()]) continue; + /* fill output tree */ + outTree->Fill(); + } /* end of copy hits into output tree from temp tree */ + printf("output tree contains %d hits\n", (Int_t)outTree->GetEntries()); + + /* write output tree on file */ + fileOut->cd(); + outTree->Write(); + fileOut->Close(); /* export file to FXS */ - if (daqDA_FES_storeFile(FILE_RUN, "RUNLevel")) - status=-2; - if (daqDA_FES_storeFile(FILE_TOTAL, "DELAYS")) - status=-2; + if (daqDA_FES_storeFile(FILE_HITS, "HITS")) + return -2; - return status; + return 0; } diff --git a/TOF/TOFda.old.cxx b/TOF/TOFda.old.cxx new file mode 100644 index 00000000000..a221e7928f7 --- /dev/null +++ b/TOF/TOFda.old.cxx @@ -0,0 +1,394 @@ +/* + +TOF DA for online calibration + +Contact: Chiara.Zampolli@bo.infn.it +Link: www.bo.infn.it/~zampolli +Run Type: PHYSICS +DA Type: MON +Number of events needed: depending on the run, being run-level +Input Files: TOFdaTotal.root, to be updated if existing +Output Files: TOFdaRun.root, TOFdaTotal.root, both to be exported to the DAQ FXS +Trigger types used: PHYSICS_EVENT + +*/ + +#define FILE_TOTAL "TOFdaTotal.root" +#define FILE_RUN "TOFdaRun.root" + +// DATE +#include "event.h" +#include "monitor.h" +#include "daqDA.h" + +#include +#include + +//AliRoot +#include +#include +#include +#include +#include +#include +#include +#include +#include + +//ROOT +#include +#include +#include +#include +#include +#include +#include "TROOT.h" +#include "TPluginManager.h" +#include "TSAXParser.h" + +/* Main routine + Arguments: + 1- monitoring data source +*/ +int main(int argc, char **argv) { + + /* magic line from Rene */ + gROOT->GetPluginManager()->AddHandler("TVirtualStreamerInfo", + "*", + "TStreamerInfo", + "RIO", + "TStreamerInfo()"); + + AliTOFGeometry * geom = new AliTOFGeometry(); + + static const Int_t size = AliTOFGeometry::NPadXSector()*AliTOFGeometry::NSectors(); + static const Int_t nbins = 500; + static const Int_t binmin = -20; + const Float_t c = 2.99792458E10; //speed of light [cm/s] + TH1F::AddDirectory(0); + TH2S * htofPartial = new TH2S("htof","histo with delays", + size,-0.5,size*1.-0.5, + nbins,binmin-0.5,nbins*1.+binmin-0.5); + + int status; + + /* log start of process */ + printf("TOF DA started\n"); + + /* check that we got some arguments = list of files */ + if (argc!=2) { + printf("Wrong number of arguments\n"); + return -1; + } + + /* retrieve config file */ + int getConfigFile = daqDA_DB_getFile("TOFPhysicsConfig.xml","TOFPhysicsConfig.xml"); + if (getConfigFile != 0){ + printf("Failed to retrieve config file from DB! returning...\n"); + return -1; + } + + AliTOFDaConfigHandler* tofHandler = new AliTOFDaConfigHandler(); + TSAXParser *parser = new TSAXParser(); + parser->ConnectToHandler("AliTOFDaConfigHandler", tofHandler); + if (parser->ParseFile("./TOFPhysicsConfig.xml") != 0) { + printf("Failed parsing config file! retunring... \n"); + return -1; + } + + Int_t debugFlag = tofHandler->GetDebugFlag(); + printf("The debug flag is %i\n",debugFlag); + Int_t t0Flag = tofHandler->GetT0Flag(); + printf("The T0 flag is %i\n\n",t0Flag); + if (t0Flag) { + printf("The T0 time will be subtracted from the measured TOF time. So, in TDC bins: \n"); + printf("tof = tofRaw - (rawReaderT0->GetData(51,0)+rawReaderT0->GetData(52,0))/2) \n\n"); + } + else { + printf("The T0 time will not be used.\n"); + printf("tof = tofRaw \n\n"); + } + + /* init some counters */ + int nevents_physics=0; + int nevents_total=0; + + Int_t iev=0; + + Int_t nPDBEntriesToT = 0; + Int_t nDBEntriesToT = 0; + AliTOFHitData *HitData; + Int_t dummy = -1; + Int_t Volume[5]; + for (Int_t i=0;i<5;i++) Volume[i]=-1; + AliTOFRawStream *rawStreamTOF = new AliTOFRawStream(); + AliTOFHitDataBuffer *DataBuffer; + AliTOFHitDataBuffer *PackedDataBuffer; + Int_t nDBEntries = 0; + Int_t nPDBEntries = 0; + + struct eventHeaderStruct *event; + eventTypeType eventT; + + /* define data source : this is argument 1 */ + status=monitorSetDataSource( argv[1] ); + if (status!=0) { + printf("monitorSetDataSource() failed : %s\n",monitorDecodeError(status)); + return -1; + } + + /* declare monitoring program */ + status=monitorDeclareMp( __FILE__ ); + if (status!=0) { + printf("monitorDeclareMp() failed : %s\n",monitorDecodeError(status)); + return -1; + } + + /* define wait event timeout - 1s max */ + monitorSetNowait(); + monitorSetNoWaitNetworkTimeout(1000); + + /* main loop (infinite) */ + for(;;) { + + /* check shutdown condition */ + if (daqDA_checkShutdown()) break; + + /* get next event (blocking call until timeout) */ + status=monitorGetEventDynamic((void **)&event); + if (status==MON_ERR_EOF) { + printf ("End of File detected\n"); + break; /* end of monitoring file has been reached */ + } + + if (status!=0) { + printf("monitorGetEventDynamic() failed : %s\n",monitorDecodeError(status)); + break; + } + + /* retry if got no event */ + if (event==NULL) continue; + + iev++; + + /* use event - here, just write event id to result file */ + nevents_total++; + eventT=event->eventType; + switch (event->eventType) { + + /* START OF RUN */ + case START_OF_RUN: + break; + /* END START OF RUN */ + + /* END OF RUN */ + case END_OF_RUN: + break; + /* END END OF RUN */ + + case PHYSICS_EVENT: + nevents_physics++; + AliRawReader *rawReader = new AliRawReaderDate((void*)event); + //rawReader->RequireHeader(kFALSE); + + //T0 event + Int_t meantime = 0; + AliT0RawReader *rawReaderT0 = new AliT0RawReader(rawReader,kTRUE); + if (!rawReaderT0->Next()) { + printf("T0: no raw data found!\n"); + } + else { + /* + Int_t allData[105][5]; + for (Int_t i=0; i<105; i++) { + allData[i][0]=rawReaderT0->GetData(i,0); + } + meantime = allData[49][0]; + */ + //meantime = rawReaderT0->GetData(49,0); //OLD + meantime = (Int_t)((rawReaderT0->GetData(51,0)+rawReaderT0->GetData(52,0))/2.); //Alla + if (debugFlag > 0) { + printf("\nT0 for the current event:\n"); // debugging purpose + printf("time zero = %i (TDC bin)\n", meantime); // debugging purpose + printf("time zero = %f (ns)\n\n", (Float_t)(meantime)*24.4*1E-3); // debugging purpose + } + } + + delete rawReaderT0; + rawReaderT0 = 0x0; + rawReader->Reset(); + + //TOF event + dummy = -1; + for (Int_t ii=0; ii<5; ii++) Volume[ii]=-1; + rawStreamTOF->SetRawReader(rawReader); + //rawReader->ReadHeader(); + rawStreamTOF->ResetBuffers(); + rawStreamTOF->DecodeDDL(0, AliDAQ::NumberOfDdls("TOF") - 1,0); + nPDBEntriesToT = 0; + nDBEntriesToT = 0; + for (Int_t iDDL = 0; iDDL < AliDAQ::NumberOfDdls("TOF"); iDDL++) { + + /* read decoded data */ + DataBuffer = rawStreamTOF->GetDataBuffer(iDDL); + PackedDataBuffer = rawStreamTOF->GetPackedDataBuffer(iDDL); + + /* get buffer entries */ + nDBEntries = DataBuffer->GetEntries(); + nPDBEntries = PackedDataBuffer->GetEntries(); + nPDBEntriesToT+=nPDBEntries; + nDBEntriesToT+=nDBEntries; + + //for (Int_t iHit = 0; iHit < nDBEntries; iHit++) { + // HitData = DataBuffer->GetHit(iHit); + /* store volume information */ + // rawStreamTOF->EquipmentId2VolumeId(HitData, Volume); + //} + /* reset buffer */ + DataBuffer->Reset(); + + /* read data buffer hits */ + for (Int_t iHit = 0; iHit < nPDBEntries; iHit++) { + HitData = PackedDataBuffer->GetHit(iHit); + /* add volume information */ + HitData->SetDDLID(iDDL); + rawStreamTOF->EquipmentId2VolumeId(HitData, Volume); + if (Volume[0]==-1 || + Volume[1]==-1 || + Volume[2]==-1 || + Volume[3]==-1 || + Volume[4]==-1) continue; + else { + dummy = Volume[3]; + Volume[3] = Volume[4]; + Volume[4] = dummy; + Int_t tofRaw = (Int_t)((Double_t)HitData->GetTime()*1E3/AliTOFGeometry::TdcBinWidth()); + Int_t tof; + if (!t0Flag) tof = tofRaw; + else tof = tofRaw - meantime; + Int_t index = geom->GetIndex(Volume); + Float_t pos[3]; + geom->GetPosPar(Volume,pos); + Float_t texp = TMath::Sqrt(pos[0]*pos[0]+pos[1]*pos[1]+pos[2]*pos[2])/c*1E9; //expected time in ns + Float_t texpBin = texp*1E3/AliTOFGeometry::TdcBinWidth(); //expected time in number of TDC bin + Int_t deltabin = tof-TMath::Nint(texpBin); //to be used with real data; rounding expected time to Int_t + htofPartial->Fill(index,deltabin); //channel index start from 0, bin index from 1 + //debugging printings + if (debugFlag > 1) { + printf("tofRaw = %i, tof = %i \n",tofRaw,tof); + } + if (debugFlag > 2) { + printf("sector %2d, plate %1d, strip %2d, padz %1d, padx %2d \n",Volume[0],Volume[1],Volume[2],Volume[3],Volume[4]); // too verbose + printf("pos x = %f, pos y = %f, pos z = %f \n",pos[0],pos[1],pos[2]); // too verbose + printf("expected time = %f (ns)\n",texp); // too verbose + printf("expected time bin = %f (TDC bin)\n",texpBin); // too verbose + printf("measured time bin = %i (TDC bin) with %f (ns) and ACQ bit = %i \n",tof, HitData->GetTime(), HitData->GetACQ()); // too verbose + printf("index = %6d, deltabin = %d , filling index = %6d, and bin = %d\n",index, deltabin, index, deltabin); // too verbose + } + + } + /* reset buffer */ + PackedDataBuffer->Reset(); + } + } + //if (debugFlag) { + // printf(" Packed Hit Buffer Entries = %i \n",nPDBEntriesToT); // too verbose + // printf(" Hit Buffer Entries = %i \n",nDBEntriesToT); // too verbose + //} + + delete rawReader; + rawReader = 0x0; + } + + /* free resources */ + free(event); + + /* exit when last event received, no need to wait for TERM signal */ + if (eventT==END_OF_RUN) { + printf("EOR event detected\n"); + break; + } + + } + + delete rawStreamTOF; + rawStreamTOF = 0x0; + + delete geom; + geom = 0x0; + + //write the Run level file + TFile * fileRun = new TFile (FILE_RUN,"RECREATE"); + htofPartial->Write(); + fileRun->Close(); + + //write the Total file + TH2S *htoftot = 0x0; + TFile * filetot = 0x0; + Bool_t isThere=kFALSE; + const char *dirname = "./"; + TString filename = FILE_TOTAL; + if((gSystem->FindFile(dirname,filename))!=NULL){ + isThere=kTRUE; + printf("%s found \n",FILE_TOTAL); + } + if (isThere) { + + TFile * filetot1 = new TFile (FILE_TOTAL,"READ"); + //look for the file + if (!filetot1->IsZombie()){ + printf("updating file %s \n",FILE_TOTAL); + TIter next(filetot1->GetListOfKeys()); + TKey *key; + //look for the histogram + while ((key=(TKey*)next())){ + const char * namekey = key->GetName(); + if (strcmp(namekey,"htoftot")==0) { + printf(" histo found \n"); + htoftot = (TH2S*) filetot1->Get("htoftot"); + htoftot->AddDirectory(0); + htoftot->Add(htofPartial); + break; + } + } + } + filetot1->Close(); + delete filetot1; + filetot1=0x0; + } + else { + printf(" no %s file found \n",FILE_TOTAL); + htoftot = new TH2S(*htofPartial); + htoftot->SetName("htoftot"); + htoftot->AddDirectory(0); + } + + filetot = new TFile (FILE_TOTAL,"RECREATE"); + filetot->cd(); + htoftot->Write(); + filetot->Close(); + + delete fileRun; + delete filetot; + delete htofPartial; + delete htoftot; + + fileRun = 0x0; + filetot = 0x0; + htofPartial = 0x0; + htoftot = 0x0; + + /* write report */ + printf("Run #%s, received %d physics events out of %d\n", + getenv("DATE_RUN_NUMBER"),nevents_physics,nevents_total); + + status = 0; + + /* export file to FXS */ + if (daqDA_FES_storeFile(FILE_RUN, "RUNLevel")) + status=-2; + if (daqDA_FES_storeFile(FILE_TOTAL, "DELAYS")) + status=-2; + + return status; +} diff --git a/TOF/data/AliTOFcalibPar.root b/TOF/data/AliTOFcalibPar.root index 1ab7bf3484e340c4aef1b1b19073f74d3f66cb5b..dc81d75aa7686aa2755393143dfb04cef06faf88 100644 GIT binary patch delta 587 zcmZ|MOGs2<6bJD0O*2mAow?V?H{;`KlW)fdQVfDc3&l;4iY{W16bIodWFs)^N&5pyNlLNvrjNQ93-nm|Fz@jq@{wfKFU56<~G=X~MNGz){= z;r0567RQOGnTk`xMB*`G1x&-T->%P>5E(4E-oHq}L1ft z)OBgWSA(xRTPl8(_j{^d{0#cbAE^DOOO<)=m)*5=+eC^|k4DhHkwjwO&|3+)qP>i;H?COJ>UJ}?{Ix~vzEqxB9~bj%#+jXo+h5X=3Gh^a@!19n7Q zPa+;{Lxkl%bG@a=*=|#xM+$i)_U@@+XKUa@Wnh3SU<4DyfEljBHMkD3AbbFhIOk{}sUAQfatgLJq74!8*!kO^6k4LOhtd5{lID1gF{ JtQW1eo&zLt)TRIc delta 1309 zcmW;Mc~H`M7zS{(+RP*+54;5fytPZ$GaAdyD8$utAgGI_jch%Cc&1 zn0bt22PT>tih1nVy6(RTYPeBEA_)BUJNw7ynfIA_{(e=09upPdoSm6@34su` zBM^ua2!AIP0%1V_cM7nc<9r?6Xdi??m?A+X{XYSLu)S~3@xyd1hi+aET1ut21qFhQ zbH9ojrH5l%;`yZOASj`TU;9UB%8M%@ z(vY<&nle8{*j!T<9Zf%|bE`Z%hR4bam>2M`X4_?& z76`?Ov1T5rJiD3{k#^7wN``980tax3MernC$c;O2s-!4ff|vM|Tz%zeg2GQmM@H%v zh*>V;he?ttcmC~e=I(k!k`t_p*?Y1Q5*S!Mr-uhpdnAxh+Q8 z7uS|h`)$-`pX=2Q}tBQOv#f@OBrnz7M#V95-1UT&W04P8=UKVg})O z6WdVZ>Q%!}J;k}2g+z-B&HJysMIC+C`Vlu8lpRs0qS{We{obJ-bmN=WG+)#q6^yf~ zx~^Dh@A!=Pa^FkcH^=_kL;{1J7UeM& zDZOtfqKxM!2n9Du<_-*0Cw=B26_L}$(PWo(YF2Nh18P=pOUvWs^^QlP=M z5b3Pp%)U__eT`iu&JbBBq#dGk6TYcsTdHzw8K?d6kD_br3T&pxa=7zx**1#IVdS&l zbQdbTAPlr*pf?*E&1;x_;h6zHEckHT&?r#G|LH=ikVD z*jGzPJWMSsYjp*i(XkRf#iR(t%IZhmJB*n%gnL=D4UFsRSKlDl9p45VJG;5?u zg{WvI#a4??rO~v7c~*ivE0cV>>D*zKuGj=H1=a!UfepZSz(&9f*aVmZn*j>|32Xr@ z0V@CnYz3?V8-cFa*3}oh8dD_8`Mxb+2cQ9azyWXsoB(IQ1#ku201SWy+<|QX4!{Eh Vzyt6EyZ~>&2k;d*-}jq1{U4ysnIr%J diff --git a/TOF/libTOFbase.pkg b/TOF/libTOFbase.pkg index f43673a686e..295868aa7ca 100644 --- a/TOF/libTOFbase.pkg +++ b/TOF/libTOFbase.pkg @@ -8,6 +8,7 @@ SRCS = AliTOFGeometry.cxx \ AliTOFrawData.cxx\ AliTOFRawStream.cxx\ AliTOFHitData.cxx\ + AliTOFHitField.cxx\ AliTOFHitDataBuffer.cxx\ AliTOFDecoder.cxx\ AliTOFChannelOffline.cxx \ @@ -31,6 +32,7 @@ SRCS = AliTOFGeometry.cxx \ AliTOFDeltaBCOffset.cxx \ AliTOFCTPLatency.cxx \ AliTOFT0Fill.cxx \ + AliTOFT0FillOnlineCalib.cxx \ AliTOFLvHvDataPoints.cxx \ AliTOFDCSmaps.cxx -- 2.43.0