ROOT logo
#ifndef ALINORMALIZATIONCOUNTER_H
#define ALINORMALIZATIONCOUNTER_H

/**************************************************************************
 * Copyright(c) 1998-2008, ALICE Experiment at CERN, All rights reserved. *
 *                                                                        *
 * Author: The ALICE Off-line Project.                                    *
 * Contributors are mentioned in the code where appropriate.              *
 *                                                                        *
 * Permission to use, copy, modify and distribute this software and its   *
 * documentation strictly for non-commercial purposes is hereby granted   *
 * without fee, provided that the above copyright notice appears in all   *
 * copies and that both the copyright notice and this permission notice   *
 * appear in the supporting documentation. The authors make no claims     *
 * about the suitability of this software for any purpose. It is          *
 * provided "as is" without express or implied warranty.                  *
 **************************************************************************/

/* $Id$ */ 

//*************************************************************************
// Class AliNormalizationCounter
// Class to store the informations relevant for the normalization in the 
// barrel for each run
// Authors: G. Ortona, ortona@to.infn.it
// D. Caffarri, davide.caffarri@pd.to.infn.it
// with many thanks to P. Pillot
/////////////////////////////////////////////////////////////

#include <TROOT.h>
#include <TSystem.h>
#include <TNtuple.h>
#include <TH1F.h>
#include <TH2F.h>
#include <TH1D.h>
#include <AliESDEvent.h>
#include <AliESDtrack.h>
#include <AliAODTrack.h>
#include <AliAODEvent.h>
#include <AliVParticle.h>
#include "AliAnalysisTaskSE.h"
#include "AliCounterCollection.h"
#include "AliAnalysisDataSlot.h"
#include "AliAnalysisDataContainer.h"
#include "AliRDHFCuts.h"
//#include "AliAnalysisVertexingHF.h"

class AliNormalizationCounter : public TNamed
{
 public:

  AliNormalizationCounter();
  AliNormalizationCounter(const char *name);
  virtual ~AliNormalizationCounter();
  Long64_t Merge(TCollection* list);

  AliCounterCollection* GetCounter(){return &fCounters;}
  void Init();
  void Add(const AliNormalizationCounter*);
  void SetESD(Bool_t flag){fESD=flag;}
  void SetStudyMultiplicity(Bool_t flag, Float_t etaRange){ fMultiplicity=flag; fMultiplicityEtaRange=etaRange; }
  void StoreEvent(AliVEvent*,AliRDHFCuts *,Bool_t mc=kFALSE, Int_t multiplicity=-9999);
  void StoreCandidates(AliVEvent*, Int_t nCand=0,Bool_t flagFilter=kTRUE);
  TH1D* DrawAgainstRuns(TString candle="candid(filter)",Bool_t drawHist=kTRUE);
  TH1D* DrawRatio(TString candle1="candid(filter)",TString candle2="triggered");
  void PrintRubrics();
  Double_t GetSum(TString candle="triggered");
  TH2F* GetHist(Bool_t filtercuts=kTRUE,Bool_t spdtracklets=kTRUE,Bool_t drawHist=kFALSE);
  Double_t GetNEventsForNorm();
  Double_t GetNEventsForNorm(Int_t runnumber);
  Bool_t GetStudyMultiplicity(){ return fMultiplicity; }
  Float_t GetStudyMultplicityEtaRange() { return fMultiplicityEtaRange; }
  Double_t GetNEventsForNorm(Int_t minmultiplicity, Int_t maxmultiplicity);
  TH1D* DrawNEventsForNorm(Bool_t drawRatio=kFALSE);

 private:
  AliNormalizationCounter(const AliNormalizationCounter &source);
  AliNormalizationCounter& operator=(const AliNormalizationCounter& source);
  Int_t Multiplicity(AliVEvent* event);
  AliCounterCollection fCounters; //internal counter
  Bool_t fESD; //flag for ESD vs AOD
  Bool_t fMultiplicity; //flag for multiplicity
  Float_t fMultiplicityEtaRange;
  TH2F *fHistTrackFilterEvMult; //hist to store no of filter candidates vs no of tracks in the event 
  TH2F *fHistTrackAnaEvMult;//hist to store no of analysis candidates vs no of tracks in the event 
  TH2F *fHistTrackFilterSpdMult; //hist to store no of filter candidates vs  SPD multiplicity 
  TH2F *fHistTrackAnaSpdMult;//hist to store no of analysis candidates vs SPD multiplicity 

