1 /**************************************************************************
2 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
7 * Permission to use, copy, modify and distribute this software and its *
8 * documentation strictly for non-commercial purposes is hereby granted *
9 * without fee, provided that the above copyright notice appears in all *
10 * copies and that both the copyright notice and this permission notice *
11 * appear in the supporting documentation. The authors make no claims *
12 * about the suitability of this software for any purpose. It is *
13 * provided "as is" without express or implied warranty. *
14 **************************************************************************/
18 // An analysis task to check the ESD VZERO data in simulated data
20 //////////////////////////////////////////////////////////////////////////////
33 #include "AliVZEROQATask.h"
35 #include "AliESDVZERO.h"
38 //______________________________________________________________________________
39 AliVZEROQATask::AliVZEROQATask(const char *name) :
40 AliAnalysisTask(name,""),
51 // Input slot #0 works with an Ntuple
52 DefineInput(0, TChain::Class());
53 // Output slot #0 writes into a TH1 container
54 DefineOutput(0, TObjArray::Class()) ;
57 //______________________________________________________________________________
58 AliVZEROQATask::~AliVZEROQATask()
62 fOutputContainer->Clear();
63 delete fOutputContainer;
71 //______________________________________________________________________________
72 void AliVZEROQATask::ConnectInputData(const Option_t*)
74 // Initialises branch container and histograms
76 AliInfo(Form("*** Initialization of %s", GetName())) ;
79 fChain = dynamic_cast<TChain *>(GetInputData(0)) ;
81 AliError(Form("Input 0 for %s not found\n", GetName()));
85 // One should first check if the branch address was taken by some other task
86 char ** address = (char **)GetBranchAddress(0, "ESD");
88 fESD = (AliESD*)(*address);
91 SetBranchAddress(0, "ESD", &fESD);
95 //________________________________________________________________________
96 void AliVZEROQATask::CreateOutputObjects()
102 fhVZERONbPMA = new TH1I("Nb of fired PMs in V0A", "VZERONbPMA" ,100 ,0 ,99);
103 fhVZERONbPMC = new TH1I("Nb of fired PMs in V0C", "VZERONbPMC" ,100 ,0 ,99);
104 fhVZEROMultA = new TH1I("Multiplicity in V0A", "VZEROMultA" ,50 ,0 ,49);
105 fhVZEROMultC = new TH1I("Multiplicity in V0C", "VZEROMultC" ,50 ,0 ,49);
107 // Creates output container
109 fOutputContainer = new TObjArray(4);
110 fOutputContainer->SetName(GetName()) ;
111 fOutputContainer->AddAt(fhVZERONbPMA, 0);
112 fOutputContainer->AddAt(fhVZERONbPMC, 1);
113 fOutputContainer->AddAt(fhVZEROMultA, 2);
114 fOutputContainer->AddAt(fhVZEROMultC, 3);
118 //______________________________________________________________________________
119 void AliVZEROQATask::Exec(Option_t *)
121 // Processing of one event
122 Long64_t entry = fChain->GetReadEntry() ;
125 AliError("fESD is not connected to the input!") ;
129 if ( !((entry-1)%100) )
130 AliInfo(Form("%s ----> Processing event # %lld", (dynamic_cast<TChain *>(fChain))->GetFile()->GetName(), entry)) ;
132 AliESDVZERO *esdVZERO=fESD->GetVZEROData();
135 fhVZERONbPMA->Fill(esdVZERO->GetNbPMV0A());
136 fhVZERONbPMC->Fill(esdVZERO->GetNbPMV0C());
137 fhVZEROMultA->Fill(esdVZERO->GetMTotV0A());
138 fhVZEROMultC->Fill(esdVZERO->GetMTotV0C());
140 PostData(0, fOutputContainer);
144 //______________________________________________________________________________
145 void AliVZEROQATask::Terminate(Option_t *)
147 // Processed when the event loop is ended
149 fOutputContainer = (TObjArray*)GetOutputData(0);
150 fhVZERONbPMA = (TH1I*)fOutputContainer->At(0);
151 fhVZERONbPMC = (TH1I*)fOutputContainer->At(1);
152 fhVZEROMultA = (TH1I*)fOutputContainer->At(2);
153 fhVZEROMultC = (TH1I*)fOutputContainer->At(3);
155 Bool_t problem = kFALSE ;
156 AliInfo(Form(" *** %s Report:", GetName())) ;
157 printf(" V0A Multiplicity Mean : %5.3f , RMS : %5.3f \n",fhVZEROMultA->GetMean(),fhVZEROMultA->GetRMS());
158 printf(" V0C Multiplicity Mean : %5.3f , RMS : %5.3f \n",fhVZEROMultC->GetMean(),fhVZEROMultC->GetRMS());
160 TCanvas * c1 = new TCanvas("Number of PMs fired in V0A", "Number of PMs fired in V0A", 1);
161 fhVZERONbPMA->SetAxisRange(0, 99);
162 fhVZERONbPMA->SetLineColor(2);
163 fhVZERONbPMA->Draw("SAME");
166 TCanvas * c2 = new TCanvas("Number of PMs fired in V0C", "Number of PMs fired in V0C", 1);
167 fhVZERONbPMC->SetAxisRange(0,99);
168 fhVZERONbPMC->SetLineColor(2);
169 fhVZERONbPMC->Draw("SAME");
172 TCanvas * c3 = new TCanvas("Multiplicity in V0A", "Multiplicity in V0A", 1);
173 fhVZEROMultA->SetAxisRange(0, 49);
174 fhVZEROMultA->SetLineColor(2);
175 fhVZEROMultA->Draw("SAME");
178 TCanvas * c4 = new TCanvas("Multiplicity in V0C", "Multiplicity in V0C", 1);
179 fhVZEROMultC->SetAxisRange(0,49);
180 fhVZEROMultC->SetLineColor(2);
181 fhVZEROMultC->Draw("SAME");
184 c1->Print("V0AMultiplicity.eps");
185 c2->Print("V0CMultiplicity.eps");
186 c3->Print("NumberV0APMs.eps");
187 c4->Print("NumberV0CPMs.eps");
190 sprintf(line, ".!tar -zcf %s.tar.gz *.eps", GetName()) ;
191 gROOT->ProcessLine(line);
192 sprintf(line, ".!rm -fR *.eps");
193 gROOT->ProcessLine(line);
195 AliInfo(Form("!!! All the eps files are in %s.tar.gz !!! ", GetName())) ;
199 report="Problems found, please check!!!";
203 AliInfo(Form("*** %s Summary Report: %s\n",GetName(), report)) ;