X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=ITS%2FAliITSreconstruction.cxx;h=6ba1d3e00de12d0e85a88b4b4ed0488e6d73728f;hb=2f6dae4452b7b32c4ff7730fc4d0bcb6ae07b91d;hp=06d5afb9896eaf0a572aa58596cdfff960d485eb;hpb=b9d0a01d7a0723a09071b0b56200d72f59a9c2b6;p=u%2Fmrichter%2FAliRoot.git diff --git a/ITS/AliITSreconstruction.cxx b/ITS/AliITSreconstruction.cxx index 06d5afb9896..6ba1d3e00de 100644 --- a/ITS/AliITSreconstruction.cxx +++ b/ITS/AliITSreconstruction.cxx @@ -13,59 +13,35 @@ * provided "as is" without express or implied warranty. * **************************************************************************/ -/* -$Log$ -Revision 1.3.6.2 2002/10/14 13:14:08 hristov -Updating VirtualMC to v3-09-02 +/* $Id$ */ +///////////////////////////////////////////////////////////////////////// +// // +// Class for ITS RecPoint reconstruction // +// // +//////////////////////////////////////////////////////////////////////// -Revision 1.6 2002/09/09 17:30:02 nilsen -Added new creator which passes a pointer to type AliRun. Can now use either -gAlice or a local instance of AliRun. - -Revision 1.5 2002/05/13 14:27:57 hristov -TreeC created once per event (M.Masera) - -Revision 1.4 2002/05/10 22:31:30 nilsen -Changes by Massimo Masera to allow Recpoints and Clusters to be written -to separate files. - -Revision 1.3 2002/02/06 13:52:27 barbera -gAlice deletion corrected (from M. Masera) - -Revision 1.2 2002/01/31 18:52:09 nilsen -Minor change to allow the use of files that are already open. grun.C macro -that also does ITS digitizationa and Reconstruction all in one go. - -Revision 1.1 2002/01/30 22:20:22 nilsen -New TTask based method to do Digits To clusters. Works with files of multiple -events in the file. Macro added to show how to use. Also the changes made -in the nessesary complilation files. - -*/ -#include -#include -#include #include -#include - #include "AliRun.h" - -#include "AliITS.h" -#include "AliITSDetType.h" +#include "AliRunLoader.h" +#include "AliITSDetTypeRec.h" +#include "AliITSLoader.h" #include "AliITSreconstruction.h" -#include "AliITSsegmentationSPD.h" -#include "AliITSsegmentationSDD.h" -#include "AliITSsegmentationSSD.h" -#include "AliITSClusterFinderSPD.h" -#include "AliITSClusterFinderSDD.h" -#include "AliITSClusterFinderSSD.h" -#include "AliITSresponseSDD.h" #include "AliITSgeom.h" + ClassImp(AliITSreconstruction) //______________________________________________________________________ -AliITSreconstruction::AliITSreconstruction(){ +AliITSreconstruction::AliITSreconstruction(): + fInit(kFALSE), + fEnt(0), + fEnt0(0), + fDetTypeRec(0x0), + fDfArp(kFALSE), + fITSgeom(0x0), + fLoader(0x0), + fRunLoader(0x0) +{ // Default constructor. // Inputs: // none. @@ -73,38 +49,33 @@ AliITSreconstruction::AliITSreconstruction(){ // none. // Return: // A zero-ed constructed AliITSreconstruction class. - - fFilename = ""; - fFile = 0; - fFile2 = 0; - fITS = 0; fDet[0] = fDet[1] = fDet[2] = kTRUE; - fInit = kFALSE; - fArp = 0; - fDfArp = kFALSE; } //______________________________________________________________________ -AliITSreconstruction::AliITSreconstruction(AliRun *ar){ - // Standard constructor. - // Inputs: - // AliRun *ar Pointer to an existing AliRun object. Assumed that - // this AliRun object will not be deleted by this distructor. - // Outputs: - // none. - // Return: - // A standardly constructed AliITSreconstruction class. - fFilename = ""; - fFile = 0; - fFile2 = 0; - fITS = 0; - fDet[0] = fDet[1] = fDet[2] = kTRUE; - fInit = kFALSE; - fDfArp = kFALSE; - fArp = ar; +AliITSreconstruction::AliITSreconstruction(AliRunLoader *rl): + fInit(kFALSE), + fEnt(0), + fEnt0(0), + fDetTypeRec(0x0), + fDfArp(kFALSE), + fITSgeom(0x0), + fLoader(0x0), + fRunLoader(rl) +{ + fDet[0] = fDet[1] = fDet[2] = kTRUE; } //______________________________________________________________________ -AliITSreconstruction::AliITSreconstruction(const char* filename){ +AliITSreconstruction::AliITSreconstruction(const char* filename): + fInit(kFALSE), + fEnt(0), + fEnt0(0), + fDetTypeRec(0x0), + fDfArp(kFALSE), + fITSgeom(0x0), + fLoader(0x0), + fRunLoader(0x0) +{ // Standard constructor. // Inputs: // const char* filename filename containing the digits to be @@ -117,43 +88,49 @@ AliITSreconstruction::AliITSreconstruction(const char* filename){ // Return: // A standardly constructed AliITSreconstruction class. - fFilename = filename; - fFile2 = 0; - fFile = 0; - fArp = 0; - fDfArp = kTRUE; - if(filename){ - fFile = (TFile*)gROOT->GetListOfFiles()->FindObject(fFilename.Data()); - if(fFile) fFile->Close(); - fFile = new TFile(fFilename.Data(),"UPDATE"); - if(fArp) { - delete fArp; - fArp = 0; - } - fArp = (AliRun*)fFile->Get("gAlice"); - if(!fArp) { - cout << "gAlice not found on file. Aborting." << endl; - fInit = kFALSE; - return; - } // end if !fArp - } // end if !filename. + fDet[0] = fDet[1] = fDet[2] = kTRUE; + + fRunLoader = AliRunLoader::Open(filename); + if (fRunLoader == 0x0) + { + Error("AliITSreconstruction","Can not load the session",filename); + return; + } + +} + +//______________________________________________________________________ +AliITSreconstruction::AliITSreconstruction(const AliITSreconstruction &rec):TTask(rec), +fInit(rec.fInit), +fEnt(rec.fEnt), +fEnt0(rec.fEnt0), +fDetTypeRec(rec.fDetTypeRec), +fDfArp(rec.fDfArp), +fITSgeom(rec.fITSgeom), +fLoader(rec.fLoader), +fRunLoader(rec.fRunLoader) +{ + // Copy constructor. + + +} + +//______________________________________________________________________ +AliITSreconstruction& AliITSreconstruction::operator=(const AliITSreconstruction& source){ + // Assignment operator. + this->~AliITSreconstruction(); + new(this) AliITSreconstruction(source); + return *this; + } + //______________________________________________________________________ AliITSreconstruction::~AliITSreconstruction(){ - // Default constructor. - // Inputs: - // none. - // Outputs: - // none. - // Return: // A destroyed AliITSreconstruction class. - - if(fFile) fFile->Close(); - fFile = 0; - fITS = 0; - if(fDfArp){ - if(fArp) delete fArp; - } // end if + + //fITS = 0; + delete fRunLoader; + } //______________________________________________________________________ Bool_t AliITSreconstruction::Init(){ @@ -164,28 +141,46 @@ Bool_t AliITSreconstruction::Init(){ // none. // Return: // kTRUE if no errors initilizing this class occurse else kFALSE - Int_t nparticles; - fITS = (AliITS*) fArp->GetDetector("ITS"); - if(!fITS){ - cout << "ITS not found aborting. fITS=" << fITS << endl; - fInit = kFALSE; - return fInit; - } // end if !fITS - if(!(fITS->GetITSgeom())){ - cout << "ITSgeom not found aborting."<< endl; - fInit = kFALSE; - return fInit; - } // end if !GetITSgeom() + Info("Init",""); + if (fRunLoader == 0x0) + { + Error("Init","Run Loader is NULL"); + return kFALSE; + } + // fRunLoader->LoadgAlice(); + // fRunLoader->LoadHeader(); + + fLoader = (AliITSLoader*) fRunLoader->GetLoader("ITSLoader"); + if(!fLoader) { + Error("Init","ITS loader not found"); + fInit = kFALSE; + } + // Now ready to init. + + //fRunLoader->CdGAFile(); + fITSgeom = fLoader->GetITSgeom(); + fDetTypeRec = new AliITSDetTypeRec(); + fDetTypeRec->SetITSgeom(fITSgeom); + fDetTypeRec->SetDefaults(); fDet[0] = fDet[1] = fDet[2] = kTRUE; fEnt0 = 0; - fEnt = fArp->GetEventsPerRun(); - fITS->MakeTreeC(); - nparticles = fArp->GetEvent(fEnt0); - - // finished init. + + fEnt = Int_t(fRunLoader->GetNumberOfEvents()); + + fLoader->LoadDigits("read"); + fLoader->LoadRecPoints("recreate"); + if (fLoader->TreeR() == 0x0) fLoader->MakeTree("R"); + + fDetTypeRec->SetTreeAddressD(fLoader->TreeD()); + fDetTypeRec->MakeBranchR(fLoader->TreeR()); + fDetTypeRec->SetTreeAddressR(fLoader->TreeR()); + fInit = InitRec(); + + Info("Init"," Done\n\n\n"); + return fInit; } //______________________________________________________________________ @@ -197,46 +192,11 @@ Bool_t AliITSreconstruction::InitRec(){ // none. // Return: // none. - AliITSDetType *idt; - // SPD - if(fDet[kSPD]){ - idt = fITS->DetType(kSPD); - AliITSsegmentationSPD *segSPD = (AliITSsegmentationSPD*) - idt->GetSegmentationModel(); - TClonesArray *digSPD = fITS->DigitsAddress(kSPD); - TClonesArray *recpSPD = fITS->ClustersAddress(kSPD); - AliITSClusterFinderSPD *recSPD = new AliITSClusterFinderSPD(segSPD, - digSPD, - recpSPD); - fITS->SetReconstructionModel(kSPD,recSPD); - } // end if fDet[kSPD]. - // SDD - if(fDet[kSDD]){ - idt = fITS->DetType(kSDD); - AliITSsegmentationSDD *segSDD = (AliITSsegmentationSDD*) - idt->GetSegmentationModel(); - AliITSresponseSDD *resSDD = (AliITSresponseSDD*) - idt->GetResponseModel(); - TClonesArray *digSDD = fITS->DigitsAddress(kSDD); - TClonesArray *recpSDD = fITS->ClustersAddress(kSDD); - AliITSClusterFinderSDD *recSDD =new AliITSClusterFinderSDD(segSDD, - resSDD, - digSDD,recpSDD); - fITS->SetReconstructionModel(kSDD,recSDD); - } // end if fDet[kSDD] - // SSD - if(fDet[kSSD]){ - idt = fITS->DetType(kSSD); - AliITSsegmentationSSD *segSSD = (AliITSsegmentationSSD*) - idt->GetSegmentationModel(); - TClonesArray *digSSD = fITS->DigitsAddress(kSSD); - AliITSClusterFinderSSD *recSSD =new AliITSClusterFinderSSD(segSSD, - digSSD); - fITS->SetReconstructionModel(kSSD,recSSD); - } // end if fDet[kSSD] - return kTRUE; + fDetTypeRec->SetDefaultClusterFindersV2(); + Info("InitRec"," Done\n"); + return kTRUE; } //______________________________________________________________________ void AliITSreconstruction::Exec(const Option_t *opt){ @@ -248,51 +208,49 @@ void AliITSreconstruction::Exec(const Option_t *opt){ // Return: // none. Option_t *lopt; - Int_t nparticles,evnt; + Int_t evnt; if(strstr(opt,"All")||strstr(opt,"ALL")||strstr(opt,"ITS")||opt==0){ - fDet[0] = fDet[1] = fDet[2] = kTRUE; - lopt = "All"; + fDet[0] = fDet[1] = fDet[2] = kTRUE; + lopt = "All"; }else{ - fDet[0] = fDet[1] = fDet[2] = kFALSE; - if(strstr(opt,"SPD")) fDet[kSPD] = kTRUE; - if(strstr(opt,"SDD")) fDet[kSDD] = kTRUE; - if(strstr(opt,"SSD")) fDet[kSSD] = kTRUE; - if(fDet[kSPD] && fDet[kSDD] && fDet[kSSD]) lopt = "All"; - else lopt = opt; + fDet[0] = fDet[1] = fDet[2] = kFALSE; + if(strstr(opt,"SPD")) fDet[kSPD] = kTRUE; + if(strstr(opt,"SDD")) fDet[kSDD] = kTRUE; + if(strstr(opt,"SSD")) fDet[kSSD] = kTRUE; + if(fDet[kSPD] && fDet[kSDD] && fDet[kSSD]) lopt = "All"; + else lopt = opt; } // end if strstr(opt,...) if(!fInit){ - cout << "Initilization Failed, Can't run Exec." << endl; - return; + cout << "Initilization Failed, Can't run Exec." << endl; + return; } // end if !fInit - TDirectory *curr = gDirectory; - if(fFile2)fFile2->cd(); - for(evnt=0;evntGetEvent(evnt); - fArp->SetEvent(evnt); - if(!fArp->TreeR()){ - if(fFile2){ - fArp->MakeTree("R",fFile2); - } - else { - fArp->MakeTree("R"); - } - } - fITS->MakeBranch("R"); - fITS->MakeTreeC(); - fITS->DigitsToRecPoints(evnt,0,lopt); + for(evnt=0;evntGetEvent(evnt); + if (fLoader->TreeR() == 0x0) fLoader->MakeTree("R"); + fDetTypeRec->MakeBranchR(0); + fDetTypeRec->SetTreeAddressR(fLoader->TreeR()); + fDetTypeRec->SetTreeAddressD(fLoader->TreeD()); + fDetTypeRec->DigitsToRecPoints(fLoader->TreeD(),fLoader->TreeR(),0,lopt); } // end for evnt - curr->cd(); } //______________________________________________________________________ void AliITSreconstruction::SetOutputFile(TString filename){ - // Set a file name for recpoints. Used only if this file is not the file - // containing digits. This obj is deleted by AliRun. - fFile2 = fArp->InitTreeFile("R",filename); + // Set a new file name for recpoints. + // It must be called before Init() + if(!fLoader)fLoader = (AliITSLoader*) fRunLoader->GetLoader("ITSLoader"); + if(fLoader){ + Info("SetOutputFile","name for rec points is %s",filename.Data()); + fLoader->SetRecPointsFileName(filename); + } + else { + Error("SetOutputFile", + "ITS loader not available. Not possible to set name: %s",filename.Data()); + } } - - - - -