  ClassDef(AliNormalizationCounter,6);

};
#endif
 AliNormalizationCounter.h:1
 AliNormalizationCounter.h:2
 AliNormalizationCounter.h:3
 AliNormalizationCounter.h:4
 AliNormalizationCounter.h:5
 AliNormalizationCounter.h:6
 AliNormalizationCounter.h:7
 AliNormalizationCounter.h:8
 AliNormalizationCounter.h:9
 AliNormalizationCounter.h:10
 AliNormalizationCounter.h:11
 AliNormalizationCounter.h:12
 AliNormalizationCounter.h:13
 AliNormalizationCounter.h:14
 AliNormalizationCounter.h:15
 AliNormalizationCounter.h:16
 AliNormalizationCounter.h:17
 AliNormalizationCounter.h:18
 AliNormalizationCounter.h:19
 AliNormalizationCounter.h:20
 AliNormalizationCounter.h:21
 AliNormalizationCounter.h:22
 AliNormalizationCounter.h:23
 AliNormalizationCounter.h:24
 AliNormalizationCounter.h:25
 AliNormalizationCounter.h:26
 AliNormalizationCounter.h:27
 AliNormalizationCounter.h:28
 AliNormalizationCounter.h:29
 AliNormalizationCounter.h:30
 AliNormalizationCounter.h:31
 AliNormalizationCounter.h:32
 AliNormalizationCounter.h:33
 AliNormalizationCounter.h:34
 AliNormalizationCounter.h:35
 AliNormalizationCounter.h:36
 AliNormalizationCounter.h:37
 AliNormalizationCounter.h:38
 AliNormalizationCounter.h:39
 AliNormalizationCounter.h:40
 AliNormalizationCounter.h:41
 AliNormalizationCounter.h:42
 AliNormalizationCounter.h:43
 AliNormalizationCounter.h:44
 AliNormalizationCounter.h:45
 AliNormalizationCounter.h:46
 AliNormalizationCounter.h:47
 AliNormalizationCounter.h:48
 AliNormalizationCounter.h:49
 AliNormalizationCounter.h:50
 AliNormalizationCounter.h:51
 AliNormalizationCounter.h:52
 AliNormalizationCounter.h:53
 AliNormalizationCounter.h:54
 AliNormalizationCounter.h:55
 AliNormalizationCounter.h:56
 AliNormalizationCounter.h:57
 AliNormalizationCounter.h:58
 AliNormalizationCounter.h:59
 AliNormalizationCounter.h:60
 AliNormalizationCounter.h:61
 AliNormalizationCounter.h:62
 AliNormalizationCounter.h:63
 AliNormalizationCounter.h:64
 AliNormalizationCounter.h:65
 AliNormalizationCounter.h:66
 AliNormalizationCounter.h:67
 AliNormalizationCounter.h:68
 AliNormalizationCounter.h:69
 AliNormalizationCounter.h:70
 AliNormalizationCounter.h:71
 AliNormalizationCounter.h:72
 AliNormalizationCounter.h:73
 AliNormalizationCounter.h:74
 AliNormalizationCounter.h:75
 AliNormalizationCounter.h:76
 AliNormalizationCounter.h:77
 AliNormalizationCounter.h:78
 AliNormalizationCounter.h:79
 AliNormalizationCounter.h:80
 AliNormalizationCounter.h:81
 AliNormalizationCounter.h:82
 AliNormalizationCounter.h:83
 AliNormalizationCounter.h:84
 AliNormalizationCounter.h:85
 AliNormalizationCounter.h:86
 AliNormalizationCounter.h:87
 AliNormalizationCounter.h:88
 AliNormalizationCounter.h:89
 AliNormalizationCounter.h:90
 AliNormalizationCounter.h:91
 AliNormalizationCounter.h:92