]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
Move the summary plots produced in the terminate in a kParamContainer in order to...
authordainese <dainese@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 7 Jul 2010 09:45:12 +0000 (09:45 +0000)
committerdainese <dainese@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 7 Jul 2010 09:45:12 +0000 (09:45 +0000)
PWG3/muon/AddTaskMuonQA.C
PWG3/muon/AliAnalysisTaskMuonQA.cxx
PWG3/muon/AliAnalysisTaskMuonQA.h

index ae15de58ae70fb2bb2e8f35efd47d2d25ffe4c05..b4f0f0c013a2eb9d2fa88201a385dc89abfff776 100644 (file)
@@ -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;
 }   
index cdc1222ac4f4ca2e1d562b2d90b3743dba5f63e8..9099c657bda4dbdb744ca0a286e468ab8958beef 100644 (file)
@@ -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;<n_{clusters}>", 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;<charge> (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;<charge> (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;<size> (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;<size> (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<TObjArray*> (GetOutputData(1));
-  fListExpert = static_cast<TObjArray*> (GetOutputData(2));
-  if (!fList || !fListExpert) return;
-  fTrackCounters = static_cast<AliCounterCollection*> (GetOutputData(3));
-  fEventCounters = static_cast<AliCounterCollection*> (GetOutputData(4));
-  
   // global statistic
+  fTrackCounters = static_cast<AliCounterCollection*>(GetOutputData(3));
+  fEventCounters = static_cast<AliCounterCollection*>(GetOutputData(4));
   if (fTrackCounters && fEventCounters) {
     if (!gROOT->IsBatch()) {
       cout<<"whole statistics without selection:"<<endl;
@@ -471,18 +436,75 @@ void AliAnalysisTaskMuonQA::Terminate(Option_t *)
     }
   }
   
-  // normalize histograms and fill summary plots
+  // recover output histograms
+  fList = static_cast<TObjArray*>(GetOutputData(1));
+  fListExpert = static_cast<TObjArray*>(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;<charge> (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;<charge> (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;<size> (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;<size> (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);
 }
 
 //________________________________________________________________________
index a40d51297620f400b253bff7f4041ea57ce577a7..acad8687d84f1425fbfd2db4ae935ebad1bba773 100644 (file)
@@ -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