X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=TOF%2FAliTOFSDigitizer.cxx;h=e1a02e1e80d5000fbb898b9d10a6547380dec9e4;hb=2c62f1917d981eecad811a0bfeeaa99fcf1e6153;hp=a149a61fc908fce88841c6fb2c9488d15011d274;hpb=bf33f8f0420274cbd5cab3fcc3a223dd191317a8;p=u%2Fmrichter%2FAliRoot.git diff --git a/TOF/AliTOFSDigitizer.cxx b/TOF/AliTOFSDigitizer.cxx index a149a61fc90..e1a02e1e80d 100644 --- a/TOF/AliTOFSDigitizer.cxx +++ b/TOF/AliTOFSDigitizer.cxx @@ -49,6 +49,7 @@ #include "AliTOFSDigit.h" #include "AliTOF.h" +extern TROOT *gROOT; ClassImp(AliTOFSDigitizer) @@ -61,7 +62,6 @@ AliTOFSDigitizer::AliTOFSDigitizer(): fHeadersFile(""), fRunLoader(0x0), fTOFLoader(0x0), - fTOFGeometry(new AliTOFGeometry()), fSelectedSector(-1), fSelectedPlate(-1), fTimeResolution(0), @@ -107,7 +107,6 @@ AliTOFSDigitizer::AliTOFSDigitizer(const AliTOFSDigitizer &source): fHeadersFile(""), fRunLoader(0x0), fTOFLoader(0x0), - fTOFGeometry(0x0), fSelectedSector(-1), fSelectedPlate(-1), fTimeResolution(0), @@ -142,15 +141,14 @@ AliTOFSDigitizer::AliTOFSDigitizer(const AliTOFSDigitizer &source): fAdcRms(0) { // copy constructor - this->fTOFGeometry=source.fTOFGeometry; + //this->fTOFGeometry=source.fTOFGeometry; } //____________________________________________________________________________ -AliTOFSDigitizer& AliTOFSDigitizer::operator=(const AliTOFSDigitizer &source) +AliTOFSDigitizer& AliTOFSDigitizer::operator=(const AliTOFSDigitizer &/*source*/) { // ass. op. - this->fTOFGeometry=source.fTOFGeometry; return *this; } @@ -164,7 +162,6 @@ AliTOFSDigitizer::AliTOFSDigitizer(const char* HeaderFile, Int_t evNumber1, Int_ 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), @@ -219,10 +216,13 @@ AliTOFSDigitizer::AliTOFSDigitizer(const char* HeaderFile, Int_t evNumber1, Int_ return; } + /* fRunLoader->CdGAFile(); TDirectory *savedir=gDirectory; TFile *in=(TFile*)gFile; + +// when fTOFGeometry was needed if (!in->IsOpen()) { AliWarning("Geometry file is not open default TOF geometry will be used"); fTOFGeometry = new AliTOFGeometry(); @@ -231,9 +231,9 @@ AliTOFSDigitizer::AliTOFSDigitizer(const char* HeaderFile, Int_t evNumber1, Int_ in->cd(); fTOFGeometry = (AliTOFGeometry*)in->Get("TOFgeometry"); } - + savedir->cd(); - + */ if (fRunLoader->TreeE() == 0x0) fRunLoader->LoadHeader(); if (evNumber1>=0) fEvent1 = evNumber1; @@ -268,8 +268,6 @@ AliTOFSDigitizer::~AliTOFSDigitizer() // dtor fTOFLoader->CleanSDigitizer(); - delete fTOFGeometry; - } //____________________________________________________________________________ @@ -316,7 +314,7 @@ void AliTOFSDigitizer::InitParameters() } //__________________________________________________________________ -Double_t TimeWithTail(Double_t* x, Double_t* par) +Double_t TimeWithTail(const Double_t * const x, const Double_t * const par) { // sigma - par[0], alpha - par[1], part - par[2] // at xLoadHits("read"); fTOFLoader->LoadSDigits("recreate"); + + Int_t vol[5]={-1,-1,-1,-1,-1}; // location for a digit + Int_t digit[2]={0,0}; // TOF digit variables + Int_t nselectedHitsinEv=0; + Int_t ntotalsdigitsinEv=0; + Int_t ntotalupdatesinEv=0; + Int_t nnoisesdigitsinEv=0; + Int_t nsignalsdigitsinEv=0; + for (Int_t iEvent=fEvent1; iEventGetEvent(iEvent); - TTree *hitTree = fTOFLoader->TreeH (); + TTree *hitTree = fTOFLoader->TreeH(); if (!hitTree) return; if (fTOFLoader->TreeS () == 0) fTOFLoader->MakeTree ("S"); @@ -390,30 +397,31 @@ void AliTOFSDigitizer::Exec(Option_t *verboseOption) { Int_t version=tof->IsVersion(); - Int_t nselectedHitsinEv=0; - Int_t ntotalsdigitsinEv=0; - Int_t ntotalupdatesinEv=0; - Int_t nnoisesdigitsinEv=0; - Int_t nsignalsdigitsinEv=0; + nselectedHitsinEv=0; + ntotalsdigitsinEv=0; + ntotalupdatesinEv=0; + nnoisesdigitsinEv=0; + nsignalsdigitsinEv=0; TParticle *particle; //AliTOFhit *tofHit; TClonesArray *tofHitArray = tof->Hits(); // create hit map - AliTOFHitMap *hitMap = new AliTOFHitMap(tof->SDigits(), fTOFGeometry); + //AliTOFHitMap *hitMap = new AliTOFHitMap(tof->SDigits(), fTOFGeometry); + AliTOFHitMap *hitMap = new AliTOFHitMap(tof->SDigits()); TBranch * tofHitsBranch = hitTree->GetBranch("TOF"); Int_t ntracks = static_cast(hitTree->GetEntries()); for (Int_t track = 0; track < ntracks; track++) { - gAlice->ResetHits(); + gAlice->GetMCApp()->ResetHits(); tofHitsBranch->GetEvent(track); AliMC *mcApplication = (AliMC*)gAlice->GetMCApp(); - particle = mcApplication->Particle(track); + particle = (TParticle*)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 @@ -426,16 +434,16 @@ void AliTOFSDigitizer::Exec(Option_t *verboseOption) { Int_t previousPadZ =-1; for (Int_t hit = 0; hit < nhits; hit++) { - Int_t vol[5]; // location for a digit - Int_t digit[2]; // TOF digit variables - Int_t tracknum; + for (Int_t aa=0; aa<5;aa++) vol[aa]=-1; // location for a digit + for (Int_t aa=0; aa<2;aa++) digit[aa]=0; // TOF digit variables + Int_t tracknum; Float_t dxPad; Float_t dzPad; Float_t geantTime; // fp: really sorry for this, it is a temporary trick to have // track length too - if(version!=6 && version!=7){ + if (version<6) { //(version!=6 && version!=7) AliTOFhit *tofHit = (AliTOFhit *) tofHitArray->UncheckedAt(hit); tracknum = tofHit->GetTrack(); vol[0] = tofHit->GetSector(); @@ -460,7 +468,13 @@ void AliTOFSDigitizer::Exec(Option_t *verboseOption) { } geantTime *= 1.e+09; // conversion from [s] to [ns] - + // TOF matching window (~200ns) control + if (geantTime>=AliTOFGeometry::MatchingWindow()*1E-3) { + AliDebug(2,Form("Time measurement (%f) greater than the matching window (%f)", + geantTime, AliTOFGeometry::MatchingWindow()*1E-3)); + continue; + } + // selection case for sdigitizing only hits in a given plate of a given sector if(thereIsNotASelection || (vol[0]==fSelectedSector && vol[1]==fSelectedPlate)){ @@ -498,8 +512,15 @@ void AliTOFSDigitizer::Exec(Option_t *verboseOption) { for(Int_t indexOfPad=0; indexOfPad=0.2) nlargeTofDiff++; + + // TOF matching window (~200ns) control + if (tofAfterSimul[indexOfPad]>=AliTOFGeometry::MatchingWindow()*1E-3) { + AliDebug(2,Form("Time measurement (%f) greater than the matching window (%f)", + tofAfterSimul[indexOfPad], AliTOFGeometry::MatchingWindow()*1E-3)); + continue; + } + + if(timediff>=0.2) nlargeTofDiff++; // greater than 200ps digit[0] = (Int_t) ((tofAfterSimul[indexOfPad]*1.e+03)/AliTOFGeometry::TdcBinWidth()); // TDC bin number (each bin -> 24.4 ps) @@ -551,15 +572,14 @@ void AliTOFSDigitizer::Exec(Option_t *verboseOption) { if (tof->SDigits()) tof->ResetSDigits(); - if (strstr(verboseOption,"all")) { - AliInfo("----------------------------------------"); - AliInfo(" "); - AliInfo(Form("After sdigitizing %d hits in event %d", nselectedHitsinEv, iEvent)); + if (strstr(verboseOption,"all") || strstr(verboseOption,"partial")) { + AliDebug(2,"----------------------------------------"); + AliDebug(2,Form("After sdigitizing %d hits in event %d", nselectedHitsinEv, iEvent)); //" (" << nHitsFromPrim << " from primaries and " << nHitsFromSec << " from secondaries) TOF hits, " - AliInfo(Form("%d digits have been created", ntotalsdigitsinEv)); - AliInfo(Form("(%d due to signals and %d due to border effect)", nsignalsdigitsinEv, nnoisesdigitsinEv)); - AliInfo(Form("%d total updates of the hit map have been performed in current event", ntotalupdatesinEv)); - AliInfo("----------------------------------------"); + AliDebug(1,Form("%d sdigits have been created", ntotalsdigitsinEv)); + AliDebug(2,Form("(%d due to signals and %d due to border effect)", nsignalsdigitsinEv, nnoisesdigitsinEv)); + AliDebug(2,Form("%d total updates of the hit map have been performed in current event", ntotalupdatesinEv)); + AliDebug(2,"----------------------------------------"); } } //event loop on events @@ -576,19 +596,15 @@ void AliTOFSDigitizer::Exec(Option_t *verboseOption) { } nHitsFromSec=nselectedHits-nHitsFromPrim; - if(strstr(verboseOption,"all")){ - AliInfo("----------------------------------------"); - AliInfo("----------------------------------------"); - AliInfo("-----------SDigitization Summary--------"); - AliInfo(" "); - AliInfo(Form("After sdigitizing %d hits", nselectedHits)); - AliInfo(Form("in %d events", fEvent2-fEvent1)); -//" (" << nHitsFromPrim << " from primaries and " << nHitsFromSec << " from secondaries) TOF hits, " - AliInfo(Form("%d sdigits have been created", ntotalsdigits)); - AliInfo(Form("(%d due to signals and " - "%d due to border effect)", nsignalsdigits, nnoisesdigits)); - AliInfo(Form("%d total updates of the hit map have been performed", ntotalupdates)); - AliInfo(Form("in %d cases the time of flight difference is greater than 200 ps", nlargeTofDiff)); + if (strstr(verboseOption,"all") || strstr(verboseOption,"partial")) { + AliDebug(2,"----------------------------------------"); + AliDebug(2,Form("After sdigitizing %d hits in %d events ", nselectedHits, fEvent2-fEvent1)); + //" (" << nHitsFromPrim << " from primaries and " << nHitsFromSec << " from secondaries) TOF hits, " + AliDebug(2,Form("%d sdigits have been created", ntotalsdigits)); + AliDebug(2,Form("(%d due to signals and %d due to border effect)", nsignalsdigits, nnoisesdigits)); + AliDebug(2,Form("%d total updates of the hit map have been performed", ntotalupdates)); + AliDebug(2,Form("in %d cases the time of flight difference is greater than 200 ps", nlargeTofDiff)); + AliDebug(2,"----------------------------------------"); }