X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;ds=sidebyside;f=ITS%2FAliITSreconstruction.cxx;h=dd4dbd046f2905b5b68f46099fa209abfae6ad0c;hb=9d6c682d5d13eaeaeebc16c1911baf4ee4b530f0;hp=2ea5a0c659e759d39d8f4fc149a99c7e7795f377;hpb=8ace09b642af2b0845171d6aed8f513a3e6d46a2;p=u%2Fmrichter%2FAliRoot.git diff --git a/ITS/AliITSreconstruction.cxx b/ITS/AliITSreconstruction.cxx index 2ea5a0c659e..dd4dbd046f2 100644 --- a/ITS/AliITSreconstruction.cxx +++ b/ITS/AliITSreconstruction.cxx @@ -16,32 +16,19 @@ /* $Id$ */ ///////////////////////////////////////////////////////////////////////// // // -// // +// Class for ITS RecPoint reconstruction // // // //////////////////////////////////////////////////////////////////////// -#include -#include -#include #include -#include - #include "AliRun.h" #include "AliRunLoader.h" - -#include "AliITS.h" -#include "AliITSDetType.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) //______________________________________________________________________ @@ -49,8 +36,9 @@ AliITSreconstruction::AliITSreconstruction(): fInit(kFALSE), fEnt(0), fEnt0(0), - fITS(0x0), + fDetTypeRec(0x0), fDfArp(kFALSE), + fITSgeom(0x0), fLoader(0x0), fRunLoader(0x0) { @@ -69,8 +57,9 @@ AliITSreconstruction::AliITSreconstruction(AliRunLoader *rl): fInit(kFALSE), fEnt(0), fEnt0(0), - fITS(0x0), + fDetTypeRec(0x0), fDfArp(kFALSE), + fITSgeom(0x0), fLoader(0x0), fRunLoader(rl) { @@ -81,8 +70,9 @@ AliITSreconstruction::AliITSreconstruction(const char* filename): fInit(kFALSE), fEnt(0), fEnt0(0), - fITS(0x0), + fDetTypeRec(0x0), fDfArp(kFALSE), + fITSgeom(0x0), fLoader(0x0), fRunLoader(0x0) { @@ -116,11 +106,39 @@ AliITSreconstruction::AliITSreconstruction(const char* filename): } // end if !gAlice } + +//______________________________________________________________________ +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(){ // A destroyed AliITSreconstruction class. + + //fITS = 0; delete fRunLoader; - fITS = 0; + } //______________________________________________________________________ Bool_t AliITSreconstruction::Init(){ @@ -146,20 +164,13 @@ Bool_t AliITSreconstruction::Init(){ fInit = kFALSE; } - //Int_t retcode; - fITS = (AliITS*) gAlice->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() // Now ready to init. + + fRunLoader->CdGAFile(); + fITSgeom = fLoader->GetITSgeom(); + fDetTypeRec = new AliITSDetTypeRec(fLoader); + fDetTypeRec->SetDefaults(); fDet[0] = fDet[1] = fDet[2] = kTRUE; fEnt0 = 0; @@ -170,9 +181,13 @@ Bool_t AliITSreconstruction::Init(){ fLoader->LoadRecPoints("recreate"); fLoader->LoadRawClusters("recreate"); if (fLoader->TreeR() == 0x0) fLoader->MakeTree("R"); - fITS->MakeBranch("R"); - fITS->MakeBranchC(); - fITS->SetTreeAddress(); + if (fLoader->TreeC() == 0x0) fLoader->MakeTree("C"); + + fDetTypeRec->MakeBranchR(0); + fDetTypeRec->MakeBranchC(); + fDetTypeRec->SetTreeAddress(); + fDetTypeRec->SetTreeAddressR(fLoader->TreeR()); + fInit = InitRec(); Info("Init"," Done\n\n\n"); @@ -188,45 +203,49 @@ Bool_t AliITSreconstruction::InitRec(){ // none. // Return: // none. - AliITSDetType *idt; - + /* + //AliITSDetType *idt; + fDetTypeRec->SetLoader(fLoader); // SPD - if(fDet[kSPD]){ - Info("InitRec","SPD"); - idt = fITS->DetType(kSPD); - AliITSsegmentationSPD *segSPD = (AliITSsegmentationSPD*)idt->GetSegmentationModel(); - TClonesArray *digSPD = fITS->DigitsAddress(kSPD); - TClonesArray *recpSPD = fITS->ClustersAddress(kSPD); - Info("InitRec","idt = %#x; digSPD = %#x; recpSPD = %#x",idt,digSPD,recpSPD); + if(fDet[kSPD]){ + Info("InitRec","SPD"); + //idt = fITS->DetType(kSPD); + AliITSsegmentationSPD *segSPD = (AliITSsegmentationSPD*)fDetTypeRec->GetSegmentationModel(0); + TClonesArray *digSPD = fDetTypeRec->DigitsAddress(kSPD); + TClonesArray *recpSPD = fDetTypeRec->ClustersAddress(kSPD); + Info("InitRec","idt = %#x; digSPD = %#x; recpSPD = %#x",fDetTypeRec,digSPD,recpSPD); AliITSClusterFinderSPD *recSPD = new AliITSClusterFinderSPD(segSPD,digSPD,recpSPD); - fITS->SetReconstructionModel(kSPD,recSPD); + fDetTypeRec->SetReconstructionModel(kSPD,recSPD); } // end if fDet[kSPD]. - // SDD - if(fDet[kSDD]){ - Info("InitRec","SDD"); - 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] + // SDD + if(fDet[kSDD]){ + Info("InitRec","SDD"); + // idt = fITS->DetType(kSDD); + AliITSsegmentationSDD *segSDD = (AliITSsegmentationSDD*) + fDetTypeRec->GetSegmentationModel(1); + AliITSresponseSDD *resSDD = (AliITSresponseSDD*) + fDetTypeRec->GetCalibrationModel(fDetTypeRec->GetITSgeom()->GetStartSDD()); + TClonesArray *digSDD = fDetTypeRec->DigitsAddress(kSDD); + TClonesArray *recpSDD = fDetTypeRec->ClustersAddress(kSDD); + AliITSClusterFinderSDD *recSDD =new AliITSClusterFinderSDD(segSDD, + resSDD, + digSDD,recpSDD); + fDetTypeRec->SetReconstructionModel(kSDD,recSDD); + } // end if fDet[kSDD] // SSD - if(fDet[kSSD]){ - Info("InitRec","SSD"); - idt = fITS->DetType(kSSD); - AliITSsegmentationSSD *segSSD = (AliITSsegmentationSSD*) - idt->GetSegmentationModel(); - TClonesArray *digSSD = fITS->DigitsAddress(kSSD); + if(fDet[kSSD]){ + Info("InitRec","SSD"); + //idt = fITS->DetType(kSSD); + AliITSsegmentationSSD *segSSD = (AliITSsegmentationSSD*) + fDetTypeRec->GetSegmentationModel(2); + TClonesArray *digSSD = fDetTypeRec->DigitsAddress(kSSD); AliITSClusterFinderSSD *recSSD =new AliITSClusterFinderSSD(segSSD, - digSSD); - fITS->SetReconstructionModel(kSSD,recSSD); + digSSD); + recSSD->SetITSgeom(fDetTypeRec->GetITSgeom()); + fDetTypeRec->SetReconstructionModel(kSSD,recSSD); } // end if fDet[kSSD] + */ + fDetTypeRec->SetDefaultClusterFinders(); Info("InitRec"," Done\n"); return kTRUE; } @@ -258,7 +277,6 @@ void AliITSreconstruction::Exec(const Option_t *opt){ cout << "Initilization Failed, Can't run Exec." << endl; return; } // end if !fInit - for(evnt=0;evntGetEvent(evnt); if (fLoader->TreeR() == 0x0) fLoader->MakeTree("R"); - fITS->MakeBranch("R"); - if (fLoader->TreeC() == 0x0) fITS->MakeTreeC(); - fITS->SetTreeAddress(); - fITS->DigitsToRecPoints(evnt,0,lopt); + fDetTypeRec->MakeBranchR(0); + if (fLoader->TreeC() == 0x0){ + fDetTypeRec->MakeTreeC(); + fDetTypeRec->MakeBranchC(); + } + fDetTypeRec->SetTreeAddressR(fLoader->TreeR()); + fDetTypeRec->SetTreeAddressD(fLoader->TreeD()); + fDetTypeRec->DigitsToRecPoints(evnt,0,lopt); } // end for evnt } //______________________________________________________________________