ROOT logo
/**************************************************************************
 * Copyright(c) 1998-2007, 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.                  *
 **************************************************************************/
/*
 * A small task dumping all EMCal trigger related information into a TTree
 *      Author: Markus Fasel
 */
#include <iostream>
#include <string>
#include <TMath.h>
#include <TTree.h>

#include "AliInputEventHandler.h"
#include "AliVTrack.h"
#include "AliVCluster.h"

#include "AliAnalysisTaskEmcalTriggerTreeWriter.h"

AliAnalysisTaskEmcalTriggerTreeWriter::AliAnalysisTaskEmcalTriggerTreeWriter():
	AliAnalysisTaskSE(),
	fOutputTree(NULL),
	fOutputInfo()
{
	/*
	 * Dummy constructor
	 */
}

AliAnalysisTaskEmcalTriggerTreeWriter::AliAnalysisTaskEmcalTriggerTreeWriter(const char *name):
	AliAnalysisTaskSE(name),
	fOutputTree(NULL),
	fOutputInfo()
{
	/*
	 * Constructor
	 */
	DefineOutput(1,TTree::Class());
}

AliAnalysisTaskEmcalTriggerTreeWriter::~AliAnalysisTaskEmcalTriggerTreeWriter() {
	/*
	 * Destructor
	 */
	if(fOutputTree) delete fOutputTree;
}

void AliAnalysisTaskEmcalTriggerTreeWriter::UserCreateOutputObjects() {
	/*
	 * Create output tree, with two branches, one for the tracks matched and one for the clusters
	 */

	// Build the tree
	OpenFile(1);
	fOutputTree = new TTree("EMCalTree", "A tree with emcal information");
	fOutputTree->Branch("run", &fOutputInfo.fRun, "pdg/I");
	fOutputTree->Branch("col", &fOutputInfo.fCol, "col/I");
	fOutputTree->Branch("row", &fOutputInfo.fRow, "isUnique/i");
	fOutputTree->Branch("NL0Times", &fOutputInfo.fNL0Times, "NL0Times/I");
	fOutputTree->Branch("Level0Times", fOutputInfo.fLevel0Times, "Level0Times[10]/I");
	fOutputTree->Branch("ADC", &fOutputInfo.fADC, "ADC/I");
	fOutputTree->Branch("Amplitude", &fOutputInfo.fAmplitude, "Amplitude/F");
	fOutputTree->Branch("Time", &fOutputInfo.fTime, "Time/F");
	fOutputTree->Branch("TriggerBits", &fOutputInfo.fTriggerBits, "TriggerBits/I");
	fOutputTree->Branch("L1Threshold", &fOutputInfo.fL1Threshold, "L1Threshold/I");
	fOutputTree->Branch("L1V0", &fOutputInfo.fL1V0, "L1V0/I");
	PostData(1, fOutputTree);
}

void AliAnalysisTaskEmcalTriggerTreeWriter::UserExec(Option_t *) {
	/*
	 * Build the tree
	 */

	AliVCaloTrigger *emctrigger = fInputEvent->GetCaloTrigger(strcmp(fInputHandler->GetDataType(), "ESD" ) == 0 ? "EMCALTrigger" : "EMCALTrigger");
	emctrigger->Reset();
	while(emctrigger->Next()){
		fOutputInfo.Reset();
		fOutputInfo.fRun = fInputEvent->GetRunNumber();
		emctrigger->GetPosition(fOutputInfo.fCol, fOutputInfo.fRow);
		emctrigger->GetNL0Times(fOutputInfo.fNL0Times);
		if(fOutputInfo.fNL0Times > 0 && fOutputInfo.fNL0Times < 10)
			emctrigger->GetL0Times(fOutputInfo.fLevel0Times);
		emctrigger->GetL1TimeSum(fOutputInfo.fADC);
		emctrigger->GetAmplitude(fOutputInfo.fAmplitude);
		emctrigger->GetL1V0(fOutputInfo.fL1V0);
		emctrigger->GetTriggerBits(fOutputInfo.fTriggerBits);
		emctrigger->GetTime(fOutputInfo.fTime);
		emctrigger->GetL1Threshold(fOutputInfo.fL1Threshold);
		fOutputTree->Fill();
	}

	PostData(1, fOutputTree);
}

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