#include "TFile.h"
#include "TTree.h"
#include "TChain.h"
#include "TH1F.h"
#include "TH2F.h"
#include "TProfile.h"
#include "TCanvas.h"
#include "AliAnalysisManager.h"
#include "AliESDEvent.h"
#include "AliAODEvent.h"
#include "AliMCEvent.h"
#include "AliESDInputHandler.h"
#include "AliAODHandler.h"
#include "AliMCEventHandler.h"
#include "AliLog.h"
#include "AliESDTrdTrack.h"
#include "AliTRDtrackletMCM.h"
#include "AliTRDtrackletWord.h"
#include "AliVParticle.h"
#include "AliMCParticle.h"
#include "AliTRDonlineTrackletFilter.h"
ClassImp(AliTRDonlineTrackletFilter)
AliTRDonlineTrackletFilter::AliTRDonlineTrackletFilter(const char *name) :
AliAnalysisTask(name, ""),
fESD(0x0),
fInputHandler(0x0),
fInputEvent(0x0),
fOutputAOD(0x0),
fMCEvent(0x0),
fTrackletsRaw(new TClonesArray("AliTRDtrackletWord")),
fTrackletsSim(new TClonesArray("AliTRDtrackletMCM")),
fTrackletTree(0x0),
fGeo(new AliTRDgeometry),
fNevent(0),
fPath(""),
fTrackletFile(0x0),
fNEventsPerFile(0),
fEvent(0),
fFileNumber(0),
fTrackletTreeSim(0x0),
fTrackletTreeRaw(0x0)
{
DefineInput(0, TChain::Class());
DefineOutput(0, TTree::Class());
DefineOutput(1, TTree::Class());
}
AliTRDonlineTrackletFilter::~AliTRDonlineTrackletFilter()
{
delete fTrackletsRaw;
delete fTrackletsSim;
delete fGeo;
}
void AliTRDonlineTrackletFilter::ConnectInputData(const Option_t *)
{
fInputHandler = (AliInputEventHandler*) AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler();
if (fInputHandler)
fInputEvent = fInputHandler->GetEvent();
AliMCEventHandler *mcH = (AliMCEventHandler*) AliAnalysisManager::GetAnalysisManager()->GetMCtruthEventHandler();
if (mcH)
fMCEvent = mcH->MCEvent();
}
void AliTRDonlineTrackletFilter::CreateOutputObjects()
{
OpenFile(1);
fTrackletTree = new TTree("TRDtrackletfilter", "on-line tracklets");
fTrackletTree->Branch("tracklets_sim", fTrackletsSim);
fTrackletTree->Branch("tracklets_raw", fTrackletsRaw);
PostData(1, fTrackletTree);
}
Bool_t AliTRDonlineTrackletFilter::Notify()
{
TString filename(AliAnalysisManager::GetAnalysisManager()->GetTree()->GetCurrentFile()->GetName());
AliDebug(1, Form("Now reading from %s", filename.Data()));
if (filename.Contains("AliAOD.root"))
filename.ReplaceAll("AliAOD.root", "");
else if (filename.Contains("NewAliESDs.root"))
filename.ReplaceAll("NewAliESDs.root", "");
else if (filename.Contains("AliESDs.root"))
filename.ReplaceAll("AliESDs.root", "");
else if (filename.Contains("galice.root"))
filename.ReplaceAll("galice.root", "");
else if (filename.BeginsWith("root:"))
filename.Append("?ZIP=");
fPath = filename;
fTrackletFile = TFile::Open(Form("%sTRD.Tracklets.root", fPath.Data()));
if (!fTrackletFile) {
AliError(Form("No tracklet file in %s", fPath.Data()));
return kFALSE;
}
fNEventsPerFile = fTrackletFile->GetNkeys() - fTrackletFile->GetNProcessIDs();
fEvent = -1;
fFileNumber = 0;
return kTRUE;
}
void AliTRDonlineTrackletFilter::Exec(const Option_t * )
{
if (!LoadEvent())
return;
if (fTrackletTreeSim) {
AliTRDtrackletMCM *trkl = 0x0;
TBranch *br = fTrackletTreeSim->GetBranch("mcmtrklbranch");
br->SetAddress(&trkl);
for (Int_t iTracklet = 0; iTracklet < br->GetEntries(); iTracklet++) {
br->GetEntry(iTracklet);
new ((*fTrackletsSim)[fTrackletsSim->GetEntriesFast()]) AliTRDtrackletMCM(*trkl);
}
}
if (fTrackletTreeRaw) {
Int_t hc;
TClonesArray *trklArray = 0x0;
fTrackletTreeRaw->SetBranchAddress("hc", &hc);
fTrackletTreeRaw->SetBranchAddress("trkl", &trklArray);
for (Int_t iHCidx = 0; iHCidx < fTrackletTreeRaw->GetEntries(); iHCidx++) {
fTrackletTreeRaw->GetEntry(iHCidx);
if (trklArray) {
for (Int_t iTracklet = 0; iTracklet < trklArray->GetEntries(); iTracklet++) {
AliTRDtrackletWord *trklWord = (AliTRDtrackletWord*) ((*trklArray)[iTracklet]);
trklWord->SetDetector(hc/2);
new ((*fTrackletsRaw)[fTrackletsRaw->GetEntriesFast()]) AliTRDtrackletWord(*trklWord);
}
}
}
}
AliDebug(1, Form("%i tracklets", fTrackletsSim->GetEntriesFast()));
fTrackletTree->SetBranchAddress("tracklets_sim", &fTrackletsSim);
fTrackletTree->SetBranchAddress("tracklets_raw", &fTrackletsRaw);
fTrackletTree->Fill();
PostData(1, fTrackletTree);
}
void AliTRDonlineTrackletFilter::LocalInit()
{
}
void AliTRDonlineTrackletFilter::Terminate(const Option_t * )
{
}
Bool_t AliTRDonlineTrackletFilter::LoadEvent()
{
fTrackletsSim->Delete();
fTrackletsRaw->Delete();
if (!fInputEvent) {
AliError("No event found!");
return kFALSE;
}
fESD = dynamic_cast<AliESDEvent*> (fInputEvent);
fEvent++;
Int_t inew = fNEventsPerFile > 0 ? fEvent / fNEventsPerFile : 0;
if ( inew != fFileNumber) {
fFileNumber++;
delete fTrackletFile;
fTrackletFile = TFile::Open(Form("%sTRD.Tracklets%d.root", fPath.Data(), fFileNumber));
if (!fTrackletFile) {
AliError("No tracklet file");
return kFALSE;
}
}
if (!fTrackletFile) {
AliError("no tracklet file");
return kFALSE;
}
char treename[30];
snprintf(treename, 30, "Event%d/tracklets", fEvent);
fTrackletTreeSim = (TTree*) fTrackletFile->Get(treename);
char treenameRaw[30];
snprintf(treenameRaw, 30, "Event%d/tracklets-raw", fEvent);
fTrackletTreeRaw = (TTree*) fTrackletFile->Get(treenameRaw);
return kTRUE;
}
AliTRDonlineTrackletFilter.cxx:1 AliTRDonlineTrackletFilter.cxx:2 AliTRDonlineTrackletFilter.cxx:3 AliTRDonlineTrackletFilter.cxx:4 AliTRDonlineTrackletFilter.cxx:5 AliTRDonlineTrackletFilter.cxx:6 AliTRDonlineTrackletFilter.cxx:7 AliTRDonlineTrackletFilter.cxx:8 AliTRDonlineTrackletFilter.cxx:9 AliTRDonlineTrackletFilter.cxx:10 AliTRDonlineTrackletFilter.cxx:11 AliTRDonlineTrackletFilter.cxx:12 AliTRDonlineTrackletFilter.cxx:13 AliTRDonlineTrackletFilter.cxx:14 AliTRDonlineTrackletFilter.cxx:15 AliTRDonlineTrackletFilter.cxx:16 AliTRDonlineTrackletFilter.cxx:17 AliTRDonlineTrackletFilter.cxx:18 AliTRDonlineTrackletFilter.cxx:19 AliTRDonlineTrackletFilter.cxx:20 AliTRDonlineTrackletFilter.cxx:21 AliTRDonlineTrackletFilter.cxx:22 AliTRDonlineTrackletFilter.cxx:23 AliTRDonlineTrackletFilter.cxx:24 AliTRDonlineTrackletFilter.cxx:25 AliTRDonlineTrackletFilter.cxx:26 AliTRDonlineTrackletFilter.cxx:27 AliTRDonlineTrackletFilter.cxx:28 AliTRDonlineTrackletFilter.cxx:29 AliTRDonlineTrackletFilter.cxx:30 AliTRDonlineTrackletFilter.cxx:31 AliTRDonlineTrackletFilter.cxx:32 AliTRDonlineTrackletFilter.cxx:33 AliTRDonlineTrackletFilter.cxx:34 AliTRDonlineTrackletFilter.cxx:35 AliTRDonlineTrackletFilter.cxx:36 AliTRDonlineTrackletFilter.cxx:37 AliTRDonlineTrackletFilter.cxx:38 AliTRDonlineTrackletFilter.cxx:39 AliTRDonlineTrackletFilter.cxx:40 AliTRDonlineTrackletFilter.cxx:41 AliTRDonlineTrackletFilter.cxx:42 AliTRDonlineTrackletFilter.cxx:43 AliTRDonlineTrackletFilter.cxx:44 AliTRDonlineTrackletFilter.cxx:45 AliTRDonlineTrackletFilter.cxx:46 AliTRDonlineTrackletFilter.cxx:47 AliTRDonlineTrackletFilter.cxx:48 AliTRDonlineTrackletFilter.cxx:49 AliTRDonlineTrackletFilter.cxx:50 AliTRDonlineTrackletFilter.cxx:51 AliTRDonlineTrackletFilter.cxx:52 AliTRDonlineTrackletFilter.cxx:53 AliTRDonlineTrackletFilter.cxx:54 AliTRDonlineTrackletFilter.cxx:55 AliTRDonlineTrackletFilter.cxx:56 AliTRDonlineTrackletFilter.cxx:57 AliTRDonlineTrackletFilter.cxx:58 AliTRDonlineTrackletFilter.cxx:59 AliTRDonlineTrackletFilter.cxx:60 AliTRDonlineTrackletFilter.cxx:61 AliTRDonlineTrackletFilter.cxx:62 AliTRDonlineTrackletFilter.cxx:63 AliTRDonlineTrackletFilter.cxx:64 AliTRDonlineTrackletFilter.cxx:65 AliTRDonlineTrackletFilter.cxx:66 AliTRDonlineTrackletFilter.cxx:67 AliTRDonlineTrackletFilter.cxx:68 AliTRDonlineTrackletFilter.cxx:69 AliTRDonlineTrackletFilter.cxx:70 AliTRDonlineTrackletFilter.cxx:71 AliTRDonlineTrackletFilter.cxx:72 AliTRDonlineTrackletFilter.cxx:73 AliTRDonlineTrackletFilter.cxx:74 AliTRDonlineTrackletFilter.cxx:75 AliTRDonlineTrackletFilter.cxx:76 AliTRDonlineTrackletFilter.cxx:77 AliTRDonlineTrackletFilter.cxx:78 AliTRDonlineTrackletFilter.cxx:79 AliTRDonlineTrackletFilter.cxx:80 AliTRDonlineTrackletFilter.cxx:81 AliTRDonlineTrackletFilter.cxx:82 AliTRDonlineTrackletFilter.cxx:83 AliTRDonlineTrackletFilter.cxx:84 AliTRDonlineTrackletFilter.cxx:85 AliTRDonlineTrackletFilter.cxx:86 AliTRDonlineTrackletFilter.cxx:87 AliTRDonlineTrackletFilter.cxx:88 AliTRDonlineTrackletFilter.cxx:89 AliTRDonlineTrackletFilter.cxx:90 AliTRDonlineTrackletFilter.cxx:91 AliTRDonlineTrackletFilter.cxx:92 AliTRDonlineTrackletFilter.cxx:93 AliTRDonlineTrackletFilter.cxx:94 AliTRDonlineTrackletFilter.cxx:95 AliTRDonlineTrackletFilter.cxx:96 AliTRDonlineTrackletFilter.cxx:97 AliTRDonlineTrackletFilter.cxx:98 AliTRDonlineTrackletFilter.cxx:99 AliTRDonlineTrackletFilter.cxx:100 AliTRDonlineTrackletFilter.cxx:101 AliTRDonlineTrackletFilter.cxx:102 AliTRDonlineTrackletFilter.cxx:103 AliTRDonlineTrackletFilter.cxx:104 AliTRDonlineTrackletFilter.cxx:105 AliTRDonlineTrackletFilter.cxx:106 AliTRDonlineTrackletFilter.cxx:107 AliTRDonlineTrackletFilter.cxx:108 AliTRDonlineTrackletFilter.cxx:109 AliTRDonlineTrackletFilter.cxx:110 AliTRDonlineTrackletFilter.cxx:111 AliTRDonlineTrackletFilter.cxx:112 AliTRDonlineTrackletFilter.cxx:113 AliTRDonlineTrackletFilter.cxx:114 AliTRDonlineTrackletFilter.cxx:115 AliTRDonlineTrackletFilter.cxx:116 AliTRDonlineTrackletFilter.cxx:117 AliTRDonlineTrackletFilter.cxx:118 AliTRDonlineTrackletFilter.cxx:119 AliTRDonlineTrackletFilter.cxx:120 AliTRDonlineTrackletFilter.cxx:121 AliTRDonlineTrackletFilter.cxx:122 AliTRDonlineTrackletFilter.cxx:123 AliTRDonlineTrackletFilter.cxx:124 AliTRDonlineTrackletFilter.cxx:125 AliTRDonlineTrackletFilter.cxx:126 AliTRDonlineTrackletFilter.cxx:127 AliTRDonlineTrackletFilter.cxx:128 AliTRDonlineTrackletFilter.cxx:129 AliTRDonlineTrackletFilter.cxx:130 AliTRDonlineTrackletFilter.cxx:131 AliTRDonlineTrackletFilter.cxx:132 AliTRDonlineTrackletFilter.cxx:133 AliTRDonlineTrackletFilter.cxx:134 AliTRDonlineTrackletFilter.cxx:135 AliTRDonlineTrackletFilter.cxx:136 AliTRDonlineTrackletFilter.cxx:137 AliTRDonlineTrackletFilter.cxx:138 AliTRDonlineTrackletFilter.cxx:139 AliTRDonlineTrackletFilter.cxx:140 AliTRDonlineTrackletFilter.cxx:141 AliTRDonlineTrackletFilter.cxx:142 AliTRDonlineTrackletFilter.cxx:143 AliTRDonlineTrackletFilter.cxx:144 AliTRDonlineTrackletFilter.cxx:145 AliTRDonlineTrackletFilter.cxx:146 AliTRDonlineTrackletFilter.cxx:147 AliTRDonlineTrackletFilter.cxx:148 AliTRDonlineTrackletFilter.cxx:149 AliTRDonlineTrackletFilter.cxx:150 AliTRDonlineTrackletFilter.cxx:151 AliTRDonlineTrackletFilter.cxx:152 AliTRDonlineTrackletFilter.cxx:153 AliTRDonlineTrackletFilter.cxx:154 AliTRDonlineTrackletFilter.cxx:155 AliTRDonlineTrackletFilter.cxx:156 AliTRDonlineTrackletFilter.cxx:157 AliTRDonlineTrackletFilter.cxx:158 AliTRDonlineTrackletFilter.cxx:159 AliTRDonlineTrackletFilter.cxx:160 AliTRDonlineTrackletFilter.cxx:161 AliTRDonlineTrackletFilter.cxx:162 AliTRDonlineTrackletFilter.cxx:163 AliTRDonlineTrackletFilter.cxx:164 AliTRDonlineTrackletFilter.cxx:165 AliTRDonlineTrackletFilter.cxx:166 AliTRDonlineTrackletFilter.cxx:167 AliTRDonlineTrackletFilter.cxx:168 AliTRDonlineTrackletFilter.cxx:169 AliTRDonlineTrackletFilter.cxx:170 AliTRDonlineTrackletFilter.cxx:171 AliTRDonlineTrackletFilter.cxx:172 AliTRDonlineTrackletFilter.cxx:173 AliTRDonlineTrackletFilter.cxx:174 AliTRDonlineTrackletFilter.cxx:175 AliTRDonlineTrackletFilter.cxx:176 AliTRDonlineTrackletFilter.cxx:177 AliTRDonlineTrackletFilter.cxx:178 AliTRDonlineTrackletFilter.cxx:179 AliTRDonlineTrackletFilter.cxx:180 AliTRDonlineTrackletFilter.cxx:181 AliTRDonlineTrackletFilter.cxx:182 AliTRDonlineTrackletFilter.cxx:183 AliTRDonlineTrackletFilter.cxx:184 AliTRDonlineTrackletFilter.cxx:185 AliTRDonlineTrackletFilter.cxx:186 AliTRDonlineTrackletFilter.cxx:187 AliTRDonlineTrackletFilter.cxx:188 AliTRDonlineTrackletFilter.cxx:189 AliTRDonlineTrackletFilter.cxx:190 AliTRDonlineTrackletFilter.cxx:191 AliTRDonlineTrackletFilter.cxx:192 AliTRDonlineTrackletFilter.cxx:193 AliTRDonlineTrackletFilter.cxx:194 AliTRDonlineTrackletFilter.cxx:195 AliTRDonlineTrackletFilter.cxx:196 AliTRDonlineTrackletFilter.cxx:197 AliTRDonlineTrackletFilter.cxx:198 AliTRDonlineTrackletFilter.cxx:199 AliTRDonlineTrackletFilter.cxx:200 AliTRDonlineTrackletFilter.cxx:201 AliTRDonlineTrackletFilter.cxx:202 AliTRDonlineTrackletFilter.cxx:203 AliTRDonlineTrackletFilter.cxx:204 AliTRDonlineTrackletFilter.cxx:205 AliTRDonlineTrackletFilter.cxx:206 AliTRDonlineTrackletFilter.cxx:207 AliTRDonlineTrackletFilter.cxx:208 AliTRDonlineTrackletFilter.cxx:209 AliTRDonlineTrackletFilter.cxx:210 AliTRDonlineTrackletFilter.cxx:211 AliTRDonlineTrackletFilter.cxx:212 AliTRDonlineTrackletFilter.cxx:213 AliTRDonlineTrackletFilter.cxx:214 AliTRDonlineTrackletFilter.cxx:215 AliTRDonlineTrackletFilter.cxx:216 AliTRDonlineTrackletFilter.cxx:217 AliTRDonlineTrackletFilter.cxx:218 AliTRDonlineTrackletFilter.cxx:219 AliTRDonlineTrackletFilter.cxx:220 AliTRDonlineTrackletFilter.cxx:221 AliTRDonlineTrackletFilter.cxx:222 AliTRDonlineTrackletFilter.cxx:223 AliTRDonlineTrackletFilter.cxx:224 AliTRDonlineTrackletFilter.cxx:225 AliTRDonlineTrackletFilter.cxx:226 AliTRDonlineTrackletFilter.cxx:227 AliTRDonlineTrackletFilter.cxx:228 AliTRDonlineTrackletFilter.cxx:229 AliTRDonlineTrackletFilter.cxx:230 AliTRDonlineTrackletFilter.cxx:231 AliTRDonlineTrackletFilter.cxx:232 AliTRDonlineTrackletFilter.cxx:233 AliTRDonlineTrackletFilter.cxx:234 AliTRDonlineTrackletFilter.cxx:235 AliTRDonlineTrackletFilter.cxx:236 AliTRDonlineTrackletFilter.cxx:237 AliTRDonlineTrackletFilter.cxx:238 AliTRDonlineTrackletFilter.cxx:239