From: dainese Date: Wed, 7 Jul 2010 09:45:12 +0000 (+0000) Subject: Move the summary plots produced in the terminate in a kParamContainer in order to... X-Git-Url: http://git.uio.no/git/?a=commitdiff_plain;h=40be9f059c8e16b79ec9532638feb0d5f36490ed;p=u%2Fmrichter%2FAliRoot.git Move the summary plots produced in the terminate in a kParamContainer in order to save them in the standard output --- diff --git a/PWG3/muon/AddTaskMuonQA.C b/PWG3/muon/AddTaskMuonQA.C index ae15de58ae7..b4f0f0c013a 100644 --- a/PWG3/muon/AddTaskMuonQA.C +++ b/PWG3/muon/AddTaskMuonQA.C @@ -41,14 +41,16 @@ AliAnalysisTaskMuonQA *AddTaskMuonQA(Bool_t selectPhysics = kTRUE, Short_t selec outputfile += ":MUON_QA"; // Create and connect output containers - AliAnalysisDataContainer *cout_histo1 = mgr->CreateContainer("general", TObjArray::Class(), AliAnalysisManager::kOutputContainer, outputfile); + AliAnalysisDataContainer *cout_histo1 = mgr->CreateContainer("general1", TObjArray::Class(), AliAnalysisManager::kOutputContainer, outputfile); AliAnalysisDataContainer *cout_histo2 = mgr->CreateContainer("expert", TObjArray::Class(), AliAnalysisManager::kOutputContainer, outputfile); AliAnalysisDataContainer *cout_trackStat = mgr->CreateContainer("trackCounters", AliCounterCollection::Class(), AliAnalysisManager::kOutputContainer, outputfile); AliAnalysisDataContainer *cout_eventStat = mgr->CreateContainer("eventCounters", AliCounterCollection::Class(), AliAnalysisManager::kOutputContainer, outputfile); + AliAnalysisDataContainer *cout_normalized = mgr->CreateContainer("general2", TObjArray::Class(), AliAnalysisManager::kParamContainer, outputfile); mgr->ConnectOutput(task, 1, cout_histo1); mgr->ConnectOutput(task, 2, cout_histo2); mgr->ConnectOutput(task, 3, cout_trackStat); mgr->ConnectOutput(task, 4, cout_eventStat); + mgr->ConnectOutput(task, 5, cout_normalized); return task; } diff --git a/PWG3/muon/AliAnalysisTaskMuonQA.cxx b/PWG3/muon/AliAnalysisTaskMuonQA.cxx index cdc1222ac4f..9099c657bda 100644 --- a/PWG3/muon/AliAnalysisTaskMuonQA.cxx +++ b/PWG3/muon/AliAnalysisTaskMuonQA.cxx @@ -77,11 +77,26 @@ const char* AliAnalysisTaskMuonQA::fgkTriggerShortName[11] = "Other" }; +//________________________________________________________________________ +AliAnalysisTaskMuonQA::AliAnalysisTaskMuonQA() : + AliAnalysisTaskSE(), + fList(0x0), + fListExpert(0x0), + fListNorm(0x0), + fTrackCounters(0x0), + fEventCounters(0x0), + fSelectCharge(0), + fSelectPhysics(kFALSE) +{ +// Dummy constructor +} + //________________________________________________________________________ AliAnalysisTaskMuonQA::AliAnalysisTaskMuonQA(const char *name) : AliAnalysisTaskSE(name), fList(0x0), fListExpert(0x0), + fListNorm(0x0), fTrackCounters(0x0), fEventCounters(0x0), fSelectCharge(0), @@ -97,6 +112,8 @@ AliAnalysisTaskMuonQA::AliAnalysisTaskMuonQA(const char *name) : DefineOutput(3,AliCounterCollection::Class()); // Output slot #4 writes event counters DefineOutput(4,AliCounterCollection::Class()); + // Output slot #5 writes normalized histograms + DefineOutput(5,TObjArray::Class()); } //________________________________________________________________________ @@ -105,6 +122,7 @@ AliAnalysisTaskMuonQA::~AliAnalysisTaskMuonQA() /// Destructor delete fList; delete fListExpert; + delete fListNorm; delete fTrackCounters; delete fEventCounters; } @@ -165,14 +183,14 @@ void AliAnalysisTaskMuonQA::UserCreateOutputObjects() hNClustersPerCh->SetOption("P"); hNClustersPerCh->SetMarkerStyle(kFullDotMedium); hNClustersPerCh->SetMarkerColor(kBlue); - fList->AddAtAndExpand(hNClustersPerCh, kNClustersPerCh); + fListExpert->AddAtAndExpand(hNClustersPerCh, kNClustersPerCh); TH1F* hNClustersPerDE = new TH1F("hNClustersPerDE", "averaged number of clusters per DE per track;DetElem ID;", nDE+1, -0.5, nDE+0.5); hNClustersPerDE->Sumw2(); hNClustersPerDE->SetOption("P"); hNClustersPerDE->SetMarkerStyle(kFullDotMedium); hNClustersPerDE->SetMarkerColor(kBlue); - fList->AddAtAndExpand(hNClustersPerDE, kNClustersPerDE); + fListExpert->AddAtAndExpand(hNClustersPerDE, kNClustersPerDE); for (Int_t i = 0; i < nCh; i++) { Float_t rMax = 0.5*dMax[i/2]; @@ -193,54 +211,6 @@ void AliAnalysisTaskMuonQA::UserCreateOutputObjects() TH2F* hClusterSizePerDE = new TH2F("hClusterSizePerDE", "cluster size distribution per DE;DetElem ID;size (n_{pads})", nDE+1, -0.5, nDE+0.5, 200, 0., 200.); fListExpert->AddAtAndExpand(hClusterSizePerDE, kClusterSizePerDE); - TH1F* hClusterChargePerChMean = new TH1F("hClusterChargePerChMean", "cluster mean charge per chamber;chamber ID; (fC)", nCh, -0.5, nCh-0.5); - hClusterChargePerChMean->SetOption("P"); - hClusterChargePerChMean->SetMarkerStyle(kFullDotMedium); - hClusterChargePerChMean->SetMarkerColor(kBlue); - fList->AddAtAndExpand(hClusterChargePerChMean, kClusterChargePerChMean); - - TH1F* hClusterChargePerChSigma = new TH1F("hClusterChargePerChSigma", "cluster charge dispersion per chamber;chamber ID;#sigma_{charge} (fC)", nCh, -0.5, nCh-0.5); - hClusterChargePerChSigma->SetOption("P"); - hClusterChargePerChSigma->SetMarkerStyle(kFullDotMedium); - hClusterChargePerChSigma->SetMarkerColor(kBlue); - fList->AddAtAndExpand(hClusterChargePerChSigma, kClusterChargePerChSigma); - - TH1F* hClusterChargePerDEMean = new TH1F("hClusterChargePerDEMean", "cluster mean charge per DE;DetElem ID; (fC)", nDE+1, -0.5, nDE+0.5); - hClusterChargePerDEMean->SetOption("P"); - hClusterChargePerDEMean->SetMarkerStyle(kFullDotMedium); - hClusterChargePerDEMean->SetMarkerColor(kBlue); - fList->AddAtAndExpand(hClusterChargePerDEMean, kClusterChargePerDEMean); - - TH1F* hClusterChargePerDESigma = new TH1F("hClusterChargePerDESigma", "cluster charge dispersion per DE;DetElem ID;#sigma_{charge} (fC)", nDE+1, -0.5, nDE+0.5); - hClusterChargePerDESigma->SetOption("P"); - hClusterChargePerDESigma->SetMarkerStyle(kFullDotMedium); - hClusterChargePerDESigma->SetMarkerColor(kBlue); - fList->AddAtAndExpand(hClusterChargePerDESigma, kClusterChargePerDESigma); - - TH1F* hClusterSizePerChMean = new TH1F("hClusterSizePerChMean", "cluster mean size per chamber;chamber ID; (n_{pads})", nCh, -0.5, nCh-0.5); - hClusterSizePerChMean->SetOption("P"); - hClusterSizePerChMean->SetMarkerStyle(kFullDotMedium); - hClusterSizePerChMean->SetMarkerColor(kBlue); - fList->AddAtAndExpand(hClusterSizePerChMean, kClusterSizePerChMean); - - TH1F* hClusterSizePerChSigma = new TH1F("hClusterSizePerChSigma", "cluster size dispersion per chamber;chamber ID;#sigma_{size} (n_{pads})", nCh, -0.5, nCh-0.5); - hClusterSizePerChSigma->SetOption("P"); - hClusterSizePerChSigma->SetMarkerStyle(kFullDotMedium); - hClusterSizePerChSigma->SetMarkerColor(kBlue); - fList->AddAtAndExpand(hClusterSizePerChSigma, kClusterSizePerChSigma); - - TH1F* hClusterSizePerDEMean = new TH1F("hClusterSizePerDEMean", "cluster mean size per DE;DetElem ID; (n_{pads})", nDE+1, -0.5, nDE+0.5); - hClusterSizePerDEMean->SetOption("P"); - hClusterSizePerDEMean->SetMarkerStyle(kFullDotMedium); - hClusterSizePerDEMean->SetMarkerColor(kBlue); - fList->AddAtAndExpand(hClusterSizePerDEMean, kClusterSizePerDEMean); - - TH1F* hClusterSizePerDESigma = new TH1F("hClusterSizePerDESigma", "cluster size dispersion per DE;DetElem ID;#sigma_{size} (n_{pads})", nDE+1, -0.5, nDE+0.5); - hClusterSizePerDESigma->SetOption("P"); - hClusterSizePerDESigma->SetMarkerStyle(kFullDotMedium); - hClusterSizePerDESigma->SetMarkerColor(kBlue); - fList->AddAtAndExpand(hClusterSizePerDESigma, kClusterSizePerDESigma); - // initialize track counters fTrackCounters = new AliCounterCollection("trackCounters"); fTrackCounters->AddRubric("track", "tracker/trigger/matched/any"); @@ -347,8 +317,8 @@ void AliAnalysisTaskMuonQA::UserExec(Option_t *) Int_t chId = esdCluster->GetChamberId(); Int_t deId = esdCluster->GetDetElemId(); - ((TH1F*)fList->UncheckedAt(kNClustersPerCh))->Fill(chId); - ((TH1F*)fList->UncheckedAt(kNClustersPerDE))->Fill(deId); + ((TH1F*)fListExpert->UncheckedAt(kNClustersPerCh))->Fill(chId); + ((TH1F*)fListExpert->UncheckedAt(kNClustersPerDE))->Fill(deId); ((TH1F*)fListExpert->UncheckedAt(kClusterHitMapInCh+chId))->Fill(esdCluster->GetX(), esdCluster->GetY()); @@ -444,14 +414,9 @@ void AliAnalysisTaskMuonQA::Terminate(Option_t *) /// Draw result to the screen /// Print statistics - // recover output objects - fList = static_cast (GetOutputData(1)); - fListExpert = static_cast (GetOutputData(2)); - if (!fList || !fListExpert) return; - fTrackCounters = static_cast (GetOutputData(3)); - fEventCounters = static_cast (GetOutputData(4)); - // global statistic + fTrackCounters = static_cast(GetOutputData(3)); + fEventCounters = static_cast(GetOutputData(4)); if (fTrackCounters && fEventCounters) { if (!gROOT->IsBatch()) { cout<<"whole statistics without selection:"<(GetOutputData(1)); + fListExpert = static_cast(GetOutputData(2)); + if (!fList || !fListExpert) return; + + // create summary plots + fListNorm = new TObjArray(1000); + fListNorm->SetOwner(); + + // mean/dispersion of cluster charge per chamber/DE + TH1F* hClusterChargePerChMean = new TH1F("hClusterChargePerChMean", "cluster mean charge per chamber;chamber ID; (fC)", nCh, -0.5, nCh-0.5); + hClusterChargePerChMean->SetOption("P"); + hClusterChargePerChMean->SetMarkerStyle(kFullDotMedium); + hClusterChargePerChMean->SetMarkerColor(kBlue); + fListNorm->AddAtAndExpand(hClusterChargePerChMean, kClusterChargePerChMean); + + TH1F* hClusterChargePerChSigma = new TH1F("hClusterChargePerChSigma", "cluster charge dispersion per chamber;chamber ID;#sigma_{charge} (fC)", nCh, -0.5, nCh-0.5); + hClusterChargePerChSigma->SetOption("P"); + hClusterChargePerChSigma->SetMarkerStyle(kFullDotMedium); + hClusterChargePerChSigma->SetMarkerColor(kBlue); + fListNorm->AddAtAndExpand(hClusterChargePerChSigma, kClusterChargePerChSigma); + + TH1F* hClusterChargePerDEMean = new TH1F("hClusterChargePerDEMean", "cluster mean charge per DE;DetElem ID; (fC)", nDE+1, -0.5, nDE+0.5); + hClusterChargePerDEMean->SetOption("P"); + hClusterChargePerDEMean->SetMarkerStyle(kFullDotMedium); + hClusterChargePerDEMean->SetMarkerColor(kBlue); + fListNorm->AddAtAndExpand(hClusterChargePerDEMean, kClusterChargePerDEMean); + + TH1F* hClusterChargePerDESigma = new TH1F("hClusterChargePerDESigma", "cluster charge dispersion per DE;DetElem ID;#sigma_{charge} (fC)", nDE+1, -0.5, nDE+0.5); + hClusterChargePerDESigma->SetOption("P"); + hClusterChargePerDESigma->SetMarkerStyle(kFullDotMedium); + hClusterChargePerDESigma->SetMarkerColor(kBlue); + fListNorm->AddAtAndExpand(hClusterChargePerDESigma, kClusterChargePerDESigma); + + // mean/dispersion of cluster size per chamber/DE + TH1F* hClusterSizePerChMean = new TH1F("hClusterSizePerChMean", "cluster mean size per chamber;chamber ID; (n_{pads})", nCh, -0.5, nCh-0.5); + hClusterSizePerChMean->SetOption("P"); + hClusterSizePerChMean->SetMarkerStyle(kFullDotMedium); + hClusterSizePerChMean->SetMarkerColor(kBlue); + fListNorm->AddAtAndExpand(hClusterSizePerChMean, kClusterSizePerChMean); + + TH1F* hClusterSizePerChSigma = new TH1F("hClusterSizePerChSigma", "cluster size dispersion per chamber;chamber ID;#sigma_{size} (n_{pads})", nCh, -0.5, nCh-0.5); + hClusterSizePerChSigma->SetOption("P"); + hClusterSizePerChSigma->SetMarkerStyle(kFullDotMedium); + hClusterSizePerChSigma->SetMarkerColor(kBlue); + fListNorm->AddAtAndExpand(hClusterSizePerChSigma, kClusterSizePerChSigma); + + TH1F* hClusterSizePerDEMean = new TH1F("hClusterSizePerDEMean", "cluster mean size per DE;DetElem ID; (n_{pads})", nDE+1, -0.5, nDE+0.5); + hClusterSizePerDEMean->SetOption("P"); + hClusterSizePerDEMean->SetMarkerStyle(kFullDotMedium); + hClusterSizePerDEMean->SetMarkerColor(kBlue); + fListNorm->AddAtAndExpand(hClusterSizePerDEMean, kClusterSizePerDEMean); + + TH1F* hClusterSizePerDESigma = new TH1F("hClusterSizePerDESigma", "cluster size dispersion per DE;DetElem ID;#sigma_{size} (n_{pads})", nDE+1, -0.5, nDE+0.5); + hClusterSizePerDESigma->SetOption("P"); + hClusterSizePerDESigma->SetMarkerStyle(kFullDotMedium); + hClusterSizePerDESigma->SetMarkerColor(kBlue); + fListNorm->AddAtAndExpand(hClusterSizePerDESigma, kClusterSizePerDESigma); + + // normalize histograms Float_t nTracks = ((TH1F*)fList->UncheckedAt(kNClustersPerTrack))->GetEntries(); if (nTracks > 0.) { - ((TH1F*)fList->UncheckedAt(kNClustersPerCh))->Scale(1./nTracks); - ((TH1F*)fList->UncheckedAt(kNClustersPerDE))->Scale(1./nTracks); + ((TH1F*)fListExpert->UncheckedAt(kNClustersPerCh))->Scale(1./nTracks); + ((TH1F*)fListExpert->UncheckedAt(kNClustersPerDE))->Scale(1./nTracks); + fListNorm->AddAtAndExpand(((TH1F*)fListExpert->UncheckedAt(kNClustersPerCh))->Clone(), kNClustersPerCh); + fListNorm->AddAtAndExpand(((TH1F*)fListExpert->UncheckedAt(kNClustersPerDE))->Clone(), kNClustersPerDE); } // fill summary plots per chamber - TH1* hClusterChargePerChMean = ((TH1F*)fList->UncheckedAt(kClusterChargePerChMean)); - TH1* hClusterChargePerChSigma = ((TH1F*)fList->UncheckedAt(kClusterChargePerChSigma)); - TH1* hClusterSizePerChMean = ((TH1F*)fList->UncheckedAt(kClusterSizePerChMean)); - TH1* hClusterSizePerChSigma = ((TH1F*)fList->UncheckedAt(kClusterSizePerChSigma)); for (Int_t iCh = 0; iCh < nCh; iCh++) { TH1* hClusterChargeInCh = ((TH1F*)fListExpert->UncheckedAt(kClusterChargeInCh+iCh)); @@ -501,11 +523,7 @@ void AliAnalysisTaskMuonQA::Terminate(Option_t *) // fill summary plots per DE TH2F* hClusterChargePerDE = ((TH2F*)fListExpert->UncheckedAt(kClusterChargePerDE)); - TH1F* hClusterChargePerDEMean = ((TH1F*)fList->UncheckedAt(kClusterChargePerDEMean)); - TH1F* hClusterChargePerDESigma = ((TH1F*)fList->UncheckedAt(kClusterChargePerDESigma)); TH2F* hClusterSizePerDE = ((TH2F*)fListExpert->UncheckedAt(kClusterSizePerDE)); - TH1F* hClusterSizePerDEMean = ((TH1F*)fList->UncheckedAt(kClusterSizePerDEMean)); - TH1F* hClusterSizePerDESigma = ((TH1F*)fList->UncheckedAt(kClusterSizePerDESigma)); for (Int_t iDE = 1; iDE < nDE+1; iDE++) { TH1D *tmp = hClusterChargePerDE->ProjectionY("tmp",iDE,iDE,"e"); @@ -528,15 +546,8 @@ void AliAnalysisTaskMuonQA::Terminate(Option_t *) } - TFile *histoFile = new TFile("histo.root", "RECREATE"); - histoFile->mkdir("general","general"); - histoFile->cd("general"); - fList->Write(); - histoFile->mkdir("expert","expert"); - histoFile->cd("expert"); - fListExpert->Write(); - histoFile->Close(); - + // Post summary data. + PostData(5, fListNorm); } //________________________________________________________________________ diff --git a/PWG3/muon/AliAnalysisTaskMuonQA.h b/PWG3/muon/AliAnalysisTaskMuonQA.h index a40d5129762..acad8687d84 100644 --- a/PWG3/muon/AliAnalysisTaskMuonQA.h +++ b/PWG3/muon/AliAnalysisTaskMuonQA.h @@ -14,7 +14,8 @@ class AliCounterCollection; class AliAnalysisTaskMuonQA : public AliAnalysisTaskSE { public: - AliAnalysisTaskMuonQA(const char *name = "MuonQA"); + AliAnalysisTaskMuonQA(); + AliAnalysisTaskMuonQA(const char *name); virtual ~AliAnalysisTaskMuonQA(); virtual void UserCreateOutputObjects(); @@ -69,6 +70,7 @@ private: TObjArray* fList; //!< List of output object for everybody TObjArray* fListExpert; //!< List of output object for experts + TObjArray* fListNorm; //!< Normalized histograms AliCounterCollection* fTrackCounters; //!< track statistics AliCounterCollection* fEventCounters; //!< event statistics @@ -83,7 +85,7 @@ private: static const char* fgkTriggerClass[10]; ///< full trigger class name static const char* fgkTriggerShortName[11]; ///< short trigger class name for counters - ClassDef(AliAnalysisTaskMuonQA, 1); + ClassDef(AliAnalysisTaskMuonQA, 2); }; #endif