ROOT logo
/*************************************************************************
* Copyright(c) 1998-1999, 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$
//
// Task to skim ESD files, basic idea found at PWGGA/EMCALTasks as
// AliEsdSkimTask. This version is modified to produce a exact copy of the ESD
// stream containing only events which are of interest for the central
// diffractive analysis (PWGUD) and a control sample. In order to be able to
// process MC data as well, the usual concept using an output slot is for
// output data is violated and an output file is directly created without
// a corresponding output slot.
//
// Author:
//  Felix Reidt <Felix.Reidt@cern.ch>

#ifndef ALIANALYSISTASKCDSKIMESD_H
#define  ALIANALYSISTASKCDSKIMESD_H

#include "AliAnalysisTaskSE.h"

// $Id$

class TTree;
class TH1;
class TFile;
class TDirectory;

class AliAnalysisTaskCDskimESD : public AliAnalysisTaskSE {
public:
	AliAnalysisTaskCDskimESD(const char *opt, Bool_t reduceGapEvents);
	AliAnalysisTaskCDskimESD();
	virtual ~AliAnalysisTaskCDskimESD();

	void UserExec(Option_t *opt);
	void UserCreateOutputObjects();

	void SetGapCondition(Int_t cond) { fRequestedGapCondition=cond; }
	void SetRefinedGapCondition(Int_t cond) {fRefinedGapCondition=cond; }

protected:
	// variables concerning the reconstructed information in the ESDs
	TTree*      fInputTree;             // input tree
	TTree*      fInputTreeCopy;         // input tree copy
	TTree*      fOutputTree;            // output tree

	// variables needed for the reproduction of the MC information
	Bool_t      fDoMC;                  // do we process MC information?
	TDirectory* fWrkDir;                // directory the analysis task used before
	                                    // it was manipulated to store the
	                                    // kinemactics truth
	TFile*      fKinematicsFile;        // output file containing the skimmed
	                                    // kinematics information
	TFile*      fTrackRefsFile;         // output file containing the skimmed
	                                    // TrackRefs information
	TTree*      fTEinput;               // input tree containing MC eventt headers
	TTree*      fTE;                    // tree containing the MC event headers
	TFile*      fgaliceFile;            // pointer to the galice.root output file

	// variables concerning the gaps used for the selection
	Bool_t      fDoGapCond;             // if true the gap condition for central
	                                    // diffractive analysis are stored
	Int_t       fCurrentGapCondition;   // gap condition
	Int_t       fRequestedGapCondition; // gap condition required for selection
	Double_t    fNoGapFraction;         // fraction of no-gap events to be stored
	Bool_t      fReduceGapEvents;       // do not store all V0 double-gap events
	                                    // necessary due to high double gap rates
	                                    // in MC productions (LHC10d{1,2,4,4a})
	Int_t       fRefinedGapCondition;   // gap condition with more stringent
	                                    // selection applied in case
	                                    // fReduceDgEvents is active
	Double_t    fReducedGapFraction;    // fraction of events stored altough they
	                                    // show only the requested and not the
	                                    // refined gap

	// selection monitoring
	TH1*        fStatsFlow;             // histogram indicating the number of
	                                    // input events
	TTree*      fSkimmingList;          // which events of the intial ones are
	                                    // skimmed?
	TString     fFileName;              // name of the input file
	Int_t       fEventNumberInFile;     // event index in the ESD file
	Int_t       fRunNumber;             // run number of the event
	UInt_t      fEventTime;             // event timestamp

private:
	//void CopygALICE(AliAnalysisManager* am); // copy objects in galice.root
	// not implemented:
	AliAnalysisTaskCDskimESD(const AliAnalysisTaskCDskimESD&);
	AliAnalysisTaskCDskimESD &operator=(const AliAnalysisTaskCDskimESD&);
	ClassDef(AliAnalysisTaskCDskimESD, 1); // Esd skimming task
};
#endif // ALIANALYSISTASKCDSKIMESD_H
 AliAnalysisTaskCDskimESD.h:1
 AliAnalysisTaskCDskimESD.h:2
 AliAnalysisTaskCDskimESD.h:3
 AliAnalysisTaskCDskimESD.h:4
 AliAnalysisTaskCDskimESD.h:5
 AliAnalysisTaskCDskimESD.h:6
 AliAnalysisTaskCDskimESD.h:7
 AliAnalysisTaskCDskimESD.h:8
 AliAnalysisTaskCDskimESD.h:9
 AliAnalysisTaskCDskimESD.h:10
 AliAnalysisTaskCDskimESD.h:11
 AliAnalysisTaskCDskimESD.h:12
 AliAnalysisTaskCDskimESD.h:13
 AliAnalysisTaskCDskimESD.h:14
 AliAnalysisTaskCDskimESD.h:15
 AliAnalysisTaskCDskimESD.h:16
 AliAnalysisTaskCDskimESD.h:17
 AliAnalysisTaskCDskimESD.h:18
 AliAnalysisTaskCDskimESD.h:19
 AliAnalysisTaskCDskimESD.h:20
 AliAnalysisTaskCDskimESD.h:21
 AliAnalysisTaskCDskimESD.h:22
 AliAnalysisTaskCDskimESD.h:23
 AliAnalysisTaskCDskimESD.h:24
 AliAnalysisTaskCDskimESD.h:25
 AliAnalysisTaskCDskimESD.h:26
 AliAnalysisTaskCDskimESD.h:27
 AliAnalysisTaskCDskimESD.h:28
 AliAnalysisTaskCDskimESD.h:29
 AliAnalysisTaskCDskimESD.h:30
 AliAnalysisTaskCDskimESD.h:31
 AliAnalysisTaskCDskimESD.h:32
 AliAnalysisTaskCDskimESD.h:33
 AliAnalysisTaskCDskimESD.h:34
 AliAnalysisTaskCDskimESD.h:35
 AliAnalysisTaskCDskimESD.h:36
 AliAnalysisTaskCDskimESD.h:37
 AliAnalysisTaskCDskimESD.h:38
 AliAnalysisTaskCDskimESD.h:39
 AliAnalysisTaskCDskimESD.h:40
 AliAnalysisTaskCDskimESD.h:41
 AliAnalysisTaskCDskimESD.h:42
 AliAnalysisTaskCDskimESD.h:43
 AliAnalysisTaskCDskimESD.h:44
 AliAnalysisTaskCDskimESD.h:45
 AliAnalysisTaskCDskimESD.h:46
 AliAnalysisTaskCDskimESD.h:47
 AliAnalysisTaskCDskimESD.h:48
 AliAnalysisTaskCDskimESD.h:49
 AliAnalysisTaskCDskimESD.h:50
 AliAnalysisTaskCDskimESD.h:51
 AliAnalysisTaskCDskimESD.h:52
 AliAnalysisTaskCDskimESD.h:53
 AliAnalysisTaskCDskimESD.h:54
 AliAnalysisTaskCDskimESD.h:55
 AliAnalysisTaskCDskimESD.h:56
 AliAnalysisTaskCDskimESD.h:57
 AliAnalysisTaskCDskimESD.h:58
 AliAnalysisTaskCDskimESD.h:59
 AliAnalysisTaskCDskimESD.h:60
 AliAnalysisTaskCDskimESD.h:61
 AliAnalysisTaskCDskimESD.h:62
 AliAnalysisTaskCDskimESD.h:63
 AliAnalysisTaskCDskimESD.h:64
 AliAnalysisTaskCDskimESD.h:65
 AliAnalysisTaskCDskimESD.h:66
 AliAnalysisTaskCDskimESD.h:67
 AliAnalysisTaskCDskimESD.h:68
 AliAnalysisTaskCDskimESD.h:69
 AliAnalysisTaskCDskimESD.h:70
 AliAnalysisTaskCDskimESD.h:71
 AliAnalysisTaskCDskimESD.h:72
 AliAnalysisTaskCDskimESD.h:73
 AliAnalysisTaskCDskimESD.h:74
 AliAnalysisTaskCDskimESD.h:75
 AliAnalysisTaskCDskimESD.h:76
 AliAnalysisTaskCDskimESD.h:77
 AliAnalysisTaskCDskimESD.h:78
 AliAnalysisTaskCDskimESD.h:79
 AliAnalysisTaskCDskimESD.h:80
 AliAnalysisTaskCDskimESD.h:81
 AliAnalysisTaskCDskimESD.h:82
 AliAnalysisTaskCDskimESD.h:83
 AliAnalysisTaskCDskimESD.h:84
 AliAnalysisTaskCDskimESD.h:85
 AliAnalysisTaskCDskimESD.h:86
 AliAnalysisTaskCDskimESD.h:87
 AliAnalysisTaskCDskimESD.h:88
 AliAnalysisTaskCDskimESD.h:89
 AliAnalysisTaskCDskimESD.h:90
 AliAnalysisTaskCDskimESD.h:91
 AliAnalysisTaskCDskimESD.h:92
 AliAnalysisTaskCDskimESD.h:93
 AliAnalysisTaskCDskimESD.h:94
 AliAnalysisTaskCDskimESD.h:95
 AliAnalysisTaskCDskimESD.h:96
 AliAnalysisTaskCDskimESD.h:97
 AliAnalysisTaskCDskimESD.h:98
 AliAnalysisTaskCDskimESD.h:99
 AliAnalysisTaskCDskimESD.h:100
 AliAnalysisTaskCDskimESD.h:101
 AliAnalysisTaskCDskimESD.h:102
 AliAnalysisTaskCDskimESD.h:103
 AliAnalysisTaskCDskimESD.h:104
 AliAnalysisTaskCDskimESD.h:105