remoe duplicate QA initialisation and do ESD QA for same detectors as RecPoint QA
[u/mrichter/AliRoot.git] / MUON / AliMUONGMSSubprocessor.cxx
CommitLineData
04aa997f 1/**************************************************************************
2 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
3 * *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
6 * *
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
16// $Id$
3d1463c8 17
18//-----------------------------------------------------------------------------
04aa997f 19// Class AliMUONGMSSubprocessor
20// -----------------------------
21// The shuttle subprocessor for GMS data
22// Author: Ivana Hrivnacova, IPN Orsay
23// 16/09/2006
3d1463c8 24//-----------------------------------------------------------------------------
04aa997f 25
26#include "AliMUONGMSSubprocessor.h"
27#include "AliMUONPreprocessor.h"
28
29#include "AliCDBMetaData.h"
04aa997f 30
31#include <TTimeStamp.h>
32#include <TFile.h>
33#include <TClonesArray.h>
968ce98e 34#include <TObjString.h>
04aa997f 35#include <Riostream.h>
36
78649106 37/// \cond CLASSIMP
04aa997f 38ClassImp(AliMUONGMSSubprocessor)
78649106 39/// \endcond
04aa997f 40
923a4baf 41const Int_t AliMUONGMSSubprocessor::fgkSystem = AliPreprocessor::kDCS;
04aa997f 42const TString AliMUONGMSSubprocessor::fgkDataId = "GMS";
43const TString AliMUONGMSSubprocessor::fgkMatrixArrayName = "GMSarray";
44
968ce98e 45//______________________________________________________________________________
04aa997f 46AliMUONGMSSubprocessor::AliMUONGMSSubprocessor(AliMUONPreprocessor* master)
47 : AliMUONVSubprocessor(master, "GMS", "Upload GMS matrices to OCDB"),
789260b4 48 fTransformer(0)
04aa997f 49{
50/// Constructor
04aa997f 51}
52
968ce98e 53//______________________________________________________________________________
04aa997f 54AliMUONGMSSubprocessor::~AliMUONGMSSubprocessor()
55{
56/// Destructor
789260b4 57
58 delete fTransformer;
04aa997f 59}
60
968ce98e 61
62//
63// private methods
64//
65
66
67//______________________________________________________________________________
789260b4 68void AliMUONGMSSubprocessor::Initialize(Int_t /*run*/,
69 UInt_t /*startTime*/, UInt_t /*endTime*/)
70{
71/// Instantiate geometry transformer
72
73 if ( ! fTransformer ) {
74 fTransformer = new AliMUONGeometryTransformer();
75 fTransformer->CreateModules();
76 }
77}
78
79//______________________________________________________________________________
968ce98e 80UInt_t AliMUONGMSSubprocessor::ProcessFile(const TString& fileName)
04aa997f 81{
82/// Convert TGeoHMatrix to AliAlignObjMatrix and fill them into AliTestDataDCS object
83
f6e36ea4 84 Master()->Log(Form("Processing GMS file %s", fileName.Data()));
04aa997f 85
86 // Open root file
968ce98e 87 TFile f(fileName.Data());
88 if ( ! f.IsOpen() ) {
f6e36ea4 89 Master()->Log(Form("Cannot open file %s",fileName.Data()));
d489129d 90 return 1;
968ce98e 91 }
04aa997f 92
93 // Get array with matrices
94 TClonesArray* array = (TClonesArray*)f.Get(fgkMatrixArrayName);
95 if ( ! array ) {
f6e36ea4 96 Master()->Log(Form("TClonesArray not found in file %s",fileName.Data()));
d489129d 97 return 2;
04aa997f 98 }
99
100 // Convert matrices into Alice alignment objects
101 for (Int_t i=0; i<array->GetEntriesFast(); i++ ) {
102 TGeoHMatrix* matrix = (TGeoHMatrix*)array->At(i);
789260b4 103 fTransformer->AddMisAlignModule(matrix->GetUniqueID(), *matrix);
04aa997f 104 }
789260b4 105 TObject* data = const_cast< TClonesArray*>(fTransformer->GetMisAlignmentData());
04aa997f 106
107 //Now we have to store the final CDB file
f6e36ea4 108 Master()->Log("Storing GMS");
04aa997f 109 AliCDBMetaData metaData;
110 metaData.SetBeamPeriod(0);
111 metaData.SetResponsible("");
112 metaData.SetComment("This preprocessor fills GMS alignment objects.");
113
d489129d 114 Bool_t result = Master()->Store("SHUTTLE", "GMS", data, &metaData, 0, 0);
04aa997f 115
116 // Clear MisAlignArray in transformer
789260b4 117 fTransformer->ClearMisAlignmentData();
04aa997f 118
d489129d 119 return (result!=kTRUE);
968ce98e 120}
121
122//
123// public methods
124//
125
126
127//______________________________________________________________________________
128UInt_t AliMUONGMSSubprocessor::Process(TMap* /*dcsAliasMap*/)
129{
5ac93e67 130/// Process GMS alignment files.
131/// Return failure (0) in case procession of some file has failed
968ce98e 132
5ac93e67 133 UInt_t result = 1;
968ce98e 134 TList* sources = Master()->GetFileSources(fgkSystem, fgkDataId);
135 TIter next(sources);
136 TObjString* o(0x0);
137 while ( ( o = static_cast<TObjString*>(next()) ) ) {
138 TString fileName(Master()->GetFile(fgkSystem, fgkDataId, o->GetName()));
5ac93e67 139 result *= ProcessFile(fileName);
968ce98e 140 }
141 delete sources;
142
143 return result;
04aa997f 144}
145