+//____________________________________________________________________________
+void AliMUONData::SetDataContainer(Option_t* option)
+{
+/// Setting data containers of muon data
+ const char *cH = strstr(option,"H");
+ const char *cD = strstr(option,"D"); // Digits
+ const char *cS = strstr(option,"S"); // SDigits
+ const char *cRC = strstr(option,"RC"); // RawCluster
+ const char *cGLT = strstr(option,"GLT"); // Global and Local Trigger
+ const char *cTC = strstr(option,"TC"); // global and local Trigger
+ const char *cRT = strstr(option,"RT"); // Reconstructed Tracks
+ const char *cRL = strstr(option,"RL"); // Reconstructed Trigger Tracks
+ //const char *cRP = strstr(option,"RP"); // Reconstructed Particles
+ AliDebug(1,Form("option=%s",option));
+ //
+ // Clones array for hits
+ if ( cH ) {
+ if (fHits == 0x0) {
+ fHits = new TClonesArray("AliMUONHit",1000);
+ }
+ ResetHits();
+ }
+
+ //
+ // ObjArray of ClonesArrays for Digits
+ if ( cD ) {
+ if (fDigits == 0x0 ) {
+ fDigits = new TObjArray(AliMUONConstants::NCh());
+ fNdigits= new Int_t[AliMUONConstants::NCh()];
+ for (Int_t i=0; i<AliMUONConstants::NCh() ;i++) {
+ TClonesArray * tca = new TClonesArray("AliMUONDigit",10000);
+ tca->SetOwner();
+ fDigits->AddAt(tca,i);
+ fNdigits[i]=0;
+ }
+ }
+ else {
+ AliDebug(1,Form("fDigits already there = %p",fSDigits));
+ }
+ ResetDigits();
+ }
+
+ //
+ // ClonesArrays for Trigger
+ if ( cGLT ) {
+ if (fLocalTrigger == 0x0) {
+ fLocalTrigger = new TClonesArray("AliMUONLocalTrigger",234);
+ }
+ if (fRegionalTrigger == 0x0) {
+ fRegionalTrigger = new TClonesArray("AliMUONRegionalTrigger",16);
+ }
+ if (fGlobalTrigger== 0x0) {
+ fGlobalTrigger = new TClonesArray("AliMUONGlobalTrigger",1);
+ }
+ ResetTrigger();
+ }
+
+ //
+ // Container for Sdigits
+ if (cS) {
+ if (fSDigits == 0x0) {
+ AliDebug(1,"Creating fSDigits TObjArray");
+ fSDigits = new TObjArray(AliMUONConstants::NCh());
+ fNSdigits= new Int_t[AliMUONConstants::NCh()];
+ for (Int_t i=0; i<AliMUONConstants::NCh() ;i++) {
+ TClonesArray* a = new TClonesArray("AliMUONDigit",10000);
+ a->SetOwner();
+ fSDigits->AddAt(a,i);
+ AliDebug(1,Form("fSDigits[%d]=%p",i,a));
+ fNSdigits[i]=0;
+ }
+ }
+ else {
+ AliDebug(1,Form("fSDigits already there = %p",fSDigits));
+ }
+ ResetSDigits();
+ }
+
+ //
+ // Containers for rawclusters, globaltrigger and local trigger tree
+ if (cRC ) {
+ if (fRawClusters == 0x0) {
+ fRawClusters = new TObjArray(AliMUONConstants::NTrackingCh());
+ fNrawclusters= new Int_t[AliMUONConstants::NTrackingCh()];
+ for (Int_t i=0; i<AliMUONConstants::NTrackingCh();i++) {
+ TClonesArray* tca = new TClonesArray("AliMUONRawCluster",10000);
+ tca->SetOwner();
+ fRawClusters->AddAt(tca,i);
+ fNrawclusters[i]=0;
+ }
+ }
+ ResetRawClusters();
+ }
+ if (cTC ) {
+ if (fLocalTrigger == 0x0) {
+ fLocalTrigger = new TClonesArray("AliMUONLocalTrigger",234);
+ }
+ if (fRegionalTrigger == 0x0) {
+ fRegionalTrigger = new TClonesArray("AliMUONRegionalTrigger",16);
+ }
+ if (fGlobalTrigger== 0x0) {
+ fGlobalTrigger = new TClonesArray("AliMUONGlobalTrigger",1);
+ }
+ // ResetTrigger(); This is not necessary here since trigger info ins copied from digits info on flight to RecPoint output
+ }
+
+ //
+ // Containers for rectracks and rectrigger tracks
+ if ( cRT ) {
+ if (fRecTracks == 0x0) {
+ fRecTracks = new TClonesArray("AliMUONTrack",100);
+ }
+ ResetRecTracks();
+ }
+ if (cRL) {
+ if (fRecTriggerTracks == 0x0 && cRL) {
+ fRecTriggerTracks = new TClonesArray("AliMUONTriggerTrack",100);
+ }
+ ResetRecTriggerTracks();
+ }
+}
+
+//____________________________________________________________________________