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 **************************************************************************/
19 #include "AliROCRawAnalysisSelector.h"
23 #include <AliRawVEvent.h>
24 #include <AliRawReaderRoot.h>
25 #include <AliRawEventHeaderBase.h>
26 #include <AliTPCRawStream.h>
27 #include <AliTPCParamSR.h>
32 #include <TTimeStamp.h>
35 #include <TPC/AliTPCRawHistograms.h>
38 ClassImp(AliROCRawAnalysisSelector)
40 AliROCRawAnalysisSelector::AliROCRawAnalysisSelector() :
47 // Constructor. Initialization of pointers
50 for (Int_t i=0; i<kTPCSectors; i++)
53 fParam = new AliTPCParamSR;
56 AliROCRawAnalysisSelector::~AliROCRawAnalysisSelector()
63 void AliROCRawAnalysisSelector::SlaveBegin(TTree* tree)
71 void AliROCRawAnalysisSelector::Init(TTree* tree)
73 // The Init() function is called when the selector needs to initialize
74 // a new tree or chain. Typically here the branch addresses of the tree
75 // will be set. It is normaly not necessary to make changes to the
76 // generated code, but the routine can be extended by the user if needed.
77 // Init() will be called many times when running with PROOF.
84 AliDebug(AliLog::kInfo, "INFO: Tree found");
86 tree->SetBranchAddress("rawevent", &fRawEvent);
90 Bool_t AliROCRawAnalysisSelector::Process(Long64_t entry)
96 AliDebug(AliLog::kInfo, Form("Processing event %lld", entry));
98 fTree->GetTree()->GetEntry(entry);
102 AliDebug(AliLog::kError, "fRawEvent empty");
106 AliRawReaderRoot* rawReader = new AliRawReaderRoot(fRawEvent);
108 const AliRawEventHeaderBase* eventHeader = dynamic_cast<const AliRawEventHeaderBase*> (rawReader->GetEventHeader());
111 eventHeader->Print();
113 UInt_t timeStamp = eventHeader->Get("Timestamp");
114 UInt_t eventType = eventHeader->Get("Type");
116 AliDebug(AliLog::kInfo, Form("Time stamp: %s, event type %d", TTimeStamp(timeStamp).AsString(), eventType));
119 AliTPCRawStream* tpcRawStream = new AliTPCRawStream(rawReader);
121 const Int_t kNIS = fParam->GetNInnerSector();
122 const Int_t kNOS = fParam->GetNOuterSector();
123 const Int_t kNS = kNIS + kNOS;
125 for (Int_t sector = 0; sector < kNS; sector++)
127 AliDebug(AliLog::kInfo, Form("*** Looking at sector %d ***", sector));
130 Int_t nDDLs = 0, indexDDL = 0;
134 nRows = fParam->GetNRowLow();
136 indexDDL = sector * 2;
140 nRows = fParam->GetNRowUp();
142 indexDDL = (sector-kNIS) * 4 + kNIS * 2;
145 // Loas the raw data for corresponding DDLs
147 rawReader->Select("TPC",indexDDL,indexDDL+nDDLs-1);
149 AliDebug(AliLog::kDebug, Form("Selected DDLs %d ... %d", indexDDL, indexDDL+nDDLs-1));
153 while (tpcRawStream->Next())
155 if (tpcRawStream->GetSector() != sector)
157 AliDebug(AliLog::kError, Form("Sector index mismatch ! Expected (%d), but got (%d) !",sector,tpcRawStream->GetSector()));
161 if ((count++ % 100000) == 0)
162 AliDebug(AliLog::kDebug, Form("Found %d. digit in sector %d: row %d, pad %d, time %d, signal %d", count,
163 tpcRawStream->GetSector(), tpcRawStream->GetRow(), tpcRawStream->GetPad(), tpcRawStream->GetTime(), tpcRawStream->GetSignal()));
165 if (!fHistograms[sector])
167 // not sure if this is still needed, should prevent creation of the histogram in the opened root file
169 fHistograms[sector] = new AliTPCRawHistograms(sector);
172 fHistograms[sector]->FillDigit(tpcRawStream);
182 void AliROCRawAnalysisSelector::SlaveTerminate()
185 for (Int_t i=0; i<kTPCSectors; i++)
187 fOutput->Add(fHistograms[i]);
190 void AliROCRawAnalysisSelector::Terminate()
192 AliDebug(AliLog::kInfo, "Terminate....");
194 // TODO read from output list for PROOF
196 TFile* file = TFile::Open("rocRaw.root", "RECREATE");
198 for (Int_t i=0; i<kTPCSectors; i++)
200 fHistograms[i]->SaveHistograms();
204 for (Int_t i=0; i<kTPCSectors; i++)
206 fHistograms[i]->DrawHistograms();