X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=TOF%2FAliTOFSDigitizer.cxx;h=f12a2c860eb28a5ffc4ab7d0aa7019e8cf9be60c;hb=d4916cbf876d7ea0ae19e7f7ea879d1fe2b98a3b;hp=8fe8f30686a641c1d3534c2602f1345d7acfd93e;hpb=afd804a3e6733670fa948e5158be8d1811a7a05b;p=u%2Fmrichter%2FAliRoot.git diff --git a/TOF/AliTOFSDigitizer.cxx b/TOF/AliTOFSDigitizer.cxx index 8fe8f30686a..f12a2c860eb 100644 --- a/TOF/AliTOFSDigitizer.cxx +++ b/TOF/AliTOFSDigitizer.cxx @@ -15,73 +15,191 @@ /* $Id$ */ -//_________________________________________________________________________ -// This is a TTask that constructs SDigits out of Hits -// A Summable Digits is the "sum" of all hits in a pad -// Detector response has been simulated via the method -// SimulateDetectorResponse -// -//-- Authors: F. Pierella, A. De Caro -// Use case: see AliTOFhits2sdigits.C macro in the CVS -////////////////////////////////////////////////////////////////////////////// - -#include -#include +//__________________________________________________________// +// // +// This is a TTask that constructs SDigits out of Hits // +// A Summable Digits is the "sum" of all hits in a pad // +// Detector response has been simulated via the method // +// SimulateDetectorResponse // +// // +// -- Authors: F. Pierella, A. De Caro // +// Use case: see AliTOFhits2sdigits.C macro in the CVS // +//__________________________________________________________// #include +#include #include #include -#include -#include #include -#include -#include -#include #include +#include +#include -#include "AliLog.h" -#include "AliDetector.h" #include "AliLoader.h" +#include "AliLog.h" #include "AliMC.h" -#include "AliRun.h" #include "AliRunLoader.h" +#include "AliRun.h" -#include "AliTOF.h" #include "AliTOFGeometry.h" #include "AliTOFHitMap.h" -#include "AliTOFSDigit.h" -#include "AliTOFSDigitizer.h" -#include "AliTOFhit.h" #include "AliTOFhitT0.h" +#include "AliTOFhit.h" +#include "AliTOFSDigitizer.h" +#include "AliTOFSDigit.h" +#include "AliTOF.h" + ClassImp(AliTOFSDigitizer) //____________________________________________________________________________ - AliTOFSDigitizer::AliTOFSDigitizer():TTask("TOFSDigitizer","") +AliTOFSDigitizer::AliTOFSDigitizer(): + TTask("TOFSDigitizer",""), + fEvent1(-1), + fEvent2(-1), + ftail(0x0), + fHeadersFile(""), + fRunLoader(0x0), + fTOFLoader(0x0), + fTOFGeometry(new AliTOFGeometry()), + fSelectedSector(-1), + fSelectedPlate(-1), + fTimeResolution(0), + fpadefficiency(0), + fEdgeEffect(-1), + fEdgeTails(-1), + fHparameter(0), + fH2parameter(0), + fKparameter(0), + fK2parameter(0), + fEffCenter(0), + fEffBoundary(0), + fEff2Boundary(0), + fEff3Boundary(0), + fAddTRes(0), + fResCenter(0), + fResBoundary(0), + fResSlope(0), + fTimeWalkCenter(0), + fTimeWalkBoundary(0), + fTimeWalkSlope(0), + fTimeDelayFlag(-1), + fPulseHeightSlope(0), + fTimeDelaySlope(0), + fMinimumCharge(0), + fChargeSmearing(0), + fLogChargeSmearing(0), + fTimeSmearing(0), + fAverageTimeFlag(-1), + fAdcBin(0), + fAdcMean(0), + fAdcRms(0) { // ctor +} - fRunLoader = 0; - fTOFLoader = 0; +//------------------------------------------------------------------------ +AliTOFSDigitizer::AliTOFSDigitizer(const AliTOFSDigitizer &source): + TTask(source), + fEvent1(-1), + fEvent2(-1), + ftail(0x0), + fHeadersFile(""), + fRunLoader(0x0), + fTOFLoader(0x0), + fTOFGeometry(0x0), + fSelectedSector(-1), + fSelectedPlate(-1), + fTimeResolution(0), + fpadefficiency(0), + fEdgeEffect(-1), + fEdgeTails(-1), + fHparameter(0), + fH2parameter(0), + fKparameter(0), + fK2parameter(0), + fEffCenter(0), + fEffBoundary(0), + fEff2Boundary(0), + fEff3Boundary(0), + fAddTRes(0), + fResCenter(0), + fResBoundary(0), + fResSlope(0), + fTimeWalkCenter(0), + fTimeWalkBoundary(0), + fTimeWalkSlope(0), + fTimeDelayFlag(-1), + fPulseHeightSlope(0), + fTimeDelaySlope(0), + fMinimumCharge(0), + fChargeSmearing(0), + fLogChargeSmearing(0), + fTimeSmearing(0), + fAverageTimeFlag(-1), + fAdcBin(0), + fAdcMean(0), + fAdcRms(0) +{ + // copy constructor + this->fTOFGeometry=source.fTOFGeometry; - fEvent1 = 0; - fEvent2 = 0; - ftail = 0; - fSelectedSector = -1; - fSelectedPlate = -1; +} - fTOFGeometry = new AliTOFGeometry(); +//____________________________________________________________________________ +AliTOFSDigitizer& AliTOFSDigitizer::operator=(const AliTOFSDigitizer &source) +{ + // ass. op. + this->fTOFGeometry=source.fTOFGeometry; + return *this; } //____________________________________________________________________________ -AliTOFSDigitizer::AliTOFSDigitizer(const char* HeaderFile, Int_t evNumber1, Int_t nEvents):TTask("TOFSDigitizer","") +AliTOFSDigitizer::AliTOFSDigitizer(const char* HeaderFile, Int_t evNumber1, Int_t nEvents): + TTask("TOFSDigitizer",""), + fEvent1(-1), + fEvent2(-1), + ftail(0x0), + fHeadersFile(HeaderFile), // input filename (with hits) + fRunLoader(0x0), + fTOFLoader(0x0), + fTOFGeometry(0x0), + fSelectedSector(-1), // by default we sdigitize all sectors + fSelectedPlate(-1), // by default we sdigitize all plates in all sectors + fTimeResolution(0), + fpadefficiency(0), + fEdgeEffect(-1), + fEdgeTails(-1), + fHparameter(0), + fH2parameter(0), + fKparameter(0), + fK2parameter(0), + fEffCenter(0), + fEffBoundary(0), + fEff2Boundary(0), + fEff3Boundary(0), + fAddTRes(0), + fResCenter(0), + fResBoundary(0), + fResSlope(0), + fTimeWalkCenter(0), + fTimeWalkBoundary(0), + fTimeWalkSlope(0), + fTimeDelayFlag(-1), + fPulseHeightSlope(0), + fTimeDelaySlope(0), + fMinimumCharge(0), + fChargeSmearing(0), + fLogChargeSmearing(0), + fTimeSmearing(0), + fAverageTimeFlag(-1), + fAdcBin(0), + fAdcMean(0), + fAdcRms(0) { - ftail = 0; - fSelectedSector=-1; // by default we sdigitize all sectors - fSelectedPlate =-1; // by default we sdigitize all plates in all sectors + //ctor, reading from input file - fHeadersFile = HeaderFile ; // input filename (with hits) TFile * file = (TFile*) gROOT->GetFile(fHeadersFile.Data()); //File was not opened yet open file and get alirun object @@ -215,7 +333,7 @@ Double_t TimeWithTail(Double_t* x, Double_t* par) //____________________________________________________________________________ void AliTOFSDigitizer::Exec(Option_t *verboseOption) { - + //execute TOF sdigitization if (strstr(verboseOption,"tim") || strstr(verboseOption,"all")) gBenchmark->Start("TOFSDigitizer"); @@ -248,8 +366,8 @@ void AliTOFSDigitizer::Exec(Option_t *verboseOption) { fTOFLoader->LoadSDigits("recreate"); for (Int_t iEvent=fEvent1; iEventGetEvent(iEvent); @@ -292,7 +410,10 @@ void AliTOFSDigitizer::Exec(Option_t *verboseOption) { { gAlice->ResetHits(); tofHitsBranch->GetEvent(track); - particle = gAlice->GetMCApp()->Particle(track); + + AliMC *mcApplication = (AliMC*)gAlice->GetMCApp(); + + particle = mcApplication->Particle(track); Int_t nhits = tofHitArray->GetEntriesFast(); // cleaning all hits of the same track in the same pad volume // it is a rare event, however it happens @@ -484,12 +605,13 @@ void AliTOFSDigitizer::Exec(Option_t *verboseOption) { //__________________________________________________________________ void AliTOFSDigitizer::Print(Option_t* /*opt*/)const { - cout << "------------------- "<< GetName() << " ------------- \n"; + AliInfo(Form(" ------------------- %s ------------- ", GetName())); } //__________________________________________________________________ void AliTOFSDigitizer::SelectSectorAndPlate(Int_t sector, Int_t plate) { + //Select sector and plate Bool_t isaWrongSelection=(sector < 0) || (sector >= AliTOFGeometry::NSectors()) || (plate < 0) || (plate >= AliTOFGeometry::NPlates()); if(isaWrongSelection){ AliError("You have selected an invalid value for sector or plate "); @@ -792,36 +914,36 @@ void AliTOFSDigitizer::PrintParameters()const // // Print parameters used for sdigitization // - cout << " ------------------- "<< GetName() << " -------------" << endl ; - cout << " Parameters used for TOF SDigitization " << endl ; + AliInfo(Form(" ------------------- %s -------------", GetName())); + AliInfo(" Parameters used for TOF SDigitization "); // Printing the parameters - cout << " Number of events: " << (fEvent2-fEvent1) << endl; - cout << " from event " << fEvent1 << " to event " << (fEvent2-1) << endl; - cout << " Time Resolution (ns) "<< fTimeResolution <<" Pad Efficiency: "<< fpadefficiency << endl; - cout << " Edge Effect option: "<< fEdgeEffect<< endl; - - cout << " Boundary Effect Simulation Parameters " << endl; - cout << " Hparameter: "<< fHparameter<<" H2parameter:"<< fH2parameter <<" Kparameter:"<< fKparameter<<" K2parameter: "<< fK2parameter << endl; - cout << " Efficiency in the central region of the pad: "<< fEffCenter << endl; - cout << " Efficiency at the boundary region of the pad: "<< fEffBoundary << endl; - cout << " Efficiency value at H2parameter "<< fEff2Boundary << endl; - cout << " Efficiency value at K2parameter "<< fEff3Boundary << endl; - cout << " Resolution (ps) in the central region of the pad: "<< fResCenter << endl; - cout << " Resolution (ps) at the boundary of the pad : "<< fResBoundary << endl; - cout << " Slope (ps/K) for neighbouring pad : "<< fResSlope <