From 7b6684fee09cb8cac37b3ed96dd6218fcce96da3 Mon Sep 17 00:00:00 2001 From: laphecet Date: Wed, 5 Mar 2008 10:51:04 +0000 Subject: [PATCH] AliMUON*TrackerData Adding a second parameter to Add method (to take into account cases where the store to be added already corresponds to an accumulation of data over N events). Few other improvements. AliMUONMchViewApplication Going up to version 0.92 --- MUON/AliMUONMchViewApplication.h | 2 +- MUON/AliMUONTrackerData.cxx | 72 +++++++++++++++++++++++++------- MUON/AliMUONTrackerData.h | 7 +++- MUON/AliMUONVTrackerData.h | 8 +++- 4 files changed, 68 insertions(+), 21 deletions(-) diff --git a/MUON/AliMUONMchViewApplication.h b/MUON/AliMUONMchViewApplication.h index abef192e45e..344beb7a60c 100644 --- a/MUON/AliMUONMchViewApplication.h +++ b/MUON/AliMUONMchViewApplication.h @@ -34,7 +34,7 @@ public: void HandleMenu(Int_t i); /// Return the version number of the mchview application - static const char* Version() { return "0.91"; } + static const char* Version() { return "0.92"; } /// Return the SVN revision and version number of the mchview application static const char* FullVersion() { return Form("mchview Version %s ($Revision$)",Version()); } diff --git a/MUON/AliMUONTrackerData.cxx b/MUON/AliMUONTrackerData.cxx index b640b50296f..c6bbc293c01 100644 --- a/MUON/AliMUONTrackerData.cxx +++ b/MUON/AliMUONTrackerData.cxx @@ -104,20 +104,20 @@ AliMUONTrackerData::~AliMUONTrackerData() //_____________________________________________________________________________ Bool_t -AliMUONTrackerData::Add(const AliMUONVStore& store) +AliMUONTrackerData::Add(const AliMUONVStore& store, Int_t numberOfEvents) { /// Add the given external store to our internal store AliCodeTimerAuto(GetName()); - ++fNevents; + fNevents += numberOfEvents; NumberOfEventsChanged(); if (!fChannelValues) { - fChannelValues = store.Create(); - fManuValues = store.Create(); - fPCBValues = store.Create(); + fChannelValues = new AliMUON2DMap(kTRUE); + fManuValues = new AliMUON2DMap(kTRUE); + fPCBValues = new AliMUON2DMap(kFALSE); fBusPatchValues = new AliMUON1DMap; fDEValues = new AliMUON1DMap; fChamberValues = new AliMUON1DArray; @@ -141,6 +141,8 @@ AliMUONTrackerData::Add(const AliMUONVStore& store) Int_t manuId = GetParts(external,chamber,de,busPatch,pcb,manu,channel,mpde); + if ( manuId < 0 ) continue; + Int_t detElemId = mpde->GetId(); Double_t value[] = { 0.0, 0.0 }; @@ -380,7 +382,7 @@ AliMUONTrackerData::ChannelParam(Int_t detElemId, Int_t manuId, if (!param && external && fChannelValues) { - param = CreateDouble(*external); + param = CreateDouble(*external,detElemId,manuId); fChannelValues->Add(param); } @@ -415,7 +417,8 @@ AliMUONTrackerData::Count(Int_t detElemId, Int_t manuId, //_____________________________________________________________________________ AliMUONVCalibParam* -AliMUONTrackerData::CreateDouble(const AliMUONVCalibParam& param) const +AliMUONTrackerData::CreateDouble(const AliMUONVCalibParam& param, + Int_t detElemId, Int_t manuId) const { /// Create a double version of VCalibParam, for internal use @@ -423,13 +426,19 @@ AliMUONTrackerData::CreateDouble(const AliMUONVCalibParam& param) const AliMUONVCalibParam* c = new AliMUONCalibParamND(Dimension(), param.Size(), - param.ID0(), - param.ID1(), + detElemId, + manuId, 0.0); + AliMpDetElement* de = AliMpDDLStore::Instance()->GetDetElement(detElemId,manuId); + for ( Int_t i = 0; i < c->Size(); ++i ) { - c->SetValueAsDouble(i,IndexOfNumberDimension(),1.0); + Double_t value(0.0); + + if ( de->IsConnectedChannel(manuId,i) ) value = 1.0; + + c->SetValueAsDouble(i,IndexOfNumberDimension(),value); } return c; @@ -604,14 +613,34 @@ AliMUONTrackerData::GetParts(AliMUONVCalibParam* external, AliMpDDLStore* ddlStore = AliMpDDLStore::Instance(); - Int_t detElemId = external->ID0(); - - Int_t chamberId = AliMpDEManager::GetChamberId(detElemId); - - Int_t manuId = external->ID1(); + Int_t detElemId; + Int_t manuId; + if ( external->ID1() <= 0 ) + { + // we get a manu serial number + Int_t serial = external->ID0(); + AliMpIntPair pair = ddlStore->GetDetElemIdManu(serial); + detElemId = pair.GetFirst(); + manuId = pair.GetSecond(); + if ( !detElemId ) + { + AliError(Form("DE %d manuId %d from serial %d is not correct !", + detElemId,manuId,serial)); + return -1; + } + } + else + { + // we get a (de,manu) pair + detElemId = external->ID0(); + manuId = external->ID1(); + } + mpde = ddlStore->GetDetElement(detElemId); - + + Int_t chamberId = AliMpDEManager::GetChamberId(detElemId); + Int_t busPatchId = ddlStore->GetBusPatchId(detElemId,manuId); Int_t pcbIndex = -1; @@ -731,6 +760,17 @@ AliMUONTrackerData::CreateManuParam(Int_t detElemId, Int_t manuId) const return manu; } +//_____________________________________________________________________________ +Long64_t +AliMUONTrackerData::Merge(TCollection* li) +{ + /// Merge all tracker data objects from li into a single one. + + AliError("Not implemented yet"); + + return 0; +} + //_____________________________________________________________________________ Int_t AliMUONTrackerData::NumberOfDimensions() const diff --git a/MUON/AliMUONTrackerData.h b/MUON/AliMUONTrackerData.h index fd4168b2518..b5e74478320 100644 --- a/MUON/AliMUONTrackerData.h +++ b/MUON/AliMUONTrackerData.h @@ -29,7 +29,7 @@ public: Bool_t runnable=kTRUE); virtual ~AliMUONTrackerData(); - virtual Bool_t Add(const AliMUONVStore& channelValues); + virtual Bool_t Add(const AliMUONVStore& channelValues, Int_t numberOfEvents=1); virtual Double_t BusPatch(Int_t busPatchId, Int_t dim=0) const; @@ -133,13 +133,16 @@ private: /// Whether we have histograms for a given dimension, or not virtual Bool_t IsHistogrammed(Int_t dim) const { return ( fHistogramming[dim] > 0 ); } + /// To allow merging of different objects + virtual Long64_t Merge(TCollection* list); + private: /// Not implemented AliMUONTrackerData(const AliMUONTrackerData& rhs); /// Not implemented AliMUONTrackerData& operator=(const AliMUONTrackerData& rhs); - AliMUONVCalibParam* CreateDouble(const AliMUONVCalibParam& param) const; + AliMUONVCalibParam* CreateDouble(const AliMUONVCalibParam& param, Int_t detElemId, Int_t manuId) const; Int_t GetParts(AliMUONVCalibParam* external, AliMUONVCalibParam*& chamber, diff --git a/MUON/AliMUONVTrackerData.h b/MUON/AliMUONVTrackerData.h index 9a911de2b30..f3ffbd092b8 100644 --- a/MUON/AliMUONVTrackerData.h +++ b/MUON/AliMUONVTrackerData.h @@ -25,6 +25,7 @@ class AliMUONSparseHisto; class AliMUONVStore; +class TCollection; class AliMUONVTrackerData : public TNamed { @@ -35,8 +36,8 @@ public: AliMUONVTrackerData(const char* name="",const char* title="", Bool_t runnable=kTRUE); virtual ~AliMUONVTrackerData(); - /// Add values for one full store - virtual Bool_t Add(const AliMUONVStore& store) = 0; + /// Add values (accumulated over numberOfEvents events) for one full store + virtual Bool_t Add(const AliMUONVStore& store, Int_t numberOfEvents=1) = 0; /// Get the value for a given buspatch and given dimension virtual Double_t BusPatch(Int_t busPatchId, Int_t dim=0) const = 0; @@ -134,6 +135,9 @@ public: virtual AliMUONSparseHisto* GetChannelSparseHisto(Int_t detElemId, Int_t manuId, Int_t manuChannel, Int_t dim=0) const = 0; + /// To allow merging of different objects + virtual Long64_t Merge(TCollection* list) = 0; + private: /// not implemented AliMUONVTrackerData(const AliMUONVTrackerData& rhs); -- 2.39.3