1 /**************************************************************************
2 * Copyright(c) 1998-2000, 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 **************************************************************************/
15 //Piotr.Skowronski@cern.ch :
16 //Corrections applied in order to compile (only) with new I/O and folder structure
17 //To be implemented correctly by responsible
19 #include "AliRunLoader.h"
20 #include "AliLoader.h"
24 #include <TObjArray.h>
26 #include <TDirectory.h>
29 #include "AliTOFMerger.h"
31 #include "AliTOFSDigitizer.h"
32 #include "AliTOFhit.h"
33 #include "AliTOFdigit.h"
39 #include <Riostream.h>
40 #include <Riostream.h>
42 ClassImp(AliTOFMerger)
44 //___________________________________________
45 AliTOFMerger::AliTOFMerger()
60 //------------------------------------------------------------------------
61 AliTOFMerger::~AliTOFMerger()
83 //------------------------------------------------------------------------
84 void AliTOFMerger::Init()
87 if (fMerge) fBgrFile = InitBgr();
93 //------------------------------------------------------------------------
94 TFile* AliTOFMerger::InitBgr()
96 // Initialise background event
97 fRunLoader = AliRunLoader::Open(fFnBgr);//open session and mount on default event folder
99 TFile *file = new TFile(fFnBgr);
100 // add error checking later
101 printf("\n AliTOFMerger has opened %s file with background event \n", fFnBgr);
105 //------------------------------------------------------------------------
106 void AliTOFMerger::Digitise()
109 // keep galice.root for signal and name differently the file for
110 // background when add! otherwise the track info for signal will be lost !
113 cout<<"ALiTOFMerger::>SDigits2Digits start...\n";
117 if (fRunLoader == 0x0)
119 Error("Exec","Event is not loaded. Exiting");
123 if (fRunLoader->GetAliRun() == 0x0) {
124 retval = fRunLoader->LoadgAlice();
127 Error("Exec","Error occured while loading gAlice. Exiting");
132 if (fRunLoader->TreeE() == 0x0) {
133 retval = fRunLoader->LoadHeader();
136 Error("Exec","Error occured while loading header. Exiting");
141 if (fRunLoader->TreeK() == 0x0) {
142 retval = fRunLoader->LoadKinematics("READ");
145 Error("Exec","Error occured while loading kinematics. Exiting");
150 AliLoader* gime = fRunLoader->GetLoader("TOFLoader");
153 Error("Exec","Can not find TOF loader in event. Exiting.");
156 gAlice = fRunLoader->GetAliRun();
158 AliTOF* TOF = (AliTOF *) gAlice->GetDetector("TOF") ;
162 TTree *TK = fRunLoader->TreeK();
163 if (TK) f1 = TK->GetCurrentFile();
165 fRunLoader->GetEvent(fEvNrSig);
167 if(gime->TreeD() == 0)
168 gime->MakeTree("D") ;
170 gime->TreeD()->Reset();
172 // read and write digits for signal
173 ReadWriteDigit(fEvNrSig);
179 // gAlice->TreeS()->Reset();
180 gAlice = (AliRun*)fBgrFile->Get("gAlice");
181 ReadWriteDigit(fEvNrBgr);
187 //Make branch for digits
188 TOF->MakeBranch("D");
190 gime->TreeD()->Reset();
191 gime->TreeD()->Fill();
193 fDigits = TOF->Digits();
195 gime->WriteDigits("OVERWRITE");
197 gAlice->ResetDigits();
201 //---------------------------------------------------------------------
203 void AliTOFMerger::ReadWriteDigit(Int_t iEvNum)
206 // Read Sdigits from the current file and write them in the TreeD
208 AliTOFdigit* tofsdigit;
210 AliTOF * tofinfile = (AliTOF *) gAlice->GetDetector("TOF") ;
212 Int_t retval = fRunLoader->GetEvent(iEvNum);
215 Error("ReadWriteDigit","Error while getting event %d",iEvNum);
219 AliLoader* gime = fRunLoader->GetLoader("TOFLoader");
222 Error("Exec","Can not find TOF loader in event. Exiting.");
230 cout<<" TreeS==0 -> return"<<gime->TreeS()<<endl;
235 Int_t tracks[3]; // track info
236 Int_t vol[5]; // location for a digit
237 Float_t digit[2]; // TOF digit variables
239 gAlice->ResetDigits();
240 gime->TreeS()->GetEvent(iEvNum);
241 TClonesArray * TOFdigits = tofinfile->SDigits();
243 ndig=TOFdigits->GetEntries();
245 for (k=0; k<ndig; k++) {
246 tofsdigit= (AliTOFdigit*) TOFdigits->UncheckedAt(k);
248 tracks[0] = tofsdigit->GetTrack(0);
249 tracks[1] = tofsdigit->GetTrack(1);
250 tracks[2] = tofsdigit->GetTrack(2);
252 vol[0] = tofsdigit->GetSector();
253 vol[1] = tofsdigit->GetPlate();
254 vol[2] = tofsdigit->GetStrip();
255 vol[3] = tofsdigit->GetPadx();
256 vol[4] = tofsdigit->GetPadz();
258 digit[0] = tofsdigit->GetTdc();
259 digit[1] = tofsdigit->GetAdc();
261 new ((*fDigits)[fNDigits++]) AliTOFdigit(tracks, vol, digit);
262 } // end loop on sdigits in the current file