X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=TOF%2FAliTOF.cxx;h=c87e976c992ea3380ed20336deb0d50d18f61780;hb=19eefa2b8b6a2dcc617e352fbe7d50b5ebdb6396;hp=aa95c96407b0be345dbd82d4c5eb99e745b62164;hpb=43cd62b4c1202af4499c00314336ea93dbcf5e57;p=u%2Fmrichter%2FAliRoot.git diff --git a/TOF/AliTOF.cxx b/TOF/AliTOF.cxx index aa95c96407b..c87e976c992 100644 --- a/TOF/AliTOF.cxx +++ b/TOF/AliTOF.cxx @@ -39,68 +39,75 @@ */ //End_Html - - -#include -#include -#include - -#include +#include #include #include -#include -#include #include -#include #include #include #include -#include +#include -#include "AliLog.h" -#include "AliConfig.h" -#include "AliHeader.h" #include "AliConst.h" #include "AliLoader.h" -#include "AliMagF.h" +#include "AliLog.h" +#include "AliMC.h" #include "AliRun.h" -#include "AliTOF.h" -#include "AliTOFGeometry.h" -#include "AliTOFGeometryV4.h" -#include "AliTOFGeometryV5.h" -#include "AliTOFSDigit.h" + +#include "AliTOFDDLRawData.h" +#include "AliTOFDigitizer.h" #include "AliTOFdigit.h" -#include "AliTOFhit.h" #include "AliTOFhitT0.h" -#include "AliMC.h" -#include "AliTOFDigitizer.h" -#include "AliTOFDDLRawData.h" -#include "AliTOFcluster.h" +#include "AliTOFhit.h" +#include "AliTOFGeometry.h" +#include "AliTOFSDigitizer.h" +#include "AliTOFSDigit.h" +#include "AliTOF.h" + +class AliTOFcluster; + +extern TFile *gFile; +extern TROOT *gROOT; +extern TVirtualMC *gMC; + +extern AliRun *gAlice; + ClassImp(AliTOF) //_____________________________________________________________________________ -AliTOF::AliTOF() +AliTOF::AliTOF(): + fFGeom(0x0), + fDTask(0x0), + fReTask(0x0), + fSDigits(0x0), + fNSDigits(0), + fReconParticles(0x0), + fIdSens(-1), + fTZero(kFALSE), + fTOFGeometry(0x0) { // // Default constructor // - fFGeom = 0x0; - fDTask = 0x0; - fReTask = 0x0; + fDigits = 0; fIshunt = 0; - fSDigits = 0 ; - fNSDigits = 0; - fDigits = 0 ; - fReconParticles = 0x0; - fName="TOF"; - fTZero = kFALSE; - fTOFGeometry = 0; + fName = "TOF"; } //_____________________________________________________________________________ AliTOF::AliTOF(const char *name, const char *title, Option_t *option) - : AliDetector(name,title) + : + AliDetector(name,title), + fFGeom(0x0), + fDTask(0x0), + fReTask(0x0), + fSDigits(0x0), + fNSDigits(0), + fReconParticles(0x0), + fIdSens(-1), + fTZero(kFALSE), + fTOFGeometry(0x0) { // // AliTOF standard constructor @@ -110,16 +117,13 @@ AliTOF::AliTOF(const char *name, const char *title, Option_t *option) // Initialization of hits, sdigits and digits array // added option for time zero analysis - fFGeom = 0x0; //skowron - fDTask = 0x0; - fReTask = 0x0; - fReconParticles= 0x0; + //skowron fTOFGeometry = new AliTOFGeometry(); if (strstr(option,"tzero")){ fHits = new TClonesArray("AliTOFhitT0", 1000); fTZero = kTRUE; - AliWarning("tzero option requires AliTOFv4T0/AliTOFv5T0 as TOF version (check Your Config.C)"); + // AliWarning("tzero option requires AliTOFv4T0/AliTOFv5T0 as TOF version (check Your Config.C)"); }else{ fHits = new TClonesArray("AliTOFhit", 1000); fTZero = kFALSE; @@ -127,28 +131,25 @@ AliTOF::AliTOF(const char *name, const char *title, Option_t *option) if (gAlice==0) { AliFatal("gAlice==0 !"); } - if (gAlice->GetMCApp()->GetHitLists()) - gAlice->GetMCApp()->AddHitList(fHits); + + AliMC *mcApplication = (AliMC*)gAlice->GetMCApp(); + + if (mcApplication->GetHitLists()) + mcApplication->AddHitList(fHits); else AliError("gAlice->GetHitLists()==0"); fIshunt = 0; fSDigits = new TClonesArray("AliTOFSDigit", 1000); fDigits = new TClonesArray("AliTOFdigit", 1000); - fNSDigits = 0; - - fFGeom = 0x0; - fDTask = 0x0; - fReTask = 0x0; - fReconParticles = 0x0; // // Digitization parameters // // (Transfer Functions to be inserted here) // - SetMarkerColor(7); - SetMarkerStyle(2); - SetMarkerSize(0.4); + //PH SetMarkerColor(7); + //PH SetMarkerStyle(2); + //PH SetMarkerSize(0.4); // Strip Parameters //fGapA = 4.; //cm Gap beetween tilted strip in A-type plate @@ -160,6 +161,57 @@ AliTOF::AliTOF(const char *name, const char *title, Option_t *option) } +//____________________________________________________________________________ +void AliTOF::SetTOFSectors(Int_t *sectors) +{ + // Setter for partial/full TOF configuration + + for(Int_t isec=0;isec<18;isec++){ + fTOFSectors[isec]=sectors[isec]; + } +} +//____________________________________________________________________________ +void AliTOF::GetTOFSectors(Int_t *sectors) const +{ + // Getter for partial/full TOF configuration + + for(Int_t isec=0;isec<18;isec++){ + sectors[isec]=fTOFSectors[isec]; + } +} +//_____________________________________________________________________________ +AliTOF::AliTOF(const AliTOF &source) + :AliDetector(), + fFGeom(0x0), + fDTask(0x0), + fReTask(0x0), + fSDigits(0x0), + fNSDigits(0), + fReconParticles(0x0), + fIdSens(-1), + fTZero(kFALSE), + fTOFGeometry(0x0) +{ + // copy constructor + + this->fReconParticles=source.fReconParticles; + this->fSDigits=source.fSDigits; + this->fTOFGeometry=source.fTOFGeometry; + +} + +//_____________________________________________________________________________ +AliTOF& AliTOF::operator=(const AliTOF &source) +{ + // ass. op. + + this->fReconParticles=source.fReconParticles; + this->fSDigits=source.fSDigits; + this->fTOFGeometry=source.fTOFGeometry; + return *this; + +} + //_____________________________________________________________________________ void AliTOF::CreateTOFFolders() { @@ -267,7 +319,7 @@ void AliTOF::AddT0Hit(Int_t track, Int_t *vol, Float_t *hits) } //_____________________________________________________________________________ -void AliTOF::AddDigit(Int_t *tracks, Int_t *vol, Float_t *digits) +void AliTOF::AddDigit(Int_t *tracks, Int_t *vol, Int_t *digits) { // // Add a TOF digit @@ -278,7 +330,7 @@ void AliTOF::AddDigit(Int_t *tracks, Int_t *vol, Float_t *digits) } //_____________________________________________________________________________ -void AliTOF::AddSDigit(Int_t tracknum, Int_t *vol, Float_t *digits) +void AliTOF::AddSDigit(Int_t tracknum, Int_t *vol, Int_t *digits) { // @@ -352,9 +404,18 @@ void AliTOF::CreateGeometry() Float_t xTof, yTof; - if (IsVersion()==7) { + if (IsVersion()==8) { - xTof = fTOFGeometry->StripLength()+2.*0.3; // cm, x-dimension of FTOA volume + xTof = 124.5;//fTOFGeometry->StripLength()+2.*(0.3+0.03); // cm, x-dimension of FTOA volume + yTof = fTOFGeometry->Rmax()-fTOFGeometry->Rmin(); // cm, y-dimension of FTOA volume + Float_t zTof = fTOFGeometry->ZlenA(); // cm, z-dimension of FTOA volume + + // TOF module internal definitions + TOFpc(xTof, yTof, zTof); + + } else if (IsVersion()==7) { + + xTof = 124.5;//fTOFGeometry->StripLength()+2.*(0.3+0.03); // cm, x-dimension of FTOA volume yTof = fTOFGeometry->Rmax()-fTOFGeometry->Rmin(); // cm, y-dimension of FTOA volume Float_t zTof = fTOFGeometry->ZlenA(); // cm, z-dimension of FTOA volume @@ -541,7 +602,7 @@ void AliTOF::Hits2SDigits() // Use the TOF SDigitizer to make TOF SDigits // -// cout<<"AliTOF::Hits2SDigits> start...\n"; +// AliInfo("Start..."); AliRunLoader * rl = fLoader->GetRunLoader(); AliTOFSDigitizer sd((rl->GetFileName()).Data()); @@ -559,10 +620,9 @@ void AliTOF::Hits2SDigits(Int_t evNumber1, Int_t evNumber2) // if ((evNumber2-evNumber1)==1) - AliDebug(1, Form("I am making sdigits for the %dth event", evNumber1)) - else if ((evNumber2-evNumber1)>1) - AliDebug(1, Form("I am making sdigits for the events from the " - "%dth to the %dth", evNumber1, evNumber2-1)); + AliDebug(1, Form("I am making sdigits for the %dth event", evNumber1)); + if ((evNumber2-evNumber1)>1) + AliDebug(1, Form("I am making sdigits for the events from the %dth to the %dth", evNumber1, evNumber2-1)); AliRunLoader * rl = fLoader->GetRunLoader(); AliTOFSDigitizer sd((rl->GetFileName()).Data(),evNumber1,evNumber2) ; @@ -579,7 +639,7 @@ AliDigitizer* AliTOF::CreateDigitizer(AliRunDigitizer* manager) const } //___________________________________________________________________________ -Bool_t AliTOF::CheckOverlap(Int_t* vol, Float_t* digit,Int_t Track) +Bool_t AliTOF::CheckOverlap(Int_t* vol, Int_t* digit,Int_t Track) { // // Checks if 2 or more hits belong to the same pad. @@ -603,8 +663,8 @@ Bool_t AliTOF::CheckOverlap(Int_t* vol, Float_t* digit,Int_t Track) if (vol[i]!=vol2[i]) idem=kFALSE;} if (idem){ // same pad fired - Float_t tdc2 = digit[0]; - Float_t tdc1 = currentDigit->GetTdc(); + Int_t tdc2 = digit[0]; + Int_t tdc1 = currentDigit->GetTdc(); // we separate two digits on the same pad if // they are separated in time by at least 25 ns @@ -624,7 +684,7 @@ Bool_t AliTOF::CheckOverlap(Int_t* vol, Float_t* digit,Int_t Track) overlap = kTRUE; return overlap; } else - overlap= kFALSE; + overlap= kFALSE; } // close if (idem) -> two digits on the same TOF pad @@ -639,6 +699,9 @@ void AliTOF::Digits2Raw() // Starting from the TOF digits, writes the Raw Data objects // + TStopwatch stopwatch; + stopwatch.Start(); + fLoader->LoadDigits(); TTree* digits = fLoader->TreeD(); @@ -647,7 +710,6 @@ void AliTOF::Digits2Raw() return; } - //AliRunLoader *rl = AliRunLoader::Open("galice.root",AliConfig::GetDefaultEventFolderName(),"read"); fRunLoader->CdGAFile(); TFile *in=(TFile*)gFile; in->cd(); @@ -656,13 +718,23 @@ void AliTOF::Digits2Raw() AliTOFDDLRawData rawWriter(geometry); //AliTOFDDLRawData rawWriter; rawWriter.SetVerbose(0); + //rawWriter.SetFakeOrphaneProduction(kTRUE); + //rawWriter.SetPackedAcquisitionMode(kFALSE); + if (rawWriter.GetPackedAcquisitionMode()) { + if(rawWriter.GetMatchingWindow()>8192) + AliWarning(Form("You are running in packing mode and the matching window is %.2f ns, i.e. greater than 199.8848 ns", + rawWriter.GetMatchingWindow()*AliTOFGeometry::TdcBinWidth()*1.e-03)); + } - AliInfo("Formatting raw data for TOF"); + AliDebug(1,"Formatting raw data for TOF"); digits->GetEvent(0); rawWriter.RawDataTOF(digits->GetBranch("TOF")); fLoader->UnloadDigits(); + AliDebug(1, Form("Execution time to write TOF raw data : R:%.2fs C:%.2fs", + stopwatch.RealTime(),stopwatch.CpuTime())); + } //____________________________________________________________________